Storm是一个实时计算框架,与MapReduce离线计算框架,两者互补,分别可以用来解决不同场景下的问题。Yarn是Hadoop2.0中新引入的资源管理系统。通常情况下,Storm是部署到一个独立的集群中,相比将Storm部署到独立集群,将其部署到Yarn上有以下几个好处:
1)弹性计算资源: 将Storm运行到Yarn上之后,Storm可以和其他应用程序共享整个集群中的资源,并且可以动态地调整它的计算资源。2)共享底层存储: Storm可与运行在Yarn上的其他框架共享底层的一个HDFS存储系统,可避免多个集群带来的维护成本以及集群之间数据拷贝带来的网络开销和时间延迟。
3)支持多版本:可同时将多个Storm版本运行在Yarn上。
Storm On Yarn主要需要实现两个组件,分别是Client和ApplicationMaster,其中Client的主要作用是将应用程序提交到Yarn上,并与Yarn以及ApplicationMaster交互,处理一些用户发送的命令;而ApplicationMaster主要负责向Yarn申请资源,并与NodeManager通信,以启动任务。Storm ApplicationMaster初始化时,将在同一个Container中启动Storm Nimbus和Storm Web UI两个服务,然后根据启动的Supervisor数目向ResourceManager申请资源,目前的实现,ApplicationMaster将请求一个节点上所有资源然后启动Supervisor服务。
目前较好的Storm On Yarn实现是由Yahoo!公司开源的( https://github.com/yahoo/storm-yarn )
环境要求:
1)安装有Yarn,并且Yarn服务已经开启。
2)JDK7(是指Yarn集群节点上的JDK,必须有JDK7)。
安装前的准备:
下载Storm On Yarn:
wget