1.《大数据之路》36/339
2.Google-MapReduce 3.6
3.个人简历技能熟悉:
3.1 Hadoop基础
概述
Hadoop是一个分布式系统基础架构,主要是为了解决海量数据的存储和海量数据的分析计算问题
Hadoop核心组件
自诞生以来,Hadoop主要有1.x,2.x,3.x三个系列多个版本;
Hadoop1.x组成有:HDFS(具有高可靠性、高吞吐量的分布式文件系统,用于数据存储),
MapReduce(同时处理业务逻辑运算和资源的调度),Common(辅助工具,为其它Hadoop模块提供基础设施)
Hadoop2.x和Hadoop3.x组成上无变化,和Hadoop1.x相比,增加YARN,分担了MapReduce的工作,组件包括:HDFS,MapReduce(处理业务逻辑运算),YARN(负责作业调度与集群资源管理),Common(辅助工具,为其它Hadoop模块提供基础设施)。

HDFS是一个文件系统,用于存储文件,通过目录树来定位文件,其次是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。HDFS适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后久不需要改变。
MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一 个Hadoop集群上。
MapReduce将计算过程分为两个阶段:Map和Reduce
Map阶段并行处理输入数据
Reduce阶段对Map结果进行汇总
YARN是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。
Common是Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。
Hadoop特点:
1)高可靠性
Hadoop底层维护多个数据副本,即使Hadoop某个计算元素或存储出现故障时,也不会导致数据的丢失。
2)高扩展性
在集群间分配任务数据,可方便的扩展数以千计的节点
3)高效性
在MapReduce的思想下,Hadoop是并行工作,加快任务处理速度
4)高容错性
能够自动将失败的任务重新分配
Hadoop生态圈组件及其作用
1)Zookeeper:是一个开源的分布式应用程序协调服务,基于Zookeeper可以实现同步服务,配置维护,命名服务。
2)Flume:是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统
3)Hbase:是一个分布式的、面向列的开源数据库,利用Hadoop HDFS作为其存储系统
4)Hive:基于Hadoop的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
5)Sqoop:将一个关系型数据库中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库。
Hadoop集群工作时启动哪些进程?有什么作用?
1)NameNode
就是Master,Hadoop的主管、管理者
a.管理HDFS的名称空间
b.配置副本策略
c.管理数据块(Block)映射信息
d.处理客户端读写请求
2)DataNode
就是Slave。NameNode下达命令,DataNode执行实际的操作。
a.存储实际的数据块
b.执行数据块的读/写操作
3)Secondary NameNode
当NameNode挂掉的时候,提供周期检查点和清理任务,帮助NN合并editslog,减少NN启动时间。
a.辅助NameNode,分担其工作量,如定期合并Fsimage和Edits,并推送给NN
b.在紧急情况下,辅助回复NameNode
4)ResourceManager(JobTracker)
整个集群资源的老大,负责集群中所有资源的统一管理和分配,接受来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(即ApplicationMaster)
a.与客户端交互,处理来自客户端的请求
b.启动和管理ApplicationMaster,并在它运行失败时重新启动它
c.管理NodeManager,接受来自NodeManager的资源管理汇报信息,并向NodeManager下达管理命令
d.资源管理与调度,接受来自ApplicationMaster的资源申请请求,并为之分配资源(核心)
5)NodeManager(TaskTracker)
NM是YARN中单个节点的代理(单个节点服务器资源老大),它需要与应用程序的ApplicationMaster和集群管理者ResourceManager交互;
从ApplicationMaster上接收有关Container的命令并执行(比如启动、停止);
向ResourceManager汇报各个Container运行状态和节点健康状况,并领取有关Container的命令
NM管理的是Container而不是任务,一个Container可能运行着各种任务,但是对NM而言是透明的,它只负责Container相关操作,比如管理Container的生命周期,即启动Container、监控Container和清理Container等。
总结:
a.管理单个节点上的资源
b.处理来自ResoureManager的命令
c.处理来自ApplicationMaster的命令
6)JournalNode