zookeeper 启动 异常

安装cdh版zookeeper`yum install zookeeper -y` 成功后修改配置文件`/etc/zookeeper/conf/zoo.cfg` ``` maxClientCnxns=50 # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. dataDir=/var/lib/zookeeper # the port at which the clients will connect clientPort=2181 # the directory where the transaction logs are stored. dataLogDir=/var/lib/zookeeper server.2=Node-2:2888:3888 server.3=Node-3:2888:3888 server.4=Node-4:2888:3888 ``` 执行: `service zookeeper-server init --myid=3`,提示服务未注册。 cd 到`/usr/lib/zookeeper`执行: `bin/zkServer.sh start`,jps查看,服务已启动,执行: `bin/zkServer.sh status`, 显示异常: ``` [root@Node-3 zookeeper]# bin/zkServer.sh status JMX enabled by default Using config: /usr/lib/zookeeper/bin/../conf/zoo.cfg Error contacting service. It is probably not running. [root@Node-3 zookeeper]# ``` myid文件内容为3. node-2,-3,-4三台机器。node-2 以服务方式启动正常,node-4以脚本方式启动,执行命令正常, node-3:异常,,,百思不得解 日志并无异常 另外:默认配置中, dataDir=/var/lib/zookeeper, dataLogDir=/var/lib/zookeeper 为相同目录 ,有影响吗?推荐应该什么样?

wangxiaolei

赞同来自:

推荐dataLogDir=/var/log/zookeeper/ 用户和密码私信发我下

道长

赞同来自:

刚想到,只安装了zookeeper,没有安装zookeeeper-server,所以服务未注册。刚停止所有进程,重新安装,启动。现在Node-3,Node-2正常,Node-4却失败。

fish - Hadooper

赞同来自:

看看log能知道Node-4失败的原因么?

道长

赞同来自:

/etc/profile中配置的java: export JAVA_HOME=/data/programs/jdk1.8.0_101 export CLASSPATH=.;$JAVA_HOME/lib/tools.jar;$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$PATH   执行source /etc/profile: [root@Node-4 jdk1.8.0_101]# source /etc/profile bash: /data/programs/jdk1.8.0_101/lib/tools.jar: Permission denied bash: /data/programs/jdk1.8.0_101/lib/dt.jar: Permission denied 执行ll: [root@Node-4 jdk1.8.0_101]# ll /data/programs/jdk1.8.0_101/lib total 39744 drwxr-xr-x 3 root root     4096 Aug  7 09:49 amd64 -rwxr-xr-x 1 root root  1225544 Aug  7 09:50 ant-javafx.jar -rw-r--r-- 1 root root 18168511 Aug  7 09:50 ct.sym -rw-r--r-- 1 root root   163047 Aug  7 09:50 dt.jar -rw-r--r-- 1 root root    18432 Aug  7 09:50 ir.idl -rwxr-xr-x 1 root root    36038 Aug  7 09:50 javafx-mx.jar -rw-r--r-- 1 root root   407728 Aug  7 09:50 jconsole.jar -rwxr-xr-x 1 root root    10584 Aug  7 09:50 jexec drwxr-xr-x 7 root root     4096 Aug  7 09:50 missioncontrol -rw-r--r-- 1 root root      640 Aug  7 09:50 orb.idl -rwxr-xr-x 1 root root     4646 Aug  7 09:50 packager.jar -rw-r--r-- 1 root root  2419824 Aug  7 09:50 sa-jdi.jar -rw-r--r-- 1 root root 18206727 Aug  7 09:50 tools.jar drwxr-xr-x 6 root root     4096 Aug  7 09:49 visualvm [root@Node-4 jdk1.8.0_101]#    是jdk配置原因吗?但journalnode已经成功启动了

fish - Hadooper

赞同来自:

这样看不出来,得看任务启动的log才能找到线索。 文件是:/var/log/zookeeper/zookeeper.log。

道长

赞同来自:

[root@Node-4 jdk1.8.0_101]# ll /var/log/zookeeper/ total 4 -rw-r--r-- 1 zookeeper zookeeper 63 Sep  8 10:06 zookeeper.out [root@Node-4 jdk1.8.0_101]#    可是找不到log文件,只有.out文件,其中报错:nohup: failed to run command `java': No such file or directory

fish - Hadooper

赞同来自:

failed to run command `java'” 你这机器上装JDK了么?在控制台上执行java -version是否有输出?

道长

赞同来自:

[root@Node-4 jdk1.8.0_101]# java -version java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode) [root@Node-4 jdk1.8.0_101]#    java什么的应该没问题   我把机器信息私信给您

fish - Hadooper

赞同来自:

我修改了/usr/lib/bigtop-utils/bigtop-detect-javahome,添加了如下高亮的这行:
1473306927443.png
现在已经可以service zookeeper-server start启动成功了。   service zookeeper-server start 中,依靠bigtop来寻找javahome所在,可以参看/usr/bin/zookeeper-server一开始的调用。   而你的JDK所放置的位置,不是“众所周知”的java所在位置,所以bigtop找不到JAVA_HOME,导致启动失败。   不知道你其它两台成功启动的机器中,JDK也是这样的路径么?如果是,它们能启动成功倒是挺奇怪的。

道长

赞同来自:

我的jdk也是按照正常配置到/etc/profile中的。 出现这种情况: 1、不是“众所周知”的java所在位置,是我jdk安装配置存在问题? 2、要想放到众所周知的位置,该怎么处理? 3、如果jdk安装、配置完全正确(配置环境变量JAVA_HOME,CLASSPATH,PATH)后,java位置会自动被bigtop知道,会在您改动内容位置自动生成?

fish - Hadooper

赞同来自:

这个问题你可以阅读/etc/init.d/zookeeper-server获取答案。 这个脚本是service zookeeper-server执行时的入口。   这个脚本一开始就是“. /usr/lib/bigtop-utils/bigtop-detect-javahome”,你在追踪进去,会看到 /usr/lib/bigtop-utils/bigtop-detect-javahome其实就是寻找所有可能的路径,最终为了正确设置JAVA_HOME。   你尝试下不用修改bigtop-detect-javahome,而是在外面直接设置JAVA_HOME看看,是不是能解决问题?

道长

赞同来自:

是只有zookeeper服务启动是通过这种方式查找java_home? 其他需要依赖jdk的服务,如果没有配置文件中指定java_home,也是通过这种方式查找?

fish - Hadooper

赞同来自:

既然已经装了其他的服务,你可以直接在自己机器上验证一下。 比如/etc/init.d/hadoop-hdfs-namenode,你查看一下其中是否有bigtop-detect-javahome。   当然,对于一个服务的脚本启动,最好自己屡一下各个脚本的作用和它被调用的顺序。比如service hadoop-hdfs-namenode start执行之后,/etc/init.d/hadoop-hdfs-namenode脚本会被执行,它后面会调用到/etc/hadoop/conf/hadoop-env.sh,这个hadoop-env.sh中,又可以对JAVA_HOME进行再定义(覆盖)。

要回复问题请先登录注册