Storm(六)Storm On YARN部署

下载


从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>

注:这里一定要注意,通过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>

使用maven编译源码

$ mvn clean package -DskipTests

这里写图片描述

部署


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

$ unzip storm.zip

这里写图片描述

配置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

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

$ source /etc/profile

添加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/

这里写图片描述

运行


修改【/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"

提交storm到yarn

$ storm-yarn launch conf/storm.yaml

这里写图片描述

通过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)

这是因为部署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

再次提交一遍成功,查看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]]

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

这里写图片描述

参考链接:https://github.com/yahoo/storm-yarn

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值