`
m635674608
  • 浏览: 5028021 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Storm On YARN

 
阅读更多

1. 背景知识

 

(1)Storm:一个实时计算框架,与MapReduce离线计算框架互补,分别用于解决不同场景下的问题,Storm的官方网站是:http://storm-project.net/,如果想快速了解,推荐阅读淘宝的这篇文章:Storm简介

(2)YARN:YARN是Hadoop 2.0中新引入的资源管理系统,可看做Hadoop操作系统中的资源管理组件,所有应用程序和框架,比如MapReduce、Storm和Spark等,均可运行在YARN之上,关于YARN,可阅读我的一系列文章:Hadoop-YARN

(3)Storm On YARN:尝试将Storm运行在YARN上,这将来众多好处,具体本文将详细介绍。Storm On YARN最有名是Yahoo!的开源实现,具体参考:Storm On YARN。将Storm运行在YARN上并不是一件难事,但重要的是,它给我们开了一扇窗,我们可通过该项目实现HBase On 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架构

在文章“如何编写YARN应用程序”一文中,我已经介绍了如何在YARN上开发一个应用程序,通常而言,需要开发两个组件,分别是客户端和ApplicationMaster,其中,客户端的主要作用是将应用程序提交到YARN上,并与YARN和ApplicationMaster交互,完成用户发送的一些指令;而ApplicationMaster则负责向YARN申请资源,并与NodeManager通信,以启动任务。

为了不修改Storm任何源代码的情况下,让Storm运行在YARN上,最简单的实现方法是将Storm的各个服务组件(包括Nimbus和Supervisor),作为单独的任务运行在YARN上,而Zookeeper则作为一个公共的服务运行在YARN集群之外的几个节点上。

当前比较有名的“Storm On YARN”实现是由yahoo!开源的,它基本实现了上述描述的功能,下面具体进行说明:

(1)  YARN-Storm Client

提供了一系列Shell命令供用户控制YARN上的Storm服务,比如构建一个Storm集群命令如下:

storm-yarn launch <storm-yarn-config>

其中,<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集群的干扰。

除了运行Storm Nimbus和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上的服务带来诸多不稳定因素。如果能够将更广泛的服务,比如Web server、Mysql等,运行在YARN上,需要让NodeManager支持动态升级,像YARN的同质项目Mesos那样。

 

 

 

http://ju.outofmemory.cn/entry/65485

http://dongxicheng.org/mapreduce-nextgen/storm-on-yarn/

分享到:
评论

相关推荐

    storm on yarn概念架构消息机制概述

    Storm on YARN(Yet Another Resource Negotiator)的架构是将Storm集成到Hadoop的资源管理框架中,利用YARN进行资源管理和任务调度。在Storm on YARN中,Nimbus将分配给Supervisor的任务存储在Zookeeper中,通过...

    stormonyarn概念架构消息机制

    stormonyarn概念架构消息机制,基础的storm运行例子

    基于YARN的分布式资源动态调度与协同分配系统.pdf

    本文介绍的基于YARN(Yet Another Resource Negotiator)的分布式资源动态调度与协同分配系统,针对传统分布式资源调度框架Storm on YARN的不足,提出了一种新的解决方案。 首先,分布式资源调度框架Storm on YARN...

    大数据课程体系.docx

    Storm作为实时计算框架,课程深入讨论了其常用组件、编程API、分组策略、消息可靠性、事务处理、Storm与Hadoop的整合(Storm on Yarn),以及与Kafka的协同工作。 Scala作为Spark的主要编程语言,课程涵盖了其解释...

    《大数据处理与云计算》教学大纲.docx

    课程内容涵盖大数据和云计算的概览、关键技术、Hadoop、MapReduce、HDFS、Zookeeper、HBase、基于Hadoop V2的Hive和Pig开发技巧、实时流框架Storm on YARN以及内存计算框架Spark on YARN。每部分都要求学生理解基本...

    DCOS on YARN的技术实践.pptx

    Slider是Apache的一个孵化项目,最初由Hortonworks主导开发,它允许在YARN上运行long-running服务,如HBase、Storm或Tomcat等。Slider通过Hoya项目提供支持,无需修改应用程序,即可直接在YARN上运行。Slider的架构...

    (完整word)《大数据处理与云计算》教学大纲.doc

    实时流计算通过Storm on YARN的实战技巧来教授,包括实时流计算概念、Storm的核心组件和数据流模型,以及如何进行编程实践。最后,Spark内存计算框架的讲解将涵盖其架构、YARN上的部署、集群配置和多语言编程。 云...

    基于Storm的铁道供电监控信息实时流计算处理研究_铁道供电相关专业论文毕业设计范文.pdf

    文章还提出了一种结合实时流计算和批处理的解决方案,利用 Storm-on-YARN 技术,在 Hadoop2.0 的 YARN 资源管理系统上部署 Storm,以提供更为完整和强壮的大数据处理方案。这一结合方案经过集群测试,证明了其可行性...

    spark集群部署.docx

    YARN(Yet Another Resource Negotiator)模式是Hadoop的资源管理组件,允许在同一个平台上运行MapReduce、Storm等不同计算框架。Spark在YARN模式下有两种提交模式:YARN Client和YARN Cluster。前者中,Driver运行...

    Flink面试题.pdf

    Flink on Yarn的部署有两种类型:Session共享Dispatcher和Resource ManagerDispatcher和Resource Manager共享资源。Session模式需要先启动集群,然后在提交作业,而Resource Manager模式可以按照需求申请资源。如果...

    storm-tez:使用TEZ在纱线POC上进行风暴

    【标题】:“storm-tez:使用TEZ在YARN POC上进行风暴”是指将Apache Storm集成到Apache Tez框架中,在Hadoop YARN平台上进行流处理的Proof of Concept(POC)项目。 【描述】:“Storm-tez”是Apache Storm的一个...

    Flink 在今日头条的实践_张光辉@今日头条.pdf

    1. **Flink on Yarn**提供了worker粒度的物理资源限制,优化了资源分配。 2. **Yarn队列支持Quota管理**,便于控制不同团队的资源使用。 3. **Yarn支持物理隔离队列**,提高了资源利用率和系统稳定性。 4. **Flink...

    CCTC 2016 AdMaster卢亿雷:Spark的大数据应用实践

    在Spark on Yarn的部分,卢亿雷分享了一些关于Spark作业在Yarn上运行时可能遇到的“坑”。例如,如果Hadoop集群版本低于2.6,可能会遇到Executor在内存未满的情况下被kill的情况。为了应对这种情况,他建议升级...

    阿里巴巴实时计算平台介绍

    1. **大规模部署方式**:Twitter Heron采用了类似于storm-on-mesos的设计思路,而JStormTurbo则采用了JStorm-on-YARN方案。 2. **核心组件**:两者都实现了Topology Master,但在具体实现细节上有所不同。 3. **监控...

    大数据开发的技巧总结以及入门教程知识点总结.docx

    SQL on Big Data:掌握Hive、Spark SQL、Impala等SQL-on-Hadoop工具,用于大数据查询与分析。 数据可视化:了解如何将大数据分析结果通过Tableau、PowerBI等工具呈现。 数据压缩:熟悉Snappy、Gzip等数据压缩算法...

    Flink在美团平台的实践与应用

    上图呈现的是当前美团实时计算平台的简要架构。...standalone模式的部署方式,Flink由于其现在运行的环境,美团选择的是OnYARN模式,除了计算引擎之外,我们还提供一些实时存储功能,用于存储计算的中间状态、计算

    实时计算平台架构与实践(35页).pdf

    通过Flink on YARN,可以更有效地管理集群资源,利用nodelabel和cgroup机制,无需维护多个独立集群,同时,Flink的状态管理、SQL支持、多样化的窗口功能以及Exactly once语义,保证了高吞吐和低延迟。 总的来说,...

Global site tag (gtag.js) - Google Analytics