Hadoop在一些企业部署时,往往会遇到多个用户各自创建的数据处理工作的情况。这些工作都运行在同一个Hadoop系统上时,他们之间可能会彼此冲突,争夺可用的处理器资源。
David Clubb,在移动游戏平台和市场公司Chartboost的高级数据工程师,试图优化大数据技术,提升产品体验时,也遇到了Hadoop集群管理的问题。“我们正在更新Hadoop软件,并试图将其迁移到新的集群,但并没有找到监控集群的好方法,”Clubb说道。“你可以看到工作在运行,但你却不能看到其所使用的资源。”
这样显然不太好,因为低优先级的提取、转换和加载过程和分析工作可能会占用CPU周期,而具有更高的优先级的工作,例如实时的报告,所获得的 CPU周期就会相对减少。与此同时,集群中的一些计算节点可能没有被充分利用,Clubb说道。这个问题促使他实现了一套新的软件,提供一个更便捷的窗口来观察集群资源的活动和和实时优化处理工具的工作负载,其中包括MapReduce、Hive和Spark等应用程序。
用了YARN,却在原地踏步
今年安装的Hadoop系统每天处理10亿多个事件,创建一个庞大的数据池,以供业务产品线经理使用,通过这些数据,产品经理可以了解 Chartboost平台被玩家和游戏开发者使用的情况。首先,Chartboost,运行在Cloudera部署在Amazon Web Services 云环境上的Hadoop分布式平台上,仅仅依靠开源框架内置的Hadoop YARN调度程序调整其工作负载。但使用YARN,并没有让这家旧金山的公司能对高优先级工作有什么特殊的处理,Clubb说。 他补充说道,Hadoop创建了一些信息,用于集群管理,但由于其开源的架构的特性,数据被分到不同的地方。自制的脚本可以解决的一些管理问题,但还是不足以解决所有问题。
后来,Clubb发现创业公司Pepperdata能够提供更深层次的视图,通过该视图可以观察Hadoop集群的I / O、内存和CPU使用情况。对于Chartboost更重要的是,Pepperdata软件可以自动降低低优先级工作的占用,给予高优先级应用程序额外的运行空间,并确保集群中所有的计算节点尽可能被有效地利用。
“我们试图找出管理工作负载的最好方式——你肯定不想过度使用或未充分使用你的节点,”Clubb说道。“Pepperdata让硬件的使用更高效。它可以动态地调整工作。” 使用这个软件,减少了公司所需集群节点的数量,节约了Chartboost在云计算上的花费。Clubb说,其Hadoop系统目前有22个节点,原来的部署时则有33个节点。
多重Hadoop管理选项
Pepperdata是许多供应商中的一员,这些供应商包括传统的系统管理软件制造商,Hadoop分布提供者和类似Concurrent之类的创业公司,他们采取不同的方式来进行Hadoop集群管理流程的自动化。位于Sunnyvale, Calif的Pepperdata公司创始人之一,Chad Carson表示,基于处理优先级的自适应调整是Pepperdata软件的关键元素。 当公司把Hadoop大数据服务投入到生产使用中,IT团队可能需要将保证应用程序的性能作为服务水平协议的一部分,Carson 说。他认为,理解如何利用Hadoop集群资源,并根据所需进行动态修改,对于企业来说会越来越重要。
Hadoop生态系统的新成员,比如Apache Spark处理引擎,可能会进一步加剧集群管理问题,Carson补充说。“Spark能做的更多,也更快,”他说。”但它在使用中存在高峰期,你会看到 Spark的工作干扰到了其他工作。或者你会看到一个Spark或HBase工作负载被延迟所约束,或被低优先级的MapReduce[工作]干涉。”
Hadoop集群管理中的“交通警察”
像Pepperdata一类的软件可以帮助企业解决一些阻碍Hadoop使用的问题,Mike Matchett—位于Hopkinton, Mass的 Taneja Group公司分析师如是说。 “做一个应用程序性能管理系统是一回事——而做一个可以动态地优化系统的实时控制器是另外一码事,”Matchett 说道。“如果部署了一个大的集群,且用于多重用途,那么你就需要一个“交通警察”。 对于Clubb来说,下一步可能会增加Spark的使用,以处理Hadoop数据。他提到,早前的工作,使用Pepperdata的软件支持处理引擎对 Chartboost有了积极的结果。Clubb说,他有信心可以迁移更多的工作流到Spark,且不会遇到之前的集群管理问题,“更多工作意味着你更有可能耗尽所有的资源。”
本文作者:杨宏玉
来源:51CTO