六、遇到问题

2018-12-12  本文已影响0人  紫雨杰

一、maven工程中,需要连接hbase。然后加入jar依赖的版本为hbase 1.2.5和hadoop 2.7.3,结果报错 DoNotRetryIOException

<project ...>
   ...
   <dependencies>
      <dependency>
         <groupId>org.apache.hbase</groupId>
         <artifactId>hbase-client</artifactId>
         <version>1.2.5</version>
      </dependency>
      <dependency>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-hdfs</artifactId>
         <version>2.7.4</version>
      </dependency>
      ...
   </dependencies>
</project>

然而,运行时却报错:

org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.IllegalAccessError: 
tried to access method com.google.common.base.Stopwatch.<init>()V from class 
org.apache.hadoop.hbase.zookeeper.MetaTableLocator

百度和谷歌的结果都说是因为guava包冲突,从pom的依赖层次看也确实如此。
后来将hbase-client的版本改为1.3.0,错误消失!

二、JPS相关问题

1、jps的作用
    jps类似linux的ps命令,不同的是ps是用来显示进程,而jps只显示java进程,准确的说是当前用户已启动的部分java进程信息(包括进程号和
简短的进程command)。

2、执行JPS没有任何输出:
java程序启动以后,会在/tmp目录下生成一个hsperfdata_username的文件夹,这个文件夹的文件,就是以java进程的pid命名。
因此使用jps查看当前进程的时候,其实就是把/tmp/hsperfdata_username中的文件名遍历一遍之后输出。
如果/tmp/hsperfdata_username的文件所有者和文件所属用户组与启动进程的用户不一致的话,在进程启动之后,就没有权限写
/tmp/hsperfdata_username,所以/tmp/hsperfdata_username是一个空文件,理所当然jps也就没有任何显示。

利用ls -l /tmp查看服务器下/hsperfdata_hostname的属性,如果文件所有者和文件所属用户组不一样,则需要使用以下命令进行修改:
chown [-R] 账号名称:组群  文件/目录
drwxrwxrwx 2 zlj  zlj    4096 12月 12 17:21 hsperfdata_zlj
执行chown [-R] root:root  hsperfdata_zlj ,则表明把hsperfdata_zlj文件夹下的所有文件改变所有者和所属组为root
执行chown [-R] root  hsperfdata_zlj ,则表明把hsperfdata_zlj文件夹下的所有文件只改变所有者为root
上一篇下一篇

猜你喜欢

热点阅读