在集羣上安裝並啓動zookeeper後,查看zookeeper狀態,出現以下情況:
[hadoop@oceanbase06 zookeeper-3.4.12]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/modules/zookeeper-3.4.12/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
但實際上zookeeper進程是啓動了並且正常運行的:
[hadoop@oceanbase06 hadoop]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/modules/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 16783.
使用jps命令查看已啓動進程,報錯如下:
[hadoop@oceanbase06 zookeeper-3.4.12]$ jps
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
從報錯可以看出是Java虛擬機(JVM)分配的內存大於系統可用內存數,所以沒有足夠的空間分配給JVM來創建Object。
解決方法:可以看看機器的系統內存目前還剩下多少,保證足夠啓動Java時設定的內存。
在/etc/profile中設置JVM參數並生效
export _JAVA_OPTIONS="-Xmx10240M"
重新啓動zookeeper,查看狀態,不再報錯。
[hadoop@oceanbase06 zookeeper-3.4.12]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/modules/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
[hadoop@oceanbase06 zookeeper-3.4.12]$
[hadoop@oceanbase06 zookeeper-3.4.12]$ jps
Picked up _JAVA_OPTIONS: -Xmx10240M
17528 Jps
17326 QuorumPeerMain
如果JVM的-Xmx設置太大,可能會報如下錯誤:
[hadoop@oceanbase06 ~]$ java -version
Picked up _JAVA_OPTIONS: -Xmx10240M
Error occurred during initialization of VM
Could not reserve enough space for the card marking array