Hadoop
- Hadoop的介绍
- Hadoop有什么优点
- Hadoop发展史(了解)
- Hadoop三大发行版本
- Hadoop的组成
- Hadoop组成一:HDFS
- Hadoop组成二:MapReduce
- Hadoop组成三:Yarn
Hadoop的介绍
- (1) Hadoop是什么?
1.狭义:Hadoop是一个有Apache基金会所开发的分布式系统(软件)基础架构
2.广义:Hadoop通常是指一个更广泛的概念——Hadoop生态圈。
- (2) Hadoop有什么用?
主要解决,海量数据的存储和海量数据的分析计算问题。
Hadoop有什么优点
- (1) Hadoop有4个优点
高可靠性:多副本(一份数据在从节点上存多份)
高扩展性:修改配置文件(即增加节点)
高效性:并行(在多个从节点上搜索数据)
高容错性:重新分配(就比如一堆数据需要求平均数,在节点1算完, 节点2算完,结果在节点3出错。此时并不需要全部重新开始计算,只需在出错的节点,即节点3重新计算即可)
Hadoop的结构主要是主从结构,分而治之。即一个主节点配有多个从节点。
Hadoop发展史(了解)
- (1) 创始人是谁?
Hadoop创始人Doug Cutting,编写Lucene框架与Hadoop
- (2) Lucene框架是什么
Lucene框架是与Google类似的全文搜索功能
- (3) Lucene有什么特点
Java编写,开源,完整的查询引擎和索引引擎
- (4) 搜索的难题是什么
对于海量数据的场景,Lucene面对与Google同样的困难,存储数据困难,检索速度慢。
- (5) 难题如何解决?
参考Google在大数据方面的三篇论文,编写微型版Nutch
,后来,Google公开了部分GFS和Mapreduce思想的细节,DFS和MapReduce机制,使Nutch性能飙升
GFS —>HDFS Map-Reduce ----->MR BigTable ---->HBase
- (6) Hadoop
Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入称为Hadoop的项目
Hadoop三大发行版本
- (1)发行版是什么?
内核和一批有用的程序的的一个集合体比如Linux内核+应用软件
- (2)三个发行版是什么?
Hadoop三大发行版本:Apache,Cloudera,Hortonworks
- (3)三个发行版的区别什么?
Apache版本最原始(最基础)的版本,对于入门学习最好(免费)
Cloudera在大型互联网企业中用的较多(服务收费CDH)
Hortonworks文档较好(收费HDH)
Hadoop的组成
- (1)Hadoop的架构分为几部分?(或者由几部分组成)
1.x由hdfs,mapreduce,common
2.x由hdfs,mapreduce,yarn,common
- (2)因为1.x与2.x的架构发生重大变化(面试重点)
1.x中,MapReduce做两件事:计算+资源调度
2.x中,MapReduce只做一件事:计算,资源调度由Yarn负责
- (3)区别
2.x增加了Yarn
Hadoop组成一:HDFS
- (1)什么是HDFS?
HDFS(Hadoop Distributed File System)
- (2)HDFS由3部分组成
1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等.
2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
3)Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照.保持同步。
类似图书管借书,NameNode就好比仓库管理员,DataNode就是小仓库。Secondary NameNode就是NameNode的备胎
。数据是分布在不同的书架上,但是每次借还都需要通过前台系统查找。
Hadoop组成二:MapReduce
- (1)什么是MapReduce?
Hadoop中负责计算的部分
- (2)MapReduce将计算过程分为两个阶段:Map和Reduce
1)Map阶段并行处理输入数据
2)Reduce阶段 MapR进行汇总
- (3)分而治之
Hadoop组成三:Yarn
- (1)什么是Yarn?
Hadoop中负责资源调度的部分
- (2)Yarn由4部分组成
ResourceManager(RM)
NodeManager(NM)
ApplicationMaster(AM)
Container
- (3) YARN架构
简单来说ResourceManager就相当于部门经理,NodeManager就相当于小组长,ApplicationMaster就相当于程序猿,管理运行程序的。
一份资源过来,先经过ResourceManager部门经理,分配给NodeManager。NodeManager小组长也不干活,抛给最小的小弟ApplicationMaster来管理运行程序,当ApplicationMaster分配时就虚拟出一个Container,相当于资源的代练。然后Container就分给程序跑,跑完之后就可以回收了。
注意Yarn不参与计算,也不参与存储,存储是DFS的事情。是硬盘方面的问题。计算是程序算法的问题。
Yarn是管CPU跟内存的,管计算资源的