Storm on YARN 安装部署与感悟

来源:互联网 发布:java 可以做界面吗 编辑:程序博客网 时间:2024/04/29 03:52

在单机上安装了storm并成功运行wordcount后,进入本周工作的下一步:熟悉storm on yarn. 熟悉的第一步还是安装和部署。

已有的环境:三台服务器,hadoop01/hadoop02/hadoop03,已经安装好了hadoop 2.2.0版本,有yarn环境和hdfs环境。

需要的软件与配置:

1) 安装storm的依赖包zeromq与jzmq,详细参见 http://blog.csdn.net/flyhighzy/article/details/37672119

2)storm-on-yarn源码包以及maven(用于编译storm-on-yarn)

3)  storm的工作环境

具体细节可参考 http://www.tuicool.com/articles/BFr2Yv

其中遇到的问题:

1)在提交storm到yarn上运行时,出现错误“Can not find storm  home entry", 经过查找,原因是storm文件夹的命名问题,我下载的0.9.2-incubating版本,命名为apache-storm-{version},而打包成storm.zip时会查找storm-{version}的文件夹,这样会导致找不到,因此把storm文件夹重命名后再打包就可以了。

参考:https://github.com/yahoo/storm-yarn/issues/68

2)第一次提交storm到yarn上时,对storm.yaml配置文件只设置storm.zookeeper.servers和nimbus.host两个选项,然后发现在yarn上storm这个应用一直处于accept而不进入到running状态,因此猜想可能是自己的集群比较小,内存也不够多,而storm默认container的内存需求较大,因此yarn不能为它分配足够大的container导致storm不能开始运行。于是在storm.yaml中加入 master.initial-num-supervisors和 master.container.size-mb两个参数进行限制,再重新打包成storm.zip提交,于是这次成功运行了^_^

3)jdk一定要使用1.7以上的版本,否则会有不兼容的问题。这个问题在storm-yarn项目的readme中也写了需要jdk7,当时没注意看,枉费了一些时间,实在不值得。

目前的进展:

storm能够提交到yarn环境中运行,但还不能提交storm的任务到storm-on-yarn的应用上运行,目前跑wordcount时会有以下错误:

Exception in thread "main" java.lang.RuntimeException: org.apache.thrift7.transport.TTransportException: java.net.ConnectException: Connection refused
        at backtype.storm.utils.NimbusClient.getConfiguredClient(NimbusClient.java:38)

另外打开storm-ui时也会有connection refused的错误,这个问题仍有待解决。


小结:

通过安装与部署,体会到storm是作为一个应用会长期跑在yarn上,storm-yarn主要实现两部分,client和ApplicationMaster,client用于提交和管理storm应用,AM则负责storm内部的Nimbus, supervisor等server的初始化与逻辑控制。那么JStorm-on-YARN也可以采取类似的结构。



=============================7.17更新=========================================================

昨天的错误查看日志后发现实际错误为:

Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect

经过google发现是zookeeper没有启动,因为之前的hadoop集群并没有单独安装启动zookeeper。启动后再提交Topology,可正常运行。


下一步工作:

对比storm与JStorm的异同,设计JStorm on YARN的实现



0 0
原创粉丝点击