Hadoop是一个由Apache基金会开发的一个分布式系统基础架构。
分布式,指多台机器共同来完成一项任务。
用途:解决海量数据的存储和分析计算问题
广义上来讲,Hadoop通常是指一个更广泛的概念:Hadoop生态圈。包含了很多基于Hadoop架构衍生发展出来的其他的东西,如HBASE等
创始人Doug Cutting,他最初的目的是为了实现与Google类似的全文搜索功能,于是他在Lucene框架的基础上进行优化升级,查询引擎和索引引擎。
2001年底,Lucene框架称为Apache基金会的一个子项目。
对于海量数据的场景,Lucene同样遇到了跟Google一样的困难:海量数据存储难、海量的检索速度慢。
Doug 模仿Google,提出了一个微型版Nutch来解决这个问题。他基于谷歌提出的三篇论文,分别提出了HDFS、MR、HBase,因为可以认为Google是Hadoop的思想之源。
2006.03,MR和Nutch Distributed File System(NDFS)分别被纳入到了Hadoop项目中,Hadoop正式诞生。
Hadoop这个名字和logo来源于Doug儿子的玩具大象。
Hadoop有三大发型版本:Apache、Cloudera、Hortonworks。
Apache版本,最原始且最基础的版本,非常适用于入门学习,开源,2006年正式提出。
Cloudera版本,在原始版本基础上集成了大量的大数据框架,2008年推出,对应商用产品CDH。
Hortonworks版本,也封装了自己的一套,2011年推出,对应产品HDP。
目前,Hortonworks已经被Cloudera公司收购,推出新的品牌CDP。
后两个版本都是商业收费的。
Cloudera,08年成立,是最早将Hadoop商用的公司,为合作伙伴提供商业解决方案。09年,Hadoop的创始人cutting也加入了该公司。
Hortonworks,2011年成立,主体是雅虎
Hadoop1.x的组成:
MR耦合性较大。
Hadoop2.x的组成:
可以看到,资源调度和计算已经分离了。
Hadoop3.x跟2.x相比,在组成上没有区别。
Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。
负责海量数据的存储。
NameNode:存储文件的元数据,如文件名、文件目录结构、文件属性、每个文件的块列表以及每个块所在的DataNode,简称叫做nn;
DataNode:是具体存储数据的位置,也负责块数据的校验和。
2NN:辅助NameNode的工作。每隔一段时间对NameNode元数据备份。
Yet Another Resource Negotiator,简称YARN,是一种资源协调者,是Hadoop的资源管理器。
YARN的两个核心组成组件:
NodeManager中,单个任务会被放在一个container中来执行,待执行完成后,就直接释放掉整个container。
客户端提交job到ResourceManager,由ResourceManager负责协调指挥NodeManager们的工作。
客户端可以有多个;集群上可以运行多个ApplicationMaster;每个NodeManager可以有多个Container。
一个contrainer容器分配的内存,是1G~8G,最少一个CPU。
负责计算。
将计算过程分成两部分:
举例说明:
假设我有一万篇笔记,我想找到其中一篇,
如果我自己找的话,需要一个人看完这1w篇笔记;
但是我可以找100个人帮我一起找,把这1w篇笔记分成100组,给那100个人,然后每个人看100篇文档。(这就是Map的过程)
最后每个人再把查的结果反馈给我,我做下汇总,就可以知道我想要找的那篇在哪儿了。这个过程就是Reduce。
觉得需要注意的一点是,client提交任务到YARN的ResourceManager之后,ResourceManager会在任一节点启动一个Container,运行一个App Mstr,这个App Mstr比较重要。
接下来的流程,按我的理解是这样的:
首先App Mstr会计算当前任务运行所需的资源等,并向ResourceManager发出资源申请,告诉它,我需要xx个节点来运行我的任务;
其次当ResourceManager按照App Mstr的要求,为它分配了xx个节点之后,App Mstr会在这些节点上分别启动MapTask进行计算。
最后会在某个节点上启动一个ReduceTask,来汇总各个MapTask的结果。
再最后,ReduceTask的执行结果,可能会写入HDFS的DataNode,做持久化保存。
上图举例了一个经典的大数据技术生态体系,从图上来看,
数据来源层,分这么三大类:
数据传输层,即分别使用什么方式,来采集不同来源的数据:
数据存储层,
资源管理层:
数据计算层:
任务调度层:
贯穿各层的,负责数据平台配置和调度的:
业务模型层:
图中涉及到的技术名词进行解释:
教程讲到这里还给了一个推荐系统的框架图,以简单的实例来讲解,大数据这些框架是如何结合在一起来解决实际问题的。