- Hadoop的目标,是建立一个能够对大数据进行可靠的分布式处理的可扩展开源软件框架
- 面向的应用环境是大量低成本计算机构成的分布式运算环境
- 假设了计算节点和存储结点经常发生故障,为此设计了数据副本机制,确保能够在出现故障结点的情况下重新分配任务
- 以并行方式工作,通过并行处理加快处理速度,具有高效的处理能力
- 可靠,高效,可扩展。三大特性
Hadoop原理与运行机制
- Hadoop的核心是由3个子项目组成
- Hadoop Common, HDFS(Hadoop 分布式文件系统),MapReduce
HDFS
- NameNode
- 是HDFS系统中的管理者
- 负责管理明明空间,维护文件系统的文件树和所有的文件和目录的元数据
- 还保存了每个文件与数据块所在的DataNode的对应关系,这些信息被用于其他功能组件查找所需文件资源的数据服务器
- Sewcondary NameNode
- NameNode的备份,防止NameNode发生故障而影响整个系统
- 一般在一台单独的物理计算机上运行
- 与NameNode保持通信,按照一定时间间隔保持保持文件系统元数据的快照
- DataNode
- 保存数据的结点
- HDFA中的文件通常被分隔为多个数据块,以冗余备份的形式存储在多个DataNode中
- DataNode定期向NameNode报告其存储的数据列表块
MapReduce组件
- JobClient
- 基于MapReduce接口库编写的客户端程序,负责提交MapReduce作业
- JobTracker
- 是MapReduce模块之间的控制协调者
- 当一个MapReduce作业提交到集群中时,JobTracker负责确定后续执行计划
- 执行计划包括:需要处理那些文件,分配任务的Map和Reduce,监控任务的执行,重新分配失败的任务等
- 每个Hadoop集群只有一个JobTracker
- TaskTracker
- 执行由JobTracker分配的任务
- 每个TaskTracker可以启动一个或多个Map或Reduce任务
- TaskTracker与JobTracker通过心跳机制保持通信
- MapTask,ReduceTask
- 是用于执行Map和Reduce的程序
执行步骤
- (1) MR程序启动一个JC实例,以开启整个MR作业
- (2)JC通过getNewJobId()接口,向JT发出请求,以获得一个新的作业ID
- (3)JC根据作业请求指定的输入文件计算数据块的划分,并将完成作业需要的资源存放到HDFS中属于JT的已作业ID命名的目录下
- (4)完成上述准备工作后,JC通过敖勇JT的submitJob()接口提交此作业
- (5)JT将提交的作业放入一个作业队列中等待进行作业调度以完成作业初始化工作。初始化主要是创建一个代表此作业的运行对象。对象中封装了作业包含的任务和任务运行状态记录信息用于后续跟踪相关任务的状态和执行进度
- (6)JT还需要从HDFS问价个中取出JC放好的输入数据,并根据输入数据创建对应数量的Map任务,同时根据JobConf配置文件中定义的数量生成R任务
- (7)JT和TT间通过心跳机制维持通信,TT发送的新校消息中包含了当前是否可执行新的任务的信息,根据这个信息,JT将M和R任务分配到空闲的TT结点
- (8)被分配了任务的TT从HDFS中取出所需的文件,并存入本地磁盘,并启动一个TR的程序实例准备运行任务
- (9)TR在一个新的Java虚拟机中根据任务类别创建出MapTask或ReduceTask进行运算。在新的虚拟机中运行的原因是避免这些任务的运行异常影响TT的正常运行。MT和RT会定时与TR进行通信报告进度,直到任务完成
相关技术简介
基于云计算的大数据处理架构
- 数据集成层:
- 当要处理一些保存在数据库中的数据时,由于这些数据不是存储在HDFS中的,因此在处理时就需要通过外部API的形式访问这些数据
- 这种方式既不灵活也不高效,因此引入了一个数据集成层
- 该组件的作用,是在外部数据源和文件存储层或数据存储层之间进行适配,以实现双向的数据高效导入导出
- 文件存储层:
- 利用分布式文件系统技术,将底层数量众多且分布在不同位置的通过网络连接的各种存储设备组织在一起
- 为上层应用屏蔽了存储设备类型、型号、接口协议分布位置等技术细节
- 提供了数据备份,故障容忍,状态监测,安全机制等多种保障可靠的文件访问服务的管理性功能
- 乡下与数据源和数据集成层连接访问具体的存储资源
- 向上为变成模型层和数据存储层提供文件访问服务
- HDFS
- 数据存储层:
- 数据存储层的功能是提供分布式可扩展的大量数据表的存储和管理能力
- 要求能够在较低成本下实现大数据表的管理能力
- 可以支持在大规模数据量的情况下完成快速的数据读写操作
- 可以随着数据量的快速增长通过简单的硬件扩容实现存储能力的线性增长
- HBase和HCatalog
- 编程模型层:
- 是整个处理架构的核心,它的女性效率决定了整个数据处理过程的效率
- 目前MapReduce占据统治地位
- 为大规模数据处理提供一个抽象的并行计算编程模型,以及为此模型提供可实施的变成环境和运行环境
- 一方面程序员可以使用MapReduce编程模型直接构建数据处理程序
- 另一方面上层的拓展工具例如Hive等也是利用了MapReduce的计算能力进行数据访问和分析
- 数据分析层:
- Pig和Hive
- 该层中的组件,就是提供一些高级的分析工具给数据分析人员以提高他们的生产效率
- Pig提供了一个在MapReduce基础之上抽象出的更高层次的数据处理能力,包括一个数据处理语言及其运行环境
- Hive则可以将结构化的数据映射为一张数据表,为数据分析人员提供完整的SQL查询功能,并将查询语言转换为MapReduce任务执行
- 平台管理层:
- 组件是确保整个数据处理平台平稳安全运行的保障
- 提供了包括配置管理,运行监控,故障管理,性能优化,安全管理等在内的全套功能
- 面向Hadoop集群的开源项目主要有ZooKeeper(主要提供配置管理及组件协调功能)和Ambari(提供一个用于安装。管理和监控Hadoop集群的Web界面工具)
基于云计算的大数据处理计数的应用
- 百度,淘宝,阿里,华为,中国移动等,都是使用的Hadoop