Hadoop简介
- 解决了如何用大量计算机实现分布式计算
- GFS 分布式文件系统
- MapReduce 分布式并行编程框架
- 特性
- 可靠性,不会阻断
- 高效性,多计算机并行计算
- 可扩展性强,扩展节点
- 成本低,可以用普通的PC机构成集群
- 支持多种编程语言
- 应用:
- facebook、中国移动等
- 离线分析
- HIVE Pig
- MR
- 实时查询
- Solr Redis
- HBase
- Mahout
Hadoop2.0相对于1.0
- Hadoop2.0进行了全新构架,将原负责资源调动的部分抽取成YARN框架,同时MapReduce专门负责数据处理,Spark等都在YARN框架之上
- NN Federation新技术进行数据目录服务
选择Hadoop
- 是否开源 √
- 是否有稳定版 √
- 是否经实践检验 √
- 是否有强大的社区支持:易用性 √
Hadoop安装相关
-
shell命令
-
sudo命令
-
shift:切换中英文;复制粘粘命令透
-
单机模式:单Java进程
-
伪分布式模式
-
分布式模式
-
ctrl alt t 终端窗口
集群部署和使用
- -> NameNode(数据目录) -> DataNode(存储数据)
- JobTracker,TaskTracker
- NameNode:管理各种元数据并提供服务;很多元数据都是直接存入内存
测验
- Hadoop MapReduce针对谷歌MapReduce的开源实现,通常用于大规模数据集的并行计算;Hadoop2.0增加了NameNode HA 和Wire-compatibility两个重大特性;Hadoop核心是HDFS和MapReduce
- Google生态系统组件
- 核心:HDFA & MapReduce
- ZoopKeeper:Yahoo!针对谷歌Chubby的一个开源实现,是高效可靠的协同工具系统
- HBase:提供高可靠性、高性能、分布式的列式数据库,是Google BigTable的开源实现
- Hive:基于Hadoop数据仓库工具,用于对Hadoop文件的数据集进行数据整理、特殊查询和分析存储
- Pig
- Mahout
- Sqoop
- Flume
- Ambar
- …
实际操作
优化与发展
- 局限和不足
- 抽象层次低,人工编码
- 表达能力有限
- 难以看到程序整体逻辑
- 开发者自己管理作业之间的依赖关系
- 迭代操作效率第
- 实时性差
- 资源浪费
- 改进和提升
- 自身两大核心组件:MapReduce & HDFS
- 增加新的组件:Pig、Tez、Spark、Kafka
- 自身两大核心组件:MapReduce & HDFS
HDFS2.0
- HDFS
-
HDFS HA
-
HDFS Federation
-
存在问题:
- 单点故障
- 不可以水平扩展
- 系统整体性能受限于单个名称节点的吞吐量
- 单个名称节点难以提供不同程序之间的隔离性
- HDFS HA是热备份,提供高可用性,但是无法解决可扩展性、系统性能和隔离性
-
- MapReduce 1.0 与 YARN
- MP存在缺陷
- 存在单点故障
- JobTracker负载过重
- 容易出现内存溢出(内存不足)
- 资源划分不合理
- YARN
-
解决JobTracker:
- 三大功能拆分
- 三大功能拆分
-
在Hadoop2以后:
- MapR成为一个YARN之上的纯粹的计算框架,YARN成为专门管理资源的框架
-
体系结构
- ResourceManager
- 处理客户端请求
- 启动/监控AM,监控NM
- 资源分配与调动
- 两大组件
- 调动器
- 应用程序管理器
- ApplicationMaster
- 为应用程序申请资源并分配给内部任务
- 任务调动、监控与容错
- 当用户作业提交时,Application与ResourceManager协商获取资源
- 获得资源进行二次分配
- 与NM保持交互通信,进行应用程序的启动、运行、监控和停止
- 定时向RM发送心跳信息,报告资源的使用情况和应用进度
- 作业完成时向RM注销容器执行周期完成
- NodeManager
- 单个节点上的资源管理
- 处理来自RM的命令
- 处理AM命令
- 主要负责管理抽象容器,不会具体负责每个任务自身状态的管理
- ResourceManager
-
工作流程
- 用户编写客户端应用程序向YARN提交应用程序
- RM接受和处理来自客户端的请求,分配容器并启动
- Application被创建会首先向RM注册
- AM轮询向RM申请资源
- 容器中启动任务:运行环境和脚本
- 向AM汇报工作进度
- AM向RM管理器注销并关闭自己
-
与MP1.0对比
- 大大减少中心服务RM资源消耗
- AM需要大量资源消耗的任务调动和监控
- 多个作业对应多个AM实现监控分布化
- MP1.0即是一个计算框架,又是资源调度框架,但是只能支持MR编程模型
-
发展目标
- 一个集群多个框架
- MR实现离线批处理
- Impala实现交互式查询分析
- Storm实现流式数据实时分析
- Spark实现迭代计算
-
- MP存在缺陷
新组件
Pig
- Apache开源
- 代码量少
- 作用
- LOAD读取
- 转换语句进行处理
- 通过STORE语句把处理结果输出到文件上去/DUMP结果展示
- 过程
- 数据收集
- 数据加工
- 数据仓库
Tez
- 去除连续两个作业之间的写入HDFS
- 去除每个工作流中多余的Map
- (Tez+Hive)与Impala、Dremel&Drill的区别:
- 解决Hive、Pig延迟大,性能低等问题
Spark
- 延迟搞
- 每次都要从磁盘读数据
- 单线程
Kafka
- 高吞吐量的分布式发布订阅消息系统,用户可以发布大量消息,同时也能订阅消费信息
- 同时满足在线实时处理和批量离线处理