大数据系列视频教程 https://edu.hellobi.com/course/93
1、Hadoop的前世今生
Hadoop : https://hadoop.apache.org/,hadoop经过几年的发展之后已经形成了自有的技术生态系统,如课程后续要讲到的hive hbase zookeeper等都是这个生态系统中的一员。首先我们一起来回顾一下hadoop的前世今生~
Hadoop最早起源于Nutch,这在前面的视频开源组件介绍中有提及,Nutch是一个开源的搜索引擎由一个叫Doug Cutting的大牛在2002年的时候开发完成,原本Nutch的目标是为了构建一个大型的搜索引擎,涵盖网页爬取、索引、查询等一些功能,但随着网页爬取的数量不断增加,此时对于存储和索引就形成了比较严重的瓶颈问题。
三驾马车是指的google发表的三篇论文原文链接:GFS,MapReduce,BigTable,这三篇论文堪称大数据领域的开篇巨作,也由此拉开了至今为止都非常hot的大数据应用。2003年google首先发表了GFS(Google File System),这篇文章描述了Google网页爬取相关数据的存储架构,在随后的2004年又发表了分布式计算框架的论文MapReduce,此文论述了Google内部使用的分布式计算框架的核心思想。
这两篇论文都是提出了设计思想和框架,没有开源代码,所以由Doug Cutting带领的Nutch团队在发现这两者可以解决他们所面临的问题后自己动手开发了一套存储架构叫Nutch Distributed File System(NDFS)和分布式计算框架MapReduce,2006年时,由于这两个项目不仅可以应用于搜索领域,所以Nutch团队将这两个项目从Nutch中移出Nutch,成为Lucene的一个子项目,此时,这个子项目被命名为Hadoop,同时NDFS被更名为HDFS(Hadoop Distributed File System)。与此同时,Doug Cutting这位大牛加入Yahoo!后组了一个团队专门开发Hadoop,在2006年的2月,Apache Hadoop项目正式启动使得HDFS和MapReduce独立发展,2年之后,也就是2008年,Hadoop成为了Apache的顶级项目。
2、Hadoop架构变化
Hadoop的版本更迭非常快速,从0.x到1.x再到现在的2.7.3,我们不去详细的看每一个版本有什么新特性,而是着眼于Hadoop在它的发展历程中所经历的比较重大的2个MapReduce(后续简称为MR)架构,分别成为MRv1和MRv2。
第一个是在Hadoop 2.x之前的版本MR v1,此时的MR主要有2个服务进程:JobTracker和TaskTracker,这哥俩具体是干什么的会在后续视频中有介绍,而Hadoop集群的资源调度和作业调度都是由JobTracker来控制的,这就造成了JT这个服务进程以及运行JT节点的压力过大,容易造成单点故障等问题。
从Hadoop 2.x之后,也就是MR v2开始之后,整个架构对于资源调度和作业调度进行了分离,将原来由JT负责的资源调度和管理分成对于每一个作业运行所需资源的资源协调器来负责,这个资源协调器被称为YARN(Yet Another Resource Negotiator),对于整个集群来说,将资源调度和作业调度分开,也更为合理。在YARN中,由RM负责资源的协调和调度,而运行于从节点上的NM则负责对应Task所需资源的申请和该节点资源使用情况的汇报。
3、Hadoop 的主要模块
发展到今天,Hadoop项目在不断优化,其模块由最初的HFDS和MapReduce演变成现在的四个:
- Hadoop Common,支持Hadoop其他模块的通用工具
- HDFS,Hadoop的分布式文件系统,提供了高吞吐量的数据访问
- YARN,作业调度和资源管理的一个框架
- MapReduce,基于YARN的大数据分布式计算框架
由这4个主要模块构成了Hadoop的主体。