一、认识Hadoop框架
1.What——什么是Hadoop?
Hadoop由Apache基金会开发, 开源的、可靠的 、可拓展的、用于分布式计算 的分布式系统基础架构或框架。
2. Hadoop框架核心
(1) 分布式文件系统——HDFS
(2) 分布式计算框架——MapReduce
① Map(映射)
② Reduce(规约)
(3) 资源管理器——YARN
资源管理器,提高资源在集群中的利用率,提高执行效率
3. 了解Hadoop发展历史
4. 了解Hadoop的特点
① 高容错性
② 高可靠性
③ 高扩展性
Hadoop是在可用的计算机集群间分配数据并完成计算任务的。为集群添加新的节点并不复杂,因此集群可以很容易地进行节点的扩展,以扩大集群。
④ 高效性
⑤ 低成本
⑥ 可构建在廉价机器上
Hadoop不要求机器的配置达到极高的水准,大部分普通商用服务器即可满足要求,通过提供多个副本和容错机制提高集群的可靠性。
⑦ Hadoop基本框架用Java语言编写
Hadoop是一个用Java语言开发的框架,因此运行在Linux 系统上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,如C++和Python。
二、了解Hadoop核心组件
1. Hadoop有3大核心组件
分别是分布式文件系统HDFS、分布式计算框架MapReduce和集群资源管理器YARN。
2. 分布式文件系统——HDFS
(1) HDFS简介及架构
HDFS文件系统主要包含一个NameNode、一个Secondary NameNode和多个DataNode。
1)NameNode.
是文件和目录自身的属性信息,如文件名、目录名、父目录信息、文件大小、创建时间、修改时间等;
是文件内容存储的相关信息,如文件分块情况、副本个数、每个副本所在的DataNode 信息等;
是HDFS中所有DataNode的信息,用于管理DataNode。
在NameNode 中存放元数据的文件是fsimage 文件。
在系统运行期间,所有对元数据的操作均保存在内存中,并被持久化到另一个文件edits中。
当NameNode启动时,fsimage文件将被加载至内存,再对内存里的数据执行edits文件中所记录的操作,以确保内存所保留的数据处于最新的状态。
(2) Secondary NameNode。
(3)DataNode.
图:
(2)分布式原理
HDFS作为一个分分布式系统可以划分成多个子系统或模块,各自运行在不同的机器上,子系统或模块之间通过网络通信进行协作,实现最终的整体功能。利用多个节点共同协作完成一项或多项具体业务功能的系统即为分布式系统。
分布式文件系统,主要体现在3个方面
图:
① 冗余备份——在数据存储的过程中,对每个数据块都进行了副本备份,副本个数可以自行设置。
② 副本存放——目前使用的策略是,以存放3个副本(dfs.replication=3)为例,在同一机器的两个节点上各备份一个副本,再在另一台机器的某个节点上存放一个副本,前者可防止当该机器的某个节点宕机使可恢复数据,后者则防止当某个机器宕机时可恢复数据。
③ 宕机处理
A. 如果NameNode在预定的时间内没有收到心跳信息(默认是10min),将该DataNode从集群中移除。
B. 当HDFS读取某个数据块时,如果正好存储该数据块的某个节点宕机了,那么客户端将会在存储该数据块的其他节点上读取数据块信息。
C. 当HDFS存储数据时,如果需要存放数据的节点宕机,那么HDFS将再重新分配一个节点给该数据块,并备份宕机节点中的数据。
(4)HDFS特点
① HAFS——优点
A. 高容错性
HDFS上传的数据自动保存多个副本,通过增加副本的数量增加HDFS的容错性,如果某一个副本丢失,那么HDFS将复制其他节点上的副本。
3. 了解分布式计算框架——MapReduce
(2) MapReduce工作原理
一个完整的MapReduce过程包含数据的输入与分片、Map阶段数据处理、Shuffle&Sort阶段数据整合、Reduce阶段数据处理、数据输出等阶段。
① 根据设置的分片大小划分文件,得到一到多个文件块,一个文件块对应一个Map
② 针对所有键相同的数据,对其值进行整合
③ 整合后的数据传送到Reduce端处理
图:
(3)了解HDFS
① 读取输入数据
从HDFS分布式文件系统中读取的,根据所设置的分片大小对文件重新分片(Split)。
② Map阶段
数据将以键值对的形式被读入,键的值一般为每行首字符与文件最初始位置的偏移量,即中间所隔字符个数,值为该行的数据记录。
根据具体的需求对键值对进行处理,映射成新的键值对,将新的键值对传输至Reduce端。
③ Shuffle&Sort阶段
将同一个Map中输出的键相同的数据先进行整合,减少传输的数据量,并且在整合后将数据按照键进行排序。
④ Reduce阶段
针对所有键相同的数据,对数据进行规约,形成新的键值对。
4. 了解集群资源管理器——YARN
(1) YARN简介
① YARN是Hadoop的资源管理器,提交应用至YARN上执行可以提高资源在集群的利用率,加快执行速率。
② Hadoop YARN的目的是使得Hadoop数据处理能力超越MapReduce。
③ YARN的另一个目标就是拓展Hadoop,使得YARN不仅可以支持MapReduce计算,而且还可以很方便地管理如Hive、HBase、Pig、Spark/Shark等组件的应用程序。
(2)YARN的基本架构和任务流程
A. YARN的基本组成结构 YARN主要由ResourceManager、NodeManager、ApplicationMaster和Client Application这4部分构成。
图:
① ResourceManager(简称RM):一个全局的资源管理器,负责整个系统的资源管理和分配,主要由两个组件构成,即调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。
调度器负责将系统中的资源分配给各个正在运行的应用程序,不从事任何与具体应用程序相关的工作,如监控或跟踪应用程序的执行状态等,也不负责重新启动因应用程序行失败或硬件故障而导致的失败任务。
应用程序管理器负责处理客户端提交的任务以及协商靠前个Container(包装资源的对象)以供ApplicationMaster 运行,并且在Application Master失败时会将其重新启动。其中,Container 是YARN中的资源承载,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。当Application Master 向 ResourceManager 申请资源时,ResourceManager为ApplicationMaster 返回的资源就是使用Container 表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container 中描述的资源。
④ Client Application:客户端应用程序。客户端将应用程序提交到ResourceManager时,首先将创建一个Application 上下文对象,再设置 ApplicationMaster 必需的资源请求信息,最后提交至ResourceManager。
(2)YARN的工作流程。
YARN从提交任务到完成任务的整个工作流程如下:
YARN的工作流程:
① 用户通过客户端提交一个应用程序到YARN中进行处理,其中包括 ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
②ResourceManager 为该应用程序分配靠前个Container,并与分配的Container 所在位置的NodeManager 通信,要求NodeManager 在这个Container 中启动应用程序的ApplicationMaster。该Container 用于启动 ApplicationMaster 和 ApplicationMaster后续的命令。
③ ApplicationMaster 启动后先向 ResourceManager 注册,这样用户就可以直接通过ResourceManager 查看应用程序的运行状态,再为提交的应用程序所需要执行的各个任务申请资源,并监控任务的运行状态,直至运行结束,即重复步骤④~⑦。图1-7所示的示例应用程序需要执行两个Map任务和一个Reduce任务,因此需要轮番执行步骤④~⑦共3次,先执行Map任务,再执行Reduce任务。
④ ApplicationMaster 采用轮询的方式通过远程进程调用(Remote Procedure Call,RPC)协议向ResourceManager 申请和领取资源。因此多个应用程序同时提交时,不一定是靠前个应用程序先执行。
⑤一旦 ApplicationMaster 申请到资源,便与资源对应的 NodeManager 通信,要求NodeManager 在分配的资源中启动任务。
⑥NodeManager 为任务设置好运行环境(包括环境变量、Jar包、二进制程序等)后,将任务启动命令写入一个脚本中,并通过运行该脚本启动任务。
⑦ 被启动的任务开始执行,各个任务通过某个RPC 协议向 ApplicationMaster 汇报运行的状态和进度,以便让ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC协议向ApplicationMaster查询应用程序的当前运行状态。
⑧应用程序运行完成后,ApplicationMaster 向ResourceManager进行注销,释放资源。
⑨关闭客户端与 ApplicationMaster。
三、了解Hadoop生态系统
1. Hbase
2. Hive
应用场景:
大数据集的批处理作业,如网络日志分析
3. Pig
4. Sqoop
应用场景:
对于结构化数据库,采用Sqoop进行数据传输是合适的,可以实现结构化数据库中的数据并行批量人库至HDFS进行存储。
5. Flume
应用场景:
日志文件的采集。
6. Oizie
7. ZooKeerer
8. Mahout
四、了解Hadoop应用场景

QQ客服