zookeeper linux下无法启动的有关问题

zookeeper linux下无法启动的问题

在linux下安装zookeeper时,出现了如下的错误:

 

 

Java代码 
  1. [hadoop @hadoop -master bin]$ ./zkServer.sh start  
  2. JMX disabled by user request  
  3. Using config: /opt/zookeeper-3.3 . 3 /bin/../conf/zoo.cfg  
  4. Starting zookeeper ...   
  5. STARTED  
  6. [hadoop@hadoop -master bin]$  2011 - 07 - 05   10 : 33 : 57 , 587  - INFO  [main:QuorumPeerConfig @90 ] - Reading configuration from: /opt/zookeeper- 3.3 . 3 /bin/../conf/zoo.cfg  
  7. 2011 - 07 - 05   10 : 33 : 57 , 596  - WARN  [main:QuorumPeerMain @105 ] - Either no config or no quorum defined in config, running  in standalone mode  
  8. Exception in thread "main"  java.lang.NoSuchMethodError: method java.lang.management.ManagementFactory.getPlatformMBeanServer with signature ()Ljavax.management.MBeanServer; was not found.  
  9.    at org.apache.zookeeper.jmx.ManagedUtil.registerLog4jMBeans(ManagedUtil.java:48 )  
  10.    at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:73 )  
  11.    at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:51 )  
  12.    at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:108 )  
  13.    at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:76 )  

 

 发现没有找到java.lang.management下的一个方法。如果使用的是标准的JDK的话,不应该出现这样的错误的。于是查看zkServer.sh的脚本。发现启动java程序的脚本如下:

 

Bash代码 
  1. java   "-Dzookeeper.log.dir=${ZOO_LOG_DIR}"   "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}"  \  
  2.     -cp "$CLASSPATH"  $JVMFLAGS $ZOOMAIN  "$ZOOCFG"  &  

 

 在linux下直接执行java命令,发现输出如下:

 

Bash代码 
  1. [hadoop@hadoop-master bin]$ java  
  2. Usage: gij [OPTION] ... CLASS [ARGS] ...  
  3.           to invoke CLASS.main, or  
  4.        gij -jar [OPTION] ... JARFILE [ARGS] ...  
  5.           to execute a jar file  
  6. Try `gij --help' for more information.  

 

 显然,zkServer.sh使用的java不正确。使用的gij的java。解决这个问题就简单了,把脚本改成:

 

Bash代码 
  1. $JAVA_HOME/bin/java   "-Dzookeeper.log.dir=${ZOO_LOG_DIR}"   "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}"  \  
  2.    -cp "$CLASSPATH"  $JVMFLAGS $ZOOMAIN  "$ZOOCFG"  &  

 

这样修改之后,就能正常运行了。

 

 

转载自:http://jbm3072.iteye.com/category/157155?show_full=true