Spark Streaming在阿里的应用实践


C lo u d C o m p u tin g 云计算 1 12 时性要求不高 ,可 以接受1分钟的延迟。因此,云 梯开发 人员选择 Spark Stream ing 框架处理云梯 Job H istory 。 图4 展 示 了使 用S P a rk S tre a m in g 解 析 云 梯 JobH istory的 流程 。云梯 的JobH istory 是通过 阿里 内部的 日志 收集 系统T T (Tim eTun ne1) 实 时 收集 并上 传 到服务 端 的 。Sp ark Stream ing 支 持 多种不 同的 数据 源 ,包 括K a fka Stre am 、 F lum eStream 、FileStream ~ N etw ork Stream 等 。也可 以实现 自己的Inpu tD Stream ,解析云梯 JobH istory首 先需要 从T T 服务端 获取数 据 ,通 过 自定义的T T LogInputD Stream 实现,它继承 于 N etw orkInputD Stream ,并增加了限流功能,限制 每秒钟最大输入数据量,这可以通过配置决定。 JobH istory中主要包括 作业的H istory (执行历史 日志 ) ~NC onf (配置信息) 。由于经过T T收集后, 所有作 业 日志 已混在 一起 ,所 以第一 步 需要 根 据J0bId把JobH ist0ry分开。T TL ogInputD Stream 输 人数 据 会被 生成最 原始 的D Stream ,程序 中 对D Stream 的转 换主要 包括两个Stage:Stag e1 为separateRecord,它会根据JobId把J0bH istory 中的c on f和H lst0ry数 据拆分 ,C on f数据直接 存 储~ljH B ase ,H istory传递 给Stag e2 ;Stage2为 JobH istoryParser,它会解析每个JobId的H istory, 并得到作业 元数据 ,~HJobId 、U ser$~Starttim e 等,作业元数据存储~ PostgreSQ L ,H istory数据 存储~[JH B ase 。作业查 询部 分首先通过元数据查 询到相应的作业,然后~ H B ase获取相应JobId的 Conf$HH istory后通过网页展示出来。 程序的难点在于输入数据量波动大 ,且不能保证 Spark Stream ing性能与稳定性能满足生产环境。 如果Spark Stream in g程序的处理速度持 续跟不 上数据输入的速度,则有可能出现丢失数据的问 题。具 体详情可 以查看SparkA pp m aster日志 信 息,主要通过类似下面这条 日志: 14 一O1— 11 13 :39 :04 IN FO 【poo t-6-t h read -1 】 J o b M a n a g e r : T o t a d e t a y : 4 .7 7 7 0 0 S f o r Job 2 of t ~m e 13 894 18 74000 0 (ex ecut ion : 4 .77100 S ) 它提示了第二个Spark Job延迟4 77700s。如果后 续后续Spark Job延迟持续增加则需要优化;如果 保持在一个合适的范 围内则正常 。 解决方法是先定位 程序慢在哪一步,一般情况下 Spark Stream ing都会包含一到多个Stage。优化运 行时间最长的Stage,尽量切分成更多的Stage,如 果每个Stage都已拆分且无法优化,那么只能增加 计算资源 ,提高程序 的并 行度 。云梯开发人 员在 优化JobH istory解析中通过三步提升了作业的性 能:把结果由输 出~IjH D F S改 成写H Base;Stage1 把所有数据都传递给Stage2,但由于Stage2未使 用C on f数据 ,因此在Stage1中~ Conf数据提前写 ~lJH Base;输人数据增加限流机制,当一 定时间内 输人数据超过设置值时停止输入 ,防止因短 时间 输入数据过大导致数据丢失。 另外 ,针对Sp ark Stream ing 的稳定性 ,首先将 Spark升级到最新的Sp ark 0 8 1;其次 ,云梯开发 人员通过增加对作业执行状态的监控,若作业出 错 ,则通知云梯开发人员,并重新提交一 个新 的 作业继续执行。 当前云梯实时解析JobH istory 日志程序 的运 行状 况为:每分钟处理一批数据 ;输人增加限流 ,最大 处理量能达到4~5G B ;每 个Stage的并行度为5O, 总 占用资源为100G B 的内存;程序已经稳定运行超 过一个月。 结沿 当前,Spark Stream ing 已在阿里内部小范围使用, 它的小批量处理方式使得它可以同时兼容批处理 和实时处理的算法 ,特别适用于某些需要同时处 理历史数据和实时数据的业务场景,也适用于对 实时性要求不是很高的实时计算业 务,因此Spark Strea m ing 将 在 阿里 内部 发 挥 更大 的作 用。但 Spark Stream ing作为一个全新的实时计算框架, 还需要更多的业务场景去验证其功能,性能还需 要优化,稳定性也需要更长时间的考验 。后续我 们将会继续推广Spark Stream ing在阿里的使用, 增加并完善Spark Stream ing作业监控机制。o ■ 沈洪 花名俞灵,就职于阿里巴巴集团数据平台事业部 海量数据部门,目前从事YARN、MapReduce~ 研究、开发与集群的维护。 :杨爽 jn(Ishu nc csdn net)
还剩2页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

aacall

贡献于2015-03-12

下载需要 3 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf