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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章