![](https://csdnimg.cn/release/download_crawler_static/10524625/bg4.jpg)
4 / 20
1.2、YARN 的优势
YARN 本身框架的优势是扩展性与支持多计算模型。对于扩展性目前主要体现在计算节点规模上,以前 JobTracker-TaskTracker
模型下最多大约在 5000 台机器左右,对于 YARN,官方说可以支持大约 10w 台机器,当然这个目前还没有一家公司去试用过,连 300
台机器目前估计也是测试阶段。对于支持多计算模型,目前 YARN 理论是可以支持更多的计算模型的,如:MAP-REDUCE、MPI、Giraph、
Spark 等。目前 MAP-REDUCE 是默认支持的,MPI 见 MAPREDUCE-2911。
下面一些优势,只能说是重构或者在原来的框架上面也可以实现。目前我整理的有如下几点:
调度器的资源模型及资源隔离,JobTracker 时代还是使用 slot,这个是很不合理的。在资源模型包括内存、CPU、磁盘、
网络等情况下,机器资源的利用将更加合理。
JobHistory Sever 从 JobTracker 分离出来,减轻了 master 节点的压力。
uber appMaster 模式,可以在一台机器上面运行所有的 task。这个其实是可以把计算计算全部算在集群内,local 模式需
要使用客户端的资源。
shuffle 性能提升 30%+,主要是使用 netty 重写了。
不可否认的是在框架层面,YARN 在很多方面都做得比较优秀。但是这个不是没有代价的,代价就是 YARN 更加复杂,更加让人迷
糊,可能某些性能更加低下。当然我们也要感谢计算机软件的发展,目前我们有很多的软件设计的思想可以使用,来使我们的软件更
加正确、可靠、高性能。但是 YARN 还是复杂的。例如:MAPREDUCE-3561 里面列举的一些 case。
1.3、新框架下的软件设计模式
上个月,我写了一篇博客,结合我以前在架构方面的实践,总结了在 yarn 中的一些软件设计模式。其中最主要说了在 yarn 使用
最广泛,也是最重要的三个设计模型:服务生命周期管理模式、事件驱动模式、状态驱动模式。详情参见《yarn(hadoop2)框架的一些
软件设计模式》,最经典如下图,文中有详细的说明。
1.4、HADOOP 2.0.0- alpha 工程结构
请参考《hadoop2 包结构及包功能大致介绍》,介绍了工程之间的依赖关系及每个工程的大致功能。在 1.x 以后,hadoop 开始采取
maven 来管理工程,代码结构就清晰了很多。在 YARN 版本中就有一个三十几个的包工程。