01.Hadoop简介
Hadoop是一个开源的,可运行于大规模集群上的分布式并行编程框架。
Hadoop组件
- Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。
- Hadoop MapReduce:一个分布式的离线并行计算框架。
- Hadoop YARN:作业调度与集群资源管理的框架。
- Hadoop Common:支持其他模块的工具模块。
Hadoop 框架中最核心的设计就是:HDFS和MapReduce。 HDFS
为海量的数据提供了存储,MapReduce
为海量的数据提供了计算。
HDFS
HDFS源自于 Google 2003年10月发表的GFS(google file system)论文,HDFS是GFS的开源实现。
HDFS集群采用了主从(Master/Slave)体系结构,其中NameNode,DataNode和Client是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 详解