Hadoop笔记
Hadoop的概念
- 可拓展:可以由一台服务器拓展到数千台计算机,每台计算机都提供本地计算和存储
- 可靠的:不依靠硬件来提供高可用性,而是在应用检测和处理故障,从而在计算机集群上提供高可用服务
Hadoop能用来做什么
- 搭建大型数据仓库
- PB级别的数据存储,处理,分析,统计业务
- 搜索引擎
- 日志分析
- 数据挖掘
- 商业智能(BI)
- Hadoop的发展史
- 2003-2004年Google发表了三篇论文
- GFS:Google File System 谷歌的分布式文件系统
- MapReduce: simplified Data Processing on Large Cluster
- BigTable: 一个大型的分布式数据库
- 2003-2004年Google发表了三篇论文
Hadoop的核心组件
-
Hadoop Distributed File System(HDFS)(存储数据的地方)
- 源于Google的GFS论文,论文发布于2003年10月
- HDFS是GFS的开源实现
- HDFS的特点:
- 拓展性
- 容错性
- 海量数据存储
- 将文件切分成指定大小的数据块,并在多台机器上面保存多个副本
- 数据切分,多副本,容错等操作对用户是透明的
-
Hadoop MapReduce (只能计算)
- 分布式计算框架
- 源于Google的MapReduce论文,论文发表于2004年12月
- MapReduce是GoogleMapReduce的开源实现
- MapReduce的特点:
- 拓展性
- 容错性
- 海量数据的离线处理
-
Hadoop YARN(资源调度系统)
- YARN: Yet Another Resource Negotiator
- 负责整个集群资源的管理和调度
- YARN的特点:
- 拓展性
- 容错性
- 多框架资源统一调度
Hadoop的优势
- 高可靠
- 数据存储:数据块多副本
- 数据计算:某个节点崩溃,会自动重新调度作业计算
- 高拓展性
- 存储/计算资源不够时,可以横向的线性拓展机器
- 一个集群中可以包含数以千计的节点
- 集群可以使用廉价机器,成本低
- Hadoop生态系统成熟
HDFS分布式文件系统架构
-
1个NameNode/NN(master)带DataNode/DN(Slaves)(Master-Slave结构)
-
1个文件会被拆分多个Block
-
NameNode(NN)
- 负责客户端请求响应
- 负责元数据(文件的名称,副本系数,Block存放的DN)的管理
- 元数据: MetaData 描述数据的数据称为元数据
- 监控DataNode健康状况 10分钟没有收到DataNode报告认为DataNode死掉了
-
DataNode
- 存储用户的文件对应的数据块
- 要定期向NN发送心跳信息,汇报本身及其所有的block信息,健康状况
-
分布式集群NameNode和DataNode部署在不同机器上
-
HDFS优缺点
- 优点
- 数据冗余 硬件容错
- 适合存储大文件
- 处理流式数据
- 可构建在廉价机器上
- 缺点
- 低延迟的数据访问
- 小文件存储
- 优点
YARN资源调度框架
-
YARN的基本概念
- Yet Another Resource Negotiator,另一种资源协调者
- 通用资源管理系统
- 为上层应用统一的资源管理和调度,为集群在利用率,资源统一管理和数据共享等方面带来了巨大好处
-
YARN的产生背景
-
通用资源管理系统
- Hadoop数据分布式存储(数据分块,冗余存储)
- 当多个MapReduce任务要用到相同hdfs数据,需要进行资源调度管理
- Hadoop1.x时并没有YARN,MapReduce既负责进行计算作业又处理服务器集群资源调度管理
-
服务器集群资源管理和MapReduce执行过程耦合在一起带来的问题
-
Hadoop早期,技术只有Hadoop,这个问题不明显
-
随着大数据技术的发展,Spark Storm … 计算框架都要用到服务器集群资源
-
如果没有通用的资源管理系统,只能为多个集群分别提供数据
-
资源利用率低,运维成本高
-
有了YARN框架 就会如下图 资源最大化利用
-
-
Yarn(Yet Aother Resource Negotiator)另一种资源调度器
- Mesos大数据资源管理产品
-
-
不同的计算框架可以共享同一个HDFS集群上的数据,享受整体的资源调度
-
-
YARN的架构和执行流程
-
ResourceManager:RM资源管理器 整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度,处理客户端的请求:submit,kill监控我们的NM,一旦某个NM挂了,那么该NM上运行的任务需要告诉我们的AM(Application Master)来如何进行处理
-
NodeManager:MN节点管理器,整个集群中有多个,负责自己本身节点资源管理和使用,定时向RM汇报本节点的资源使用情况,接收并处理来自RM的各种命令:启动Container处理来自AM的命令
-
ApplicationMaster:AM每个应用程序对应一个:MR,Spark,负责应用程序的管理为应用程序向RM申请资源,分配给内部task需要与NM通信:启动/停止task,task是运行在container里面,AM也是运行在container里面
-
Container容器:封装了CPU,Mermery等资源的一个容器,是一个任务运行环境的抽象
-
Client:提交作业 查询作业的运行进度,杀死作业
-
MapReduce分布式处理框架
-
MapReduce的基本概念
- 源于Google的MapReduce论文(2004年12月)
- Hadoop的MapReduce时Google论文的开源实现
- MapReduce的优点:海量数据离线处理,易开发
- MapReduce的缺点:实时流式计算
-
MapRdeduce编程模型
-
MapReduce分而治之的思想
- 数钱实例:一堆钞票,各种面值分别是多少
- 单点策略
- 一个人数所有的钞票,数出各种面值有多少张
- 分治策略
- 每个人分得一堆钞票,数出各种面值有多少张
- 汇总,每个人负责统计一种面值
- 解决数据可以切割进行计算的应用
- 单点策略
- 数钱实例:一堆钞票,各种面值分别是多少
-
MapReduce编程分Map和Reduce阶段
- 将作业拆分成Map阶段和Reduce阶段
- Map阶段 Map Tasks 分:把复杂的问题分解为若干"简单的任务"
- Reduce阶段: Reduce Tasks 合:reduce
-
MapReduce编程执行步骤
- 准备MapReduce的输入数据
- 准备Mapper数据
- Shuffle
- Reduce处理
- 结果输出
-
编程模型
-
借鉴函数式编程方式
-
用户只需要实现两个函数接口:
-
Map(in_key,in_value)
—>(out_key,intermediate_value) list
-
Reduce(out_key,intermediate_value) list
—>out_value list
-
-
Word Count 词频统计案例
-
-
MapReduce架构
-
MapReduce架构 1.X
-
JobTracker:负责接收客户作业提交,负责任务到作业节点上运行,检查作业的状态
-
TaskTracker:由JobTracker指派任务,定期向JobTracker汇报状态,在每一个工作节点上永远只会有一个TaskTracker
-
-
MapReduce2.X架构
-
ResourceManager:负责资源的管理,负责提交任务到NodeManager所在的节点运行,检查节点的状态
-
NodeManager:由ResourceManager指派任务,定期向ResourceManager汇报状态
-
-
-