Hadoop YARN的发展史与详细解析


开发 YARN 应用程序

使用 YARN 提供的强大的新功能和在 Hadoop 之上构建自定义应用程序框架的能力,您还会面临新的复杂性。为 YARN 构建应用程序,比在 YARN 之前的 Hadoop 之上构建传统 MapReduce 应用程序要复杂得多,因为您需要开发一个 ApplicationMaster,这就是在客户端请求到达时启动的 ResourceManager。ApplicationMaster 有多种需求,包括实现一些需要的协议来与 ResourceManager 通信(用于请求资源)和 NodeManager(用于分配容器)。对于现有的 MapReduce 用户,MapReduce ApplicationMaster 可最大限度地减少所需的任何新工作,从而使部署 MapReduce 作业所需的工作量与 YARN 之前的 Hadoop 类似。

在许多情况下,YARN 中一个应用程序的生命周期类似于 MRv1 应用程序。YARN 在一个集群中分配许多资源,执行处理,公开用于监视应用程序进度的接触点,且最终在应用程序完成时释放资源并执行一般清理。这个生命周期的一种样板实现可在一个名为 Kitten 的项目中获得(参见 参考资料)。Kitten 是一组工具和代码,可简化 YARN 中的应用程序开发,从而使您能够将精力集中在应用程序的逻辑上,并在最初忽略协商和处理 YARN 集群中各种实体的局限性的细节。但是,如果希望更深入地研究,Kitten 提供了一组服务,可用于处理与其他集群实体(比如 ResourceManager)的交互。Kitten 提供了自己的 ApplicationMaster,很适用,但仅作为一个示例提供。Kitten 大量使用了 Lua 脚本作为其配置服务。


下一步计划

尽管 Hadoop 继续在大数据市场中发展,但它已开始了一场演变,以解决有待定义的大规模数据工作负载。YARN 仍然在积极发展且可能不适合生产环境,但 YARN 相对传统的 MapReduce 而言提供了重要优势。它允许开发 MapReduce 之外的新分布式应用程序,允许它们彼此同时共存于同一个集群中。YARN 构建于当前 Hadoop 集群的现有元素之上,但也改进了 JobTracker 等元素,可以提高可伸缩性和增强许多不同应用程序共享集群的能力。YARN 很快会来到您近旁的 Hadoop 集群中,带来它的全新功能和新复杂性。 


参考资料

学习