Linux/Python学习论坛-京峰教育

 找回密码
 立即注册

一键登录:

搜索
热搜: 活动 交友 discuz
查看: 673|回复: 1

Hadoop2.0新特性

[复制链接]

238

主题

288

帖子

1925

积分

超级版主

Rank: 8Rank: 8

积分
1925
QQ
发表于 2015-3-17 16:06:15 | 显示全部楼层 |阅读模式
hadoop是一个hadoop生态系统, 包括hadoop, hbase, hive, pig, sqoop, flume, mahout, zookeeper等

hadoop是生态系统当中的基础, hadoop(不是生态系统)包括存储和分布式计算两部分, 在hadoop2.0中包括了一些普通的hadoop套件, HDFS, YARN, 以及分布式计算模型MapReduce(以及其他数据进程)

hadoop2.0中不存在jobtracker, 被YARN代替

hadoop2.0可以支持Spark, Storm, Tez等计算框架

hadoop2.0的NameNode(HDFS)可以实现HA以及实现分片(每个分片需要单独做HA),所有NameNode共享所有DataNode存储资源

hadoop2.0架构, 底层是HDFS, 中间是YARN, 上层是MapReduce或者其它的计算框架

YARN由ResourceManger和ApplicationMaster组成. ResourceManger负责整个集群资源的管理和调度, ApplicationMaster负责应用程序相关的事物, 比如任务切分, 任务调度, 任务监控, 容错, 把YARN分配的资源再次分配给内部相关的任务等等, 一个任务有启动一个ApplicationMaster与之对应, 这样可以使多个运算框架可以在同一个hadoop集群里面运行, 以及一个程序失败, 不会影响其它程序

MapReduce由YARN, ApplicationMaster 以及MapTask/ReduceTask组成, MapTask/ReduceTask是任务驱动引擎, 跟Hadoop1.0的一致

HA的实现. HA系统实现由多个DataNode, 两个NameNode, 多个JournalNode(或者其它共享介质例如NFS), 两个FailoverController(zkfc进程), 多个zookeeper构成. 每个DataNode向两个NameNode同时汇报块信息以及心跳信息, 主备NameNode通过JournalNode同步信息, 所有数据同时写入所有JournalNode, 如果多数写入成功, 则认为成功. 主备切换可以手动可以自动, 自动的切换通过FailoverController以及zookeeper来实现, zkfc监控NameNode状态, 并把状态注册到zookeeper, 一但主NameNode挂了, 通过zookeeper同步, 备NameNode自动切换为主NameNode(在zookeeper中同步信息以竞争和保持锁).

HDFS Federation, 每个NameNode分管HDFS中的一部分目录, 保存管理一部分目录的元数据, 划分方式由管理员确定, 所有NameNode共享DataNode的存储资源, DataNode向所有NameNode发送块信息, 每个NameNode需要单独做HA. 不同NameNode管理的目录可以有相同的目录名.

YARN内部关系. 有一个ResourceManager负责整个集群的资源管理, 每个节点有NodeManager负责单个节点的资源管理以及任务控制. 每个NameNode每隔一段时间向ResourceManager汇报状态, 同时领取ResourceManager下发的命令. 客户端直接跟ResourceManager交互, 提交应用程序. 每个应用程序有一个ApplicationMaster与之对应, 跑在NameNode上, 它向ResourceManager申请资源, 然后跟每个NodeManager通信, NodeManager启动MapTask或者ReduceTask任务(Container).

YARN各个模块, ResourceManager, NodeManager, ApplicationMaster, Container. ResourceManager负责处理客户端请求, 启动以及监控ApplicationMaster, 监控NodeManager, 资源分配以及调度. NodeManager负责单个节点上的资源管理, 处理来自ResourceManager的命令, 处理来自ApplicationMaster的命令. ApplicationMaster(可以自己写)负责数据切分, 为应用程序申请资源, 并分配给内部任务, 任务监控与容错. Container负责对任务运行环境的抽象, 封装了CPU,内存等多维资源以及环境变量, 启动命令等任务运行相关的信息.

提交一个应用程序的运行过程. 多个Client, 一个ResourceManager, 多个NodeManager. 用户向ResourceManager提交应用程序, 包括了运行程序需要的资源以及主程序代码以及ApplicationMaster代码, ResourceManager申请资源在NodeManager机器上启动ApplicationMaster, 包括了启动命令以及依赖库的位置, ApplicationMaster与ResourceManager通信, 为内部的Container(Map/Reduce)申请资源, 与NodeManager通信, 让NodeManager启动对应的Task, Task在Container里面.

回复

使用道具 举报

217

主题

331

帖子

4711

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4711
QQ
发表于 2015-3-17 18:23:58 | 显示全部楼层
Hadoop 大数据!
京峰Linux教育创始人之一,只为有梦想的人!任何事情只要去行动,就会收获结果!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|京峰教育,只为有梦想的人 ( 京ICP备15013173号 )

GMT+8, 2019-9-18 19:55 , Processed in 0.021635 second(s), 10 queries , Redis On.

快速回复 返回顶部 返回列表