将zookeeper集成到Hue是希望通过Hue的Web界面来查看和操作zookeeper中的znode,这需要zookeeper开启Rest service。
虽然我的zookeeper集群已经安装好了(使用的tar包安装),但是仍然无法直接使用Rest service,因为其中一些依赖包并没有直接集成到安装包中,所以需要我们手动来进行一些操作。
进入【ZOOKEEPER_HOME】目录下执行编译
$ ant
将【ZOOKEEPER_HOME/build/contrib/rest/】目录下的zookeeper-dev-rest.jar拷贝到【ZOOKEEPER_HOME/build/contrib/rest/lib】目录下:
$ cp build/contrib/rest/zookeeper-dev-rest.jar src/contrib/rest/lib/
将【ZOOKEEPER_HOME/build/contrib/rest/lib/】目录下的所有jar包拷贝到【ZOOKEEPER_HOME/build/contrib/rest/lib】目录下
$ cp build/contrib/rest/lib/*.jar src/contrib/rest/lib/
将【ZOOKEEPER_HOME】目录下的zookeeper-3.4.5-cdh5.2.0.jar拷贝到【ZOOKEEPER_HOME/build/contrib/rest/lib】目录下
$ cp zookeeper-3.4.5-cdh5.2.0.jar src/contrib/rest/lib/
将【ZOOKEEPER_HOME/src/java/lib】目录下的所有jar包拷贝到【ZOOKEEPER_HOME/build/contrib/rest/lib】目录下
$ cp src/java/lib/*.jar src/contrib/rest/lib/
进入【ZOOKEEPER_HOME/src/contrib/rest】目录下启动Rest service
$ ./rest.sh start
官网是用ant run来启动rest service的,但是太麻烦,并且已经有了脚本,只需要将一些jar包引入进来就行了。具体寻找的jar包过程是这样的,ant run是在【ZOOKEEPER_HOME/src/contrib/rest/】目录下执行的,所以查询该目录下的build.xml文件。
其中${build.dir}这个变量的值不在该build.xml中,往上找发现build.xml引入了上一层目录的build-contrib.xml文件
去上一层目录找build-contrib.xml文件
至此所有需要的jar包就知道了
【ZOOKEEPER_HOME/build/contrib/rest/】目录下的zookeeper-dev-rest.jar;
【ZOOKEEPER_HOME/build/contrib/rest/lib】目录下的所有jar包;
【ZOOKEEPER_HOME/build】目录下的zookeeper-*.jar(我拷贝的是【ZOOKEEPER_HOME】目录下的zookeeper-3.4.5-cdh5.2.0.jar);
【ZOOKEEPER_HOME/src/java/lib】目录下的所有jar包;
关闭命令为
$ ./rest.sh stop
使用如下命令查看日志输出
$ tail -f zkrest.log
使用JPS查看Java进程
$ jps
通过浏览器访问http://localhost:9998/application.wadl
高能预警:如果是在部署zookeeper服务之外机器的浏览器上访问请将localhost缓存主机名或者ip地址,我的是部署在主机名为hadoop-main.dimensoft.com.cn的机器上。
进入【ZOOKEEPER_HOME/bin】目录下启动zookeeper(将zookeeper集群所有节点都启动)。
$ zkServer.sh start
修改【HUE_HOME/desktop/conf/】目录下的hue.ini文件中[zookeeper].[[clusters]].[[[default]]]中zookeeper的host_ports值和rest_url
# Zookeeper ensemble. Comma separated list of Host/Port.
# e.g. localhost:2181,localhost:2182,localhost:2183
## host_ports=localhost:2181
host_ports=hadoop-main.dimensoft.com.cn:2181,hadoop-slave1.dimensoft.com.cn:2181,hadoop-slave2.dimensoft.com.cn:2181
# The URL of the REST contrib service (required for znode browsing)
rest_url=http://hadoop-main.dimensoft.com.cn:9998,http://hadoop-slave1.dimensoft.com.cn:9998,http://hadoop-slave2.dimensoft.com.cn:9998
进入【HUE_HOME】下启动Hue
$ build/env/bin/supervisor
访问Hue的Web 界面http://hadoop-main.dimensoft.com.cn:8888/
功能预警:这里发现一个问题,当任何一个zookeeper节点挂掉之后Hue的zookeeper界面就无法访问了,目前还没有解决(所有zookeeper节点都启动了REST service)。