• 什么是Hadoop

Hadoop是适合大数据分布式存储和计算平台
狭义上Hadoop就是一个框架平台
广义上Hadoop是指以,Hadoop薇代表的大数据生态,包括很多其他软件框架

  1. Hadoop生态圈技术栈
  2. Hadoop (HDFS + MapReduce + Yarn)
  3. Hive 数据仓库工具
  4. HBase 海量列式非关系型数据库
  5. Flume 数据采集工具
  6. Sqoop ETL工具
  7. Kafka 高吞吐消息中间件
  • Hadoop的特点

    • 扩容能力
      • Hadoop是在计算机集群内分配数据并完成计算任务,集群可以方便的扩展到数以千计个节点
    • 低成本
      • Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低
    • 高效率
      • Hadoop可以在节点之间动态并行移动数据,使得速度非常快
    • 可靠性
      • 能自动维护数据的多份复制,并在任务失败后能自动的重新部署(redeploy)计算任务
  • Hadoop的发行版本

    • Apache Hadoop原始版本
      • 开源版本,代码版本更新频繁
    • 软件收费版本ClouderaManager
      • CDH版本,生产环境使用
    • 免费开源版本HortonWorks
      • HDP版本,生产环境使用
  • Hadoop的优缺点
    • Hadoop的优点
      • Hadoop具有存储和处理数据能力的高可靠性
      • Hadoop通过可用的计算机集群分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中,具有高扩展性
      • Hadoop能够在节点之间进行动态的移动数据,并保证各节点的动态平衡,处理数据非常快,具有高效性
      • Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配,具有高容错性
    • Hadoop的缺点
      • Hadoop不适用于低延迟数据访问(T+1数据)
      • Hadoop不能高效存储大量小文件
      • Hadoop不支持多用户写入并任务修改文件

Hadoop = HDFS (分布式文件系统) + MapReduce(分布式计算框架)+ Yarn(资源协调框架) + Common模块

Hadoop HDFS :高可靠、高吞吐量的分布式文件系统

实现方式:分而治之(数据分割、制作副本、分散存储)
HDFS : Master/slave (主从控制)
NameNode -> Master节点:管理和维护元数据,元数据记录文件的块列表以及块所在的DateNode节点信息
DataNode -> slave节点:负责存储文件数据块
存入过程:
对大数据进行拆分,切割得到数据块,可能得到多个数据块
获取文件过程:
向NameNode请求获取到之前存入文件的块以及块所在的DataNode的信息,分别下载并最终合并,就得到之前的文件
image.png

图中涉及到几个角色(NN,DN 既是角色名称,也是进程名称,也代指电脑结点名称)

NameNode(nn)
存储文件的元数据,比如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的快列表和快所在的DataNode等
SecondaryNameNode(2nn) 辅助NameNode更好的工作,用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据快照
DataNode(dn) 在本地文件系统存储文件快数据,以及块数据的校验

MapReduce 分布式计算框架

拆分任务、分散处理、汇总结果
MapReduce = Map + Reduce
image.png

Hadoop YARN: 作业调度与集群资源管理框架

计算资源协调
image.png
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,

ResourceManager(rm): 处理客户端请求,启动/监控Application Master、监控NodeManager、资源分配与调度

NodeManager(nm): 单个节点上的资源管理,处理来自ResourceManager的命令、处理来自ApplicationMaster的命令

ApplicationMaster(am): 数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错

Container: 对任务运行环境的抽象,封装了CPU、内存等多维度资源以及环境变量、启动命令等任务运行相关的信息

Hadoop Common : 支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)