Hadoop是什么?
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。注意是基础架构,也就是说他是一个最底层的架构,单独使用它是做不了什么,提供了一个海量数据存储和分析计算的能力。
了解Hadoop的三大发行版本
-
Cloudera Hadoop(2008年成立的 Cloudera 是最早将 Hadoop 商用的公司,为合作伙伴提供Hadoop的商用解决方案。2009年 Hadoop 的创始人 Doug Cutting 也加盟 Cloudera 公司。Cloudera产品主要为CDH)
-
Hortonworks (2011年成立的 Hortonworks 是雅虎与硅谷风投公司 Benchmark Capital 合资组建的。公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop80%的代码。主打产品是Hortonworks Data Platform(HDP)
Hadoop的组成
- Hadoop 在 1.X 和 2.x 版本有一些区别,Hadoop1.X 由Common(辅助工具)、HDFS(数据存储)、MapReduce(计算+调度)构成;
- Hadoop2.x 由Common(辅助工具)、HDFS(数据存储)、Yarn(资源调度)、MapReduce(计算)构成;
- Hadoop2.x 比 Hadoop1.X 多了一个 Yarn(资源调度),并且 MapReduce 只负责计算工作;
HDFS 简介
Hadoop分布式文件系统(HDFS)是非常重要的核心功能,有高容错性的特点,将文件分块存储在分布式的节点中,并且是冗余存储,即使单个节点发生灾难性事故,也不会丢失数据。NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的DataNode。DataNode(dn):在本地文件系统中存储文件块数据,以及块数据的校验和。Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。NameNode可以理解为数据的索引,DataNode存储数据本身,Secondary NameNode是索引的快照。
YARN 简介
Hadoop2.x 中增加了 Yarn(资源调度),那资源调度是在调度什么呢?
ResourceManager(RM)是资源管理者,外部的客户端提交作业请求都会先到 ResourceManager(RM),他代表了集群所有的资源,并监控 NodeManager、启动或监控ApplicationMaster。NodeManager(NM) 只管理一个节点的资源,处理来自ResourceManager(RM)的命令和来自ApplicationMaster的命令。ApplicationMaster(AM)负责数据的切分、为应用程序申请资源分配内部任务和任务的监控容错。当一个任务提交到 ResourceManager(RM)时就会选择一个节点启动一个ApplicationMaster(AM)来负责这个任务的跟进,也就是对这个任务的一个负责人。也就是说有一个作业任务就会有对应的一个ApplicationMaster(AM)来跟进这个作业任务的执行和调度。Container 是对资源的一个抽象封装,里面会包含内存、CPU、磁盘、网络等资源,NodeManager(NM) 就是通过打开和关闭 Container 来调度资源的。
MapReduce 简介
其实由两个部分组成,分为 Map 和 Reduce,可以说是一种思想和处理算法。Map 负责将数据拆分成很多份,例如有100T的数据,在里面找一个数据,Map 就是先将这 100T数据拆分成一千份,每份100G,分发给各个节点,这样就将100T的数据转换成100G了,一千个节点同时查找提高效率。Reduce 就是将上面拆分给一千个节点的查询结果汇总起来,把结果收集起来,成为最终的结果。