- 什么是Hadoop
Hadoop是适合大数据分布式存储和计算平台
狭义上Hadoop就是一个框架平台
广义上Hadoop是指以,Hadoop薇代表的大数据生态,包括很多其他软件框架
- Hadoop生态圈技术栈
- Hadoop (HDFS + MapReduce + Yarn)
- Hive 数据仓库工具
- HBase 海量列式非关系型数据库
- Flume 数据采集工具
- Sqoop ETL工具
- Kafka 高吞吐消息中间件
Hadoop的特点
- 扩容能力
- Hadoop是在计算机集群内分配数据并完成计算任务,集群可以方便的扩展到数以千计个节点
- 低成本
- Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低
- 高效率
- Hadoop可以在节点之间动态并行移动数据,使得速度非常快
- 可靠性
- 能自动维护数据的多份复制,并在任务失败后能自动的重新部署(redeploy)计算任务
- 扩容能力
Hadoop的发行版本
- Apache Hadoop原始版本
- 开源版本,代码版本更新频繁
- 软件收费版本ClouderaManager
- CDH版本,生产环境使用
- 免费开源版本HortonWorks
- HDP版本,生产环境使用
- Apache Hadoop原始版本
- Hadoop的优缺点
- Hadoop的优点
- Hadoop具有存储和处理数据能力的高可靠性
- Hadoop通过可用的计算机集群分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中,具有高扩展性
- Hadoop能够在节点之间进行动态的移动数据,并保证各节点的动态平衡,处理数据非常快,具有高效性
- Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配,具有高容错性
- Hadoop的缺点
- Hadoop不适用于低延迟数据访问(T+1数据)
- Hadoop不能高效存储大量小文件
- Hadoop不支持多用户写入并任务修改文件
- Hadoop的优点
Hadoop = HDFS (分布式文件系统) + MapReduce(分布式计算框架)+ Yarn(资源协调框架) + Common模块
Hadoop HDFS :高可靠、高吞吐量的分布式文件系统
实现方式:分而治之(数据分割、制作副本、分散存储)
HDFS : Master/slave (主从控制)
NameNode -> Master节点:管理和维护元数据,元数据记录文件的块列表以及块所在的DateNode节点信息
DataNode -> slave节点:负责存储文件数据块
存入过程:
对大数据进行拆分,切割得到数据块,可能得到多个数据块
获取文件过程:
向NameNode请求获取到之前存入文件的块以及块所在的DataNode的信息,分别下载并最终合并,就得到之前的文件
图中涉及到几个角色(NN,DN 既是角色名称,也是进程名称,也代指电脑结点名称)
NameNode(nn) |
存储文件的元数据,比如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的快列表和快所在的DataNode等 | |
---|---|---|
SecondaryNameNode(2nn) | 辅助NameNode更好的工作,用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据快照 | |
DataNode(dn) | 在本地文件系统存储文件快数据,以及块数据的校验 |
MapReduce 分布式计算框架
拆分任务、分散处理、汇总结果
MapReduce = Map + Reduce
Hadoop YARN: 作业调度与集群资源管理框架
计算资源协调
Client 提交MR任务
MR任务,R任务依赖与M任务,需要一个角色来调度执行(有Resource Manager来执行)。
Resource Manager 作为Master角色,处理客户端请求,监控NodeManager角色,
收到请求后,向有空闲资源的NodeManger,初始化一个AppMaster。
收到AppMaster申请资源后,汇报给AppMaster,当前哪一个NodeManager存在空白资源。
NodeManger 作为Salve角色,监控每一个块,自身的资源状况向Resource Manager汇报
AppMaster 为应用申请资源(向Resource Manager),任务监控,容错(MR任务只是其中的一个),梳理数据资源。收到Resouce Manger汇报的NodeManager空闲资源后,向NodeManger通信,初始Container用于接收M/R Task 。当所有M/R Task任务计算完成,AppMaster向Resource Manager 发送申请,告知整个计算任务完成
Container 中运行的任务会向Master汇报(计算任务状态),当前任务的M/RTASK,