一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++
[第八章]Hadoop再探讨
Hadoop优化发展
- Hadoop局限
- 抽象层次低,需要人工编码
- 实时性差
- 浪费资源(Map和Reduce分两阶段执行)
- 执行迭代效率差
- 改进
- MapReduce和HDFS架构设计改进
- HDFS HA热备份
- HDFS联邦,管理多命名空间,实现资源隔离
- MapReduce设计新的管理架构YARN,资源管理效率提高
- 融入更多组件
- Pig大规模脚本语言
- Oozie协调不同任务
- Tez减少不必要操作
- Kafka实时高效资源交换
HDFS2.0
HDFS HA
两个名称节点,一个活跃,一个待命。两个信息同步,可以热备份。一旦活跃节点故障,立即切换待命节点
HDFS 联邦(Federation)
设计多个独立名称节点,组成整个名称节点,实现水平扩展,实现资源隔离
- 访问方式
- 各个命名空间挂载在全局“挂载表”中,实现数据全局共享
YARN
MapReduce缺陷
- 单点故障
- JobTracker任务过重
- 容易出现内存溢出
- 资源划分不合理,等量划分
YARN体系结构
ResourceManager
资源管理
- 调度器:接收ApplicatonMaster请求,分配
- 应用程序管理器
- 容器:资源分配的单位
ApplicationMaster
调度监控
- 用户提交时,与ResourceManager协商获取资源
- 获取资源进一步分配给内部的各个任务
- 定时发送“心跳”信息报告资源使用情况和进度信息
NodeManager
执行TaskTracker任务,管理抽象容器
- 容器生命周期管理
- 监控容器资源使用情况,并心跳汇报
- 跟踪节点健康状况
大大降低JobTracker负担
工作流程⭐

- 客户端向YARN提交一个作业(Application)。
- 作业提交后,RM根据从NM收集的资源信息,在有足够资源的节点分配一个容器,并与对应的NM进行通信,要求它在该容器中启动AM。
- AM创建成功后向RM中的ASM注册自己,表示自己可以去管理一个作业(job)。
- AM注册成功后,会对作业需要处理的数据进行切分,然后向RM申请资源,RM会根据给定的调度策略提供给请求的资源AM。
- AM申请到资源成功后,会与集群中的NM通信,要求它启动任务。
- NM接收到AM的要求后,根据作业提供的信息,启动对应的任务。
- 启动后的每个任务会定时向AM提供自己的状态信息和执行的进度。
- 作业运行完成后AM会向ASM注销和关闭自己。
发展目标
- 一个集群多个框架
- 计算资源的统一的资源调度管理服务、根据各种计算框架的负载需求,调整各自占用的资源
其他功能组件
Pig
- 能自动转换成MapReduce作业的脚本
Tez
- Map、Reduce进一步拆分,省去多余的Map阶段,减少不必要的操作
Spark
- 内存运算,更高的迭代运算效率
Kafka
- 分布式,高吞吐量的数据交换消息系统
Prev
[第七章]MapReduce
Next
[第九章]数据仓库Hive
Loading...