Hadoop2.0介绍
28. }
Hadoop2.0 新特性: YARN上运行的软件
Applications Run Natively In Hadoop
Batch
InterActive
(MapReduce) (Tez)
OnLine
Streaming
Graph
(HBase) (Storm, S4,…) (Giraph)
IN-Memory HPC MPI (Spark) (OpenMPI)
Hadoop2.0 新特性: YARN-架构及组件
• ResourceManager
– 处理客户端请求
YARN 是Hadoop 2.0 中的资源管理系统, 它是一个通用的资源管理模块,可为各 类应用程序进行资源管理和调度。
– 启动/监控ApplicationMaster
– 监控NodeManager
Next-Gen DataProccess Platform-Hadoop2.0介绍
Single Use System
Batch Apps
Hadoop 1.0
MapReduce(v1)
(cluster resource management & data processing)
HDFS
(redundant, reliable storage)
所有的元数据信息的读取和操作都需要与NameNode进行 通信,如客户端的addBlock、getBlockLocations,DataNode的 blockRecieved、blockReport等操作,在集群规模变大后, NameNode 会成为性能瓶颈
Hadoop2.0 新特性: NameNode Federation
• 扩展性
– 集群最大节点数–4000
当 map-reduce job 非常多的时候,会造成很大的 内存开销,潜在来说,也增加了 JobTracker fail 的风险,这也是业界普遍总结出老 Hadoop 的 Map-Reduce 只能支持 4000 节点主机的上限。
– 最大并发任务数–40000
• 可以根据实际需要和CPU性能将每个物理CPU划分成若干个
虚拟CPU。管理员可为每个节点单独配置可用的虚拟CPU个 15. // Priority for worker containers - priorities are intra-application
16. Priority priority = Records.newRecord(Priority.class);
• 防止脑裂(brain-split):主备切换时由于切换不彻底等原因导 致Slave误以为出现两个active master,通常采用Fencing机制:
-共享存储fencing,确保只有一个NN可以写入edits -客户端fencing,确保只有一个NN可以响应客户端的请求 - DN fencing,确保只有一个NN可以向DN下发删除等命令
数,用户程序也可指定每个任务需要的虚拟CPU个数 17. priority.setPriority(0);
18.
Setup requirements for worker containers
19. // Resource requirements for worker containers
• 可为每个节点单独配置可用内存,采用线程监控的方案控 20. Resource capability = Records.newRecord(Resource.class);
Apache Hadoop 2.0
下一代数据处理框架介绍
主要内容
• Hadoop 1.0 的局限性 • Hadoop 2.0 新特性介绍 • Hadoop现状及最新进展
Hadoop1.0的局限- HDFS
※资源隔离 ※元数据扩展性 ※访问效率 ※数据丢失
Hadoop1.0的局限-MapReduce
Hadoop 2.0 Federation实现方式
26.
ContainerRequest containerAsk = new ContainerRequest(capability, null, null,
prio•riMtye);sos等资源管理软件
Make resource requests to ResourceManager
27.
rmClient.addContainerRequest(containerAsk);
Hadoop2.0 新特性: NameNode HA
Hadoop 1.0 HA实现方式及缺陷:
– Secondary NameNode:阶段性合并edits和fsimage以缩短集群启动 时间,不是HA ,无法立刻接管失效的NN及保证数据完整性
– Backup NameNode (HADOOP-4539):它在内存中复制了NN的当 前状态,算是Warm Standby,但无法保证数据完整性
21. capability.setMemory(128);
22. capability.setVirtualCores(1);
23. 24.
制//内Ma存ke 使cont用ain,er 发requ现est任s t务o Re超sou过rce约Mana定ger的资源量会将其杀死
25. for (int i = 0; i < n; ++i) {
– 手动把name.dir指向NFS:这是安全的Cold Standby,可以保证元 数据不丢失,但集群的恢复则完全靠手动
– Facebook AvatarNode:Hot Standby,无法自动切换,需要管理 员手动把对外提供服务的虚拟IP映射到Standby NN
– 其它依赖外部的HA机制,譬如DRBD,Linux HA,VMware的 FT等等
Hadoop2.0 新特性: NameNode HA
Hadoop 2.0 HA实现方式:
Others: QJM:HDFS HA using the Quorum Journal Manager to share edit logs between the Active and Standby NameNodes YARN-MRv2作业处理流程
Hadoop2.0 新特性: YARN-MRv2作业处理流程
步骤1 用户向YARN 中提交应用程序, 其中包括ApplicationMaster 程序、启动ApplicationMaster 的命令、用户程序等。 步骤2 ResourceManager 为该应用程序分配第一个Container, 并与对应的NodeManager 通信,要 求它在这个Container 中启动应用程序的ApplicationMaster。 步骤3 ApplicationMaster 首先向ResourceManager 注册, 这样用户可以直接通过ResourceManage 查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结 束,即重复步骤4~7。 步骤4 ApplicationMaster 采用轮询的方式通过RPC 协议向ResourceManager 申请和领取资源。 步骤5 一旦ApplicationMaster 申请到资源后,便与对应的NodeManager 通信,要求它启动任务。 步骤6 NodeManager 为任务设置好运行环境(包括环境变量、JAR 包、二进制程序 等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。 步骤7 各个任务通过某个RPC 协议向ApplicationMaster 汇报自己的状态和进度,以让 ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用 程序运行过程中,用户可随时通过RPC 向ApplicationMaster 查询应用程序的当 前运行状态。 步骤8 应用程序运行完成后,ApplicationMaster 向ResourceManager 注销并关闭自己。
Other (Search) (Weave…)
YARN (Cluster Resource Management)
HDFS2 (Redundant, Reliable Storage)
运行在YARN上带来的好处 :
– 一个集群部署多个版本 – 计算资源按需伸缩 – 不同负载应用混搭,集群利用率高 – 共享底层存储,避免数据跨集群迁移
Hadoop2.0 新特性: YARN-产生背景
• 直接源于MRv1在几个方面的无能
– 扩展性差,JobTracker成为瓶颈 – 可靠性差,NameNode单点故障 – 扩展性差,难以支持MR之外的计算 – 资源利用率低
• 多计算框架各自为战,数据共享困难
– MR:离线计算框架 – Storm:实时计算框架 – Spark:内存计算框架
HDFS2
(redundant, reliable storage)
Hadoop 2.0新特性:
– 由HDFS、MapReduce和YARN三个分支构成 – HDFS:支持NN Federation、HA – MapReduce:运行在YARN上的MR,编程模型不变 – YARN:资源管理系统 –…
Hadoop2.0 新特性: NameNode Federation
Hadoop 1.0版本容量及性能缺陷:
– 单NameNode容量限制: 按常规的估算公式1百万个块需要1G内存,1亿个文件
NameNode进程可能需要上百G内存保存元数据信息,受制于 Java内存管理能力限制,上百G内存保基本上达到上限 – 单NameNode性能限制:
• 可用性
– JobTracker负载较重
– 存在单点故障, 一旦故障,
所有执行的任务的全部失败
• 批处理模式,时效性低
– 仅仅使用MapReduce一种计算方式