Support Questions
Find answers, ask questions, and share your expertise

why zookeeper client does not provide CLI

hi all

any suggestion why we cant get the prompt ?

/usr/hdp/   localhost:2181
Connecting to localhost:2181
Welcome to ZooKeeper!
JLine support is disabled
WatchedEvent state:SyncConnected type:None path:null

Super Mentor

@Michael Bronson

I tried like this and it worked:

#  /usr/hdp/current/kafka-broker/bin/  localhost:2181 get /
Connecting to localhost:2181

WatchedEvent state:SyncConnected type:None path:null
cZxid = 0x0
ctime = Thu Jan 01 00:00:00 UTC 1970
mZxid = 0x0
mtime = Thu Jan 01 00:00:00 UTC 1970
pZxid = 0x80009e5f1
cversion = 37
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 19


Super Mentor

@Michael Bronson

I see the error in your command:

WatchedEvent state:SyncConnected type:None path:null


This is because you have not defined the "cmd" (like get , set) and "args" (like Path)

dear Jay

actually I was asking about how to get the zookeeper session as the following,

/usr/hdp/ -server master02:2181

remark zookeeper client installed on the master machine

and that give me the session

WatchedEvent state:SyncConnected type:None path:null
[zk: master02:2181(CONNECTED) 0]



Try this command "zookeeper-client"

[hdfs@servername ~]$ zookeeper-client
Connecting to localhost:2181
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See for more info.
Welcome to ZooKeeper!
JLine support is enabled


WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]


Hi @mike_bronson7 


Please try to type ls / after running the shell. 





Cloudera has broken zookeeper 3.4.5-cdh5.4.0 in several places. Service is working but CLI is dead. No workaround other than rollback.


Assign a bounty on this ;-). I have stepped on this mine too and was angry enough to find the reason:

Zookeeper checks JLine during There is a try-catch block that loads a number of classes. Any exception during class loading fails the whole block and JLine support is reported to be disabled.

But here is why this happens with CDH 5.4.0:

  1. Current opensource Zookeeper-3.4.6 works against jline-0.9.94. Has no such issue.

  2. In CDH 5.4 Cloudera has applied the following patch:

roman@node4:$ diff zookeeper-3.4.5-cdh5.3.3/src/java/main/org/apache/zookeeper/ zookeeper-3.4.5-cdh5.4.0/src/java/main/org/apache/zookeeper/

<                 Class consoleC = Class.forName("jline.ConsoleReader");
<                 Class completorC =
>                 Class consoleC = Class.forName("jline.ConsoleReader");
>                 Class completorC =
<                 Method addCompletor = consoleC.getMethod("addCompletor",
<                         Class.forName("jline.Completor"));
>                 Method addCompletor = consoleC.getMethod("addCompleter",
>                         Class.forName("jline.console.completer.Completer"));

  1. CDH 5.4 uses jline-2.11.jar for ZooKeeper and it has no jline.ConsoleReader class (from 2.11 it is jline.console.ConsoleReader).

  2. Jline 0.9.94 in turn has no jline.console.completer.Completer.

So there is incompatibility with any existing JLine. Any Cloudera CDH 5.4 user can run zookeeper-client on his/her cluster and find it does not work.

Open-source zookeeper-3.4.6 depends on jline-0.9.94 which has no such patches. Don't know why Cloudera engineers have done such a mine.

I see no clean way to fix it with 3.4.5-cdh5.4.0. I stayed with 3.4.5-cdh5.3.3 dependency where I need CLI and have production clusters.

  1. It seemed to me both jline-0.9.94.jar and jline.2.11.jar in classpath for zookeeper will fix the problem. But just have found Cloudera made another 'fix' in ZK for CDH 5.4.0, they have renamed org.apache.zookeeper.JLineZNodeCompletor class to org.apache.zookeeper.JLineZNodeCompleter.

But here is the code from

Class<?> completorC =                    Class.forName("org.apache.zookeeper.JLineZNodeCompletor");

And of course, it means practically it is not possible to start ZK CLI in CDH 5.4.0 proper way. Awful work. 😞