Hadoop是一个开源的,可运行于大规模集群上的分布式并行编程框架。

Hadoop组件

  1. Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。
  2. Hadoop MapReduce:一个分布式的离线并行计算框架。
  3. Hadoop YARN:作业调度与集群资源管理的框架。
  4. Hadoop Common:支持其他模块的工具模块。

Hadoop 框架中最核心的设计就是:HDFSMapReduceHDFS为海量的数据提供了存储,MapReduce 为海量的数据提供了计算。

HDFS

HDFS源自于 Google 2003年10月发表的GFS(google file system)论文,HDFS是GFS的开源实现。

HDFS集群采用了主从(Master/Slave)体系结构,其中NameNodeDataNodeClient是HDFS中的3个重要角色。

在一个 HDFS 集群中,有一个 NameNode ,一个 Secondary NameNode 和多个的 DataNode ,Client 比数据节点的数量多很多。

NameNode负责管理整个文件系统的元数据,NameNode 管理了 HDFS 的目录文件树结构文件与数据块的对应关系DataNode与数据块的对应关系

Secondary NameNode 是 NameNode 的备份。分担NameNode的工作量。定期推送fsimage和fsedits给NameNode。紧急情况下,可辅助NameNode恢复,但Secondary NameNode并非NameNode的热备份。

DataNode 负责管理用户的文件数据块,执行 NameNode 的命令,比如复制,拷贝,删除等操作。文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台DataNode上,每一个块可以有多个副本,并存放在不同的 DataNode 上,DataNode 定期向 NameNode 汇报自身保存的块信息,而 NameNode 则要保证文件的副本数量。

MapReduce

MapReduce 源自于 Google 2004年12月发表的 MapReduce 论文,Hadoop MapReduce是Google MapReduce 的开源实现。

MapReduce是一种分布式计算模型,用以进行大数据量的运算。其中 Map 对数据集上的独立元素进行指定的操作,生成键-值对形式的中间结果。Reduce 对中间结果中相同“key”的所有“value”进行规约,以得到最终结果。MapReduce这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。

Hadoop MapReduce 包含以下四部分

  • JobTracker - 一个Master节点,用于管理所有作业,作业/任务的监控、错误处理等,将任务分解成一系列任务,并分派给TaskTracker。

  • TaskTracker - 多个Slave节点,运行Map Task和Reduce Task,并与JobTracker交互汇报任务状态。

  • Map Task - 解析数据记录,传递给用户编写的map()并执行,将输出结果写入本地磁盘(如果为map-only作业,直接写入HDFS)。

  • Reducer Task - 从Map Task的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的reduce函数执行。

YARN

参见:Hadoop 新 MapReduce 框架 Yarn 详解

Hadoop生态其它产品

参见:大数据技术Hadoop入门理论系列之一—-hadoop生态圈介绍