码迷,mamicode.com
首页 > 其他好文 > 详细

Storm On YARN部署

时间:2016-08-05 11:57:26      阅读:503      评论:0      收藏:0      [点我收藏+]

标签:

下载


从github上下载storm-yarn的源码

https://github.com/yahoo/storm-yarn

编译


前提需要安装好JDK和Maven,解压storm-yarn-master.zip,并修改pom.xml中storm和hadoop版本

<properties>
    <storm.version>0.9.0</storm.version>
    <hadoop.version>2.5.0-cdh5.3.0</hadoop.version>
</properties>
  • 1
  • 2
  • 3
  • 4

注:这里一定要注意,通过https://clojars.org/repo/storm这个repository发现storm-core和storm-netty这两个依赖库的版本只发布到了0.9.0.1,所以将storm下降到了0.9.0。

技术分享

技术分享

因为我这里使用的是cloudera的Hadoop,所以添加上maven的repository

<repository>
    <id>cdh.repo</id>
    <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
    <name>Cloudera Repositories</name>
</repository>
  • 1
  • 2
  • 3
  • 4
  • 5

使用maven编译源码

$ mvn clean package -DskipTests
  • 1

技术分享

部署


解压缩storm.zip,这个storm.zip是在storm-yarn-master/lib目录下,其实这个storm.zip只是一个软连接,指向的是storm-0.9.0-wip21.zip

$ unzip storm.zip
  • 1

技术分享

配置storm-yarn-master和storm-0.9.0-wip21的bin到系统的环境变量中

# STORM_YARN_HOME
export STORM_YARN_HOME=/home/hadoop/compile/storm-yarn-master
export PATH=$PATH:$STORM_YARN_HOME/bin:$STORM_YARN_HOME/lib/storm-0.9.0-wip21/bin
  • 1
  • 2
  • 3

记得使配置的环境变量生效

$ source /etc/profile
  • 1

添加Storm工程需要的额外Jar包到storm-0.9.0-wip21的lib下,比如MySQL的驱动jar包之类的,重新压缩成storm.zip文件,上传至HDFS的指定目录中(非常重要,集群中通过访问hdfs中的storm.zip获取工作环境) ,进入【/home/hadoop/compile/storm-yarn-master/lib】目录下

$ zip -r storm.zip storm-0.9.0-wip21
$ hdfs dfs -mkdir -p /lib/storm/0.9.0-wip21/
$ hdfs dfs -put storm.zip /lib/storm/0.9.0-wip21/
  • 1
  • 2
  • 3

技术分享

运行


修改【/opt/modules/storm-yarn-master/lib/storm-0.9.0-wip21/conf】目录下的storm.yaml,这里只修改了zookeeper的地址:

storm.zookeeper.servers:
     - "hadoop-yarn01.dimensoft.com.cn"
     - "hadoop-yarn02.dimensoft.com.cn"
     - "hadoop-yarn03.dimensoft.com.cn"
  • 1
  • 2
  • 3
  • 4

提交storm到yarn

$ storm-yarn launch conf/storm.yaml
  • 1

技术分享

通过YARN的界面查看,作业执行报错:

15/10/13 16:22:34 ERROR auth.ThriftServer: ThriftServer is being stopped due to: org.apache.thrift7.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:9000.
org.apache.thrift7.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:9000.
    at org.apache.thrift7.transport.TNonblockingServerSocket.<init>(TNonblockingServerSocket.java:89)
    at org.apache.thrift7.transport.TNonblockingServerSocket.<init>(TNonblockingServerSocket.java:68)
    at org.apache.thrift7.transport.TNonblockingServerSocket.<init>(TNonblockingServerSocket.java:61)
    at backtype.storm.security.auth.SimpleTransportPlugin.getServer(SimpleTransportPlugin.java:47)
    at backtype.storm.security.auth.ThriftServer.serve(ThriftServer.java:52)
    at com.yahoo.storm.yarn.MasterServer.main(MasterServer.java:175)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这是因为部署storm-yarn的节点运行了CM Server和CM Server db,导致9000端口号已经被占用了,Storm ApplicationMaster初始化时,将在同一个Container中启动Storm Nimbus和Storm Web UI两个服务,然后根据待启动的Supervisor数目向ResourceManager申请资源,在目前实现中,ApplicationMaster将请求一个节点上所有资源然后启动Supervisor服务,也就是说,当前Supervisor将独占节点而不会与其他服务共享节点资源,这种情况下可避免其他服务对Storm集群的干扰。 除了运行Storm Nimbus和Web UI外,Storm ApplicationMaster还会启动一个Thrift Server以处理来自YARN-Storm Client端的各种请求,在此不再赘述。直接在storm.yaml中添加配置修改thrift端口号。

master.thrift.port: 9002
  • 1

再次提交一遍成功,查看YARN Web UI

技术分享

直接通过YARN的Web UI查看该job在哪个节点运行,该节点就是Storm集群的UI节点,例如:192.168.100.154节点,那么Storm的UI就是

http://192.168.100.154:7070

技术分享

可以使用的command

$ storm-yarn [command] –appId [appId] –output [file] [–supervisors [n]]
  • 1

其中,Command为具体命令,具体见下表,参数“-appId”为启动的Storm的应用程序Id,“-supervisors”为需增加的Supervisor服务个数,该参数只对命令“addSupervisors”有效

技术分享

Storm On YARN部署

标签:

原文地址:http://www.cnblogs.com/thinkpad/p/5740552.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!