http://blog.csdn.net/jiushuai/article/details/26693311
http://blog.csdn.net/jiushuai/article/details/18729367
http://www.cnblogs.com/byrhuangqiang/p/3824540.html
http://zh.hortonworks.com/kb/storm-on-yarn-install-on-hdp2-beta-cluster/
http://www.cnblogs.com/byrhuangqiang/p/3824540.html
有storm 相关问题可以一起讨论哦!!一起学习!
下载好的storm-yarn-master.zip 得放到linux进行解压,在windows解压的话,lib目录下的软连接会丢失
1:storm on yarn 需要编译
unzip storm-yarn-master.zip
然后进入 storm-yarn-master 目录通过如下命令进行编译
修改pom
<properties>
<storm.version>0.9.0-wip21</storm.version>
<hadoop.version>2.3.0-cdh5.1.2</hadoop.version>
<!--hadoop.version>2.1.0.2.0.5.0-67</hadoop.version-->
</properties>
mvn package -DskipTests
注意:我用的maven-3.1.1 和jdk1.7.0_45
编译好后解压storm-yarn-master/lib/storm-0.9.0-wip21.zip,得到 storm-0.9.0-wip21目录。
将得到 storm-0.9.0-wip21 目录移动到 和 storm-yarn-master同级。
最终目录是
/usr/local/storm/storm-yarn-master
/usr/local/storm/storm-0.9.0-wip21
然后配置storm的启停用户的环境变量
vim ~/.basarc
添加如下环境变量
export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export STORM_WORK=/opt/storm
export STORM_HOME=$STORM_WORK
export PATH=$PATH:$STORM_WORK/storm-yarn-master/bin:$STORM_WORK/storm-0.9.0-wip21/bin
export HADOOP_INSTALL=/opt/hadoop
export HADOOP_HOME=$HADOOP_INSTALL
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
或
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_67
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export STORM_WORK=/usr/local/storm
export STORM_HOME=$STORM_WORK
export PATH=$PATH:$STORM_WORK/storm-yarn-master/bin:$STORM_WORK/storm-0.9.0-wip21/bin
export HADOOP_INSTALL=/usr/lib/hadoop
export HADOOP_HOME=$HADOOP_INSTALL
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs
export YARN_HOME=/usr/lib/hadoop-yarn
2:将编译好后的storm-yarn-master/lib/storm.zip 添加进hdfs中,可以通过如下命令
hadoop fs -mkdir -p /lib/storm/0.9.0-wip21
hadoop fs -moveFromLocal storm.zip /lib/storm/0.9.0-wip21
3:需要在hdfs里面添加storm工作目录,并将storm工作目录的所有者设置为storm job提交用户
hadoop fs -mkdir -p /user/storm
hadoop fs -chown storm /user/storm
4:确保storm的启停用户配置环境变量如下:
export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export STORM_WORK=/usr/local/storm
export STORM_HOME=$STORM_WORK
export PATH=$PATH:$STORM_WORK/storm-yarn-master/bin:$STORM_WORK/storm-0.9.0-wip21/bin
export HADOOP_INSTALL=/usr/local/hadoop
export HADOOP_HOME=$HADOOP_INSTALL
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
5:启动storm
storm-yarn launch /usr/local/storm/storm-0.9.0-wip21/conf/storm.yaml
5.1 Get the stormconfig with the yarn application id
yarn application -list
We store the storm.yaml file in the .storm directory so the storm command can find it when it is submitting jobs.
5.2 storm-yarn getStormConfig -appId application_1381089732797_0025 -output ~/.storm/storm.yaml
storm-yarn不认识
source ~/.bash_profile
storm-yarn getStormConfig -appId application_1381089732797_0025 -output ~/.storm/storm.yaml
Try running two of the sample topologies. You can find the Nimbus host with
cat ~/.storm/storm.yaml | grep nimbus.host:
cat ~/.storm/storm.yaml | grep nimbus.host
Word Count:
[hdfs@yarndev storm-yarn-master]$ storm jar lib/storm-starter-0.0.1-SNAPSHOT.jar storm.starter.WordCountTopology WordCountTopology -c nimbus.host=上面得到的nimbus host地址
6:关闭storm
storm-yarn shutdown -appId application_1398822427232_0143 -output ~/.storm/storm.yaml
7:运行wordcount
storm jar /opt/storm/storm-yarn-master/lib/myStorm-0.0.1-SNAPSHOT-jar-with-dependencies.jar com.myStorm.App WordCountTopology -c nimbus.host=192.168.109.241
其中nimbus.host是你提交storm到yarn后,yarn会给你分配一个地址,你得去自己找哦。
总结,有时候发现supervisor启动不来,会发现是内存资源不够。在虚拟机环境的同志要注意这点哦。
1. 背景知识
(2)YARN:YARN是Hadoop 2.0中新引入的资源管理系统,可看做Hadoop操作系统中的资源管理组件,所有应用程序和框架,比如MapReduce、Storm和Spark等,均可运行在YARN之上,关于YARN,可阅读
yarn详解。
(3)Storm On YARN:尝试将Storm运行在YARN上,这将来众多好处,具体本文将详细介绍。Storm On YARN最有名是Yahoo!的开源实现,具体参考:
Storm On YARN。将Storm运行在YARN上并不是一件难事,但重要的是,它给我们开了一扇窗,我们可通过该项目实现HBaseOn YARN, Spark On YARN,Kafka On YARN等有意义的工作,具体参考这篇文章:
汇总运行在Hadoop YARN上的开源系统。
2. Storm On YARN带来的好处
相比于将Storm部署到一个独立的集群中,Storm On YARN带来的好处很多,主要有以下几个:
(1) 弹性计算资源。 将Storm运行到YARN上后,Storm可与其他应用程序(比如MapReduce批处理应用程序)共享整个集群中的资源,这样,当Storm负载骤增时,可动态为它增加计算资源,而当负载减小时,可释放部分资源,从而将这些资源暂时分配给负载更重的批处理应用程序。
(2) 共享底层存储。 Storm可与运行在YARN上的其他框架共享底层的一个HDFS存储系统,可避免多个集群带来的维护成本,同时避免数据跨集群拷贝带来的网络开销和时间延迟。
(3) 支持多版本。可同时将多个Storm版本运行YARN上,避免一个版本一个集群带来的维护成本。
3. Storm On YARN架构
通常而言,需要开发两个组件,分别是客户端和ApplicationMaster,其中,客户端的主要作用是将应用程序提交到YARN上,并与YARN和ApplicationMaster交互,完成用户发送的一些指令;而ApplicationMaster则负责向YARN申请资源,并与NodeManager通信,以启动任务。
为了不修改Storm任何源代码的情况下,让Storm运行在YARN上,最简单的实现方法是将Storm的各个服务组件(包括Nimbus和Supervisor),作为单独的任务运行在YARN上,而Zookeeper则作为一个公共的服务运行在YARN集群之外的几个节点上。
当前比较有名的“StormOn YARN”,它基本实现了上述描述的功能,下面具体进行说明:
(1) YARN-Storm Client
提供了一系列Shell命令供用户控制YARN上的Storm服务,比如构建一个Storm集群命令如下:
storm-yarn launch <storm-yarn-config>
Shell命令 |
参数含义 |
说明 |
setStormConfig |
重置storm集群配置 |
整个集群将重新启动 |
getStormConfig |
获取当前storm集群配置
|
所有配置数据将以json数据返回 |
addSupervisors |
增加supervisor个数 |
ApplicationMaster向ResourceManager申请资源 以启动新增的supervisor |
startNimbus/stopNimbus |
启动/停止Nimbus服务
|
Nimbus服务运行在ApplicationMaster中 |
startUI/stopUI |
停止或启动UI服务 |
webUI服务运行在ApplicationMaster中 |
startSupervisors/ stopSupervisors |
启动或停止所有Supervisors服务
|
Supervisor服务运行在ApplicationMaster向ResourceManager申请的Container中 |
shutdown |
销毁整个storm集群 |
所有服务将被杀死,资源将归还给ResourceManager |
其中,<storm-yarn-config>是Storm配置信息,包括启动的Supervisor个数、Storm ApplicationMaster占用的内存等。
启动Storm之后,用户可通过以下命令控制Storm:
storm-yarn [command] –appId [appId] –output[file] [–supervisors [n]]
其中,Command为具体命令,具体见下表,参数“-appId”为启动的Storm的应用程序Id,“-supervisors”为需增加的Supervisor服务个数,该参数只对命令“addSupervisors”有效。
结合使用startNimbus/stopNimbus、startUI/stopUI和startSupervisors/ stopSupervisors等命令,可完成对Storm集群的升级。
(2) YARN-Storm ApplicationMaster
Storm ApplicationMaster初始化时,将在同一个Container中启动Storm Nimbus和Storm Web UI两个服务,然后根据待启动的Supervisor数目向ResourceManager申请资源,在目前实现中,ApplicationMaster将请求一个节点上所有资源然后启动Supervisor服务,也就是说,当前Supervisor将独占节点而不会与其他服务共享节点资源,这种情况下可避免其他服务对Storm集群的干扰。
除了运行StormNimbus和Web UI外,Storm ApplicationMaster还会启动一个Thrift Server以处理来自YARN-Storm Client端的各种请求,在此不再赘述。
4. 当前Storm On YARN存在的问题
由于YARN本身的不完善,导致Storm On YARN设计存在诸多缺陷,以下是几个典型问题:
(1)难以将所有Storm服务运行在相邻的节点上,比如同一个机架上,这是由于YARN自身不支持资源组调度,只能实现指定一个rack,然后增量获取资源,以期望所有资源来自这个rack,但是当该rack空闲资源不足时,YARN也无能为力。
(2)由于Nimbus服务运行在ApplicationMaster上,而一旦ApplicationMaster失败后,YARN会将它运行在另外一个节点上,这意味着Nimbus服务可能神不知鬼不觉的在另一个节点上启动了,这给用户使用带来诸多不便,YARN需要提供一个ApplicationMaster或Nimbus位置获取服务,客户端直接通过该服务获取Nimbus位置即可。社区目前正在推荐一个基于Zookeeper的方案,你可以使用最新开源项目Weave完成该功能。
(3)NodeManager本身无法支持动态升级,这意味着,如果NodeManager升级,则它上面运行的服务将全部被杀死,这将给运行在YARN上的服务带来诸多不稳定因素。如果能够将更广泛的服务,比如Webserver、Mysql等,运行在YARN上,需要让NodeManager支持动态升级,像YARN的同质项目Mesos那样。
相关推荐
Storm-yarn使Storm群集可以部署到Hadoop YARN管理的计算机中。 这项工作仍在进行中。 贡献者 冯德( ) 罗伯特·埃文斯( ) 德里克·达吉特( ) 内森·罗伯茨( ) 王鑫( ) 邮件列表 随时在Storm-yarn的邮件...
stormonyarn概念架构消息机制,基础的storm运行例子
hadoop2.7.4安装包补丁包,解决yarn定时调度启动问题!!
tf-yarnᵝ tf-yarn是我们在Criteo建立的Python库,用于在Hadoop / YARN集群上训练TensorFlow模型。 可以在找到介绍性博客文章。... 您可以运行pip install tf-yarn然后安装tensorflow或tensorflow_gpu,也可以使用pi
Hulu 资深研发主管梁宇明《Voidbox - Docker On YARN在Hulu的实践》
5、Hadoop生态圈的学习笔记,主要记录HDFS、MapReduce、Yarn相关读书笔记及源码分析等 5.1 HDFS Hadoop快速入门 HDFSOverView Hadoop广义生态系统 Hadoop高可用配置 HadoopCommon分析 HDFS集群相关管理 HDFS Shell ...
压缩文件中包含了Hadoop生态系统、体系架构及特点,三大基本组件HDFS,MapReduce,YARN的学习笔记,文件为Markdown格式,进行了详细功能介绍说明,可以帮助大家学习hadoop的三大组件或者作为一份详细资料备份,帮助...
PS:如果你没有安装npx ,请使用: npm install -g yarn-duplicateyarn-duplicate注意事项目前仅支持 Yarn V1.x。展示柜在源代码下运行重复检查 列的含义: name : npm 包的名称duplicates :包重复的次数...
使用Yarn自动安装节点模块。 因为我们 纱!安装# npm$ npm install gulp-yarn --save-dev# yarn$ yarn add gulp-yarn -D快速开始基本:在同一目录中时性能更好。 var gulp = require ( 'gulp' ) ;var yarn = require...
Apache Storm 的安装过程相对简单,主要涉及下载源码或二进制包,然后配置storm.yaml文件,包括nimbus、supervisor和worker的相关设置,如端口、Zookeeper地址等。同时,需要确保Java环境已正确安装。 **2. Storm...
想必最近大家对新的JavaScript包管理工具yarn已经有所耳闻,并已通过npm i -g yarn进行了安装,现在想知道怎么样使用吗?如果你了解 npm,你已经会很大一部分啦!下面是这篇文章从npm切换到yarn的一些笔记。有需要的...
最常见的情况是运行 yarn-deduplicate yarn.lock 这将使用默认策略来删除yarn.lock中重复的程序包。 如果您未指定yarn.lock路径,则默认为yarn.lock 。 使用以下命令检查所有可用选项: yarn-deduplicate --help...
其实问题很简单,网上一搜索,一分钟不出便能解决;博主记录写文的目的也只有一个,收归吾有,加深解决问题的映像,留作日后再遇到此问题时,一套”回首掏”,便能恍然醒悟! 本篇用到的命令: (1) react-...
《Apache Hadoop YARN》,全名Apache Hadoop YARN: Moving beyond MapReduce and Batch Processing with Apache Hadoop 2 (Addison-Wesley Data & Analytics Series) 这本书是2014年3月31号出版的,是基于Hadoop 2...
本资源基于hadoop3.1.3,部署方式为伪分布部署,配置方式按照的是官网文档配置的,亲测有效! 配置完登陆0.0.0.0:8080(基于伪分布式)
Ansible-ansible-role-yarn.zip,通过ansible安装yarn到ubuntu和redhat系统!角色:纱线,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。
GitHub Actions 的 1-liner yarn 安装缓存 状态和支持 :check_mark: 稳定的 :check_mark: 支持的 :multiply: 没有持续的发展 GitHub Action 缓存可缩短构建时间并减少网络依赖性。 但是,编写正确的缓存逻辑很。...
使用Yarn (一种简单的编程语言)编写您的对话,该语言旨在使编写者易于学习,同时功能强大,可以处理所需的任何内容。 Yarn的样式类似于 ,因此,如果您已经知道,就可以在家了! 如果您不这样做,那就太酷了– ...