Hadoop 大数据技术原理与应用
大数据概述
定义
特征
- 大量,多样,高速,价值
研究意义
应用场景
- 医疗,金融,零售
Hadoop 概述
历史
优势
- 扩容能力强,成本低,高效率,可靠性,高容错
Hadoop 生态
- 分布式存储系统(HDFS)
- 分布式计算框架(MapReduce)
- 资源管理(YARN)
- 数据迁移(Sqoop)
- 数据挖掘算法库(Mahout)
- 分布式数据库(HBase)
- 分布式协调服务(Zookeeper)
- 数据仓库(Hive)
- 日志收集(Flume)
版本
搭建 Hadoop 集群
安装准备
- 虚拟机安装
- Linux 网络配置
- SSH 服务配置
Hadoop 集群搭建
- 部署模式
- JDK 安装
- Hadoop 安装
- Hadoop 集群配置
测试
- 格式化文件系统
- 启动
- 通过 UI 查看运行状态
HDFS 分布式文件系统
简介
-
演变
-
基本概念
- 名称节点(NameNode)
- 数据节点(DataNode)
- 数据块(Block)
- 机架(Rack)
- 元数据(Metadata)
-
特点
- 优点:高容错,流式数据访问,支持超大文件,高数据吞吐量,可构建在廉价的机器上
- 缺点:高延迟,不适合小文件存储场景,不适合并发写入
存储架构
文件读写原理
Shell 操作
Java API 操作
MapReduce 分布式计算框架
概述
-
核心思想
- 分而治之
- Map 阶段:任务分解
- Reduce 阶段:任务合并
-
MapReduce 编程模型
-
实例
- 词频统计
工作原理
-
MapReduce 工作过程
- 分片,格式化数据源
- 执行 MapTask
- 执行 Shuffle 过程
- 执行 Reduce Task
- 写入文件
-
MapTask 工作原理
- Read
- Map
- Collect
- Spill
- Combine
-
ReduceTask 工作原理
- Copy
- Merge
- Sort
- Reduce
- Write
-
Shuffle 工作原理
编程组件
- InputFormat
- Mapper
- Reducer
- Partitioner
- Combiner
- OutputFormat
运行模式
- 本地运行模式
- 集群运行模式
性能优化
案例
- 倒排索引
- 数据去重
- TopN
Zookeeper 分布式协调服务
初识
-
简介
-
特性
- 全局数据一致性,可靠性,顺序性,数据更新原子性,实时性
-
角色
- Leader
- Follower
- Observer
数据模型
-
数据存储结构
-
Znode
- 类型
- 属性
Watch 机制
-
简介
-
特点
- 一次性触发,事件封装,异步发送,先注册再触发
-
通知状态
-
事件类型
选举机制
-
简介
- 服务器 ID
- 选举状态
- 数据 ID
- 逻辑时钟
-
类型
- 全新集群选举
- 非全新集群选举
分布式集群部署
- 下载安装
- 相关配置
- 服务的启动与关闭
Shell 操作
Java API
应用场景
- 数据发布与订阅
- 统一命名服务
- 分布式锁
Hadoop 2.0 新特性
改进与提升
YARN 资源管理框架
-
体系结构
- ResourceManager
- NodeManager
- ApplicationMaster
-
工作流程
HDFS 的高可用
- 高可用架构
- 搭建高可用集群
Hive 数据仓储
简介
-
数据仓库
-
面向主题
-
随时间变化
-
相对稳定
-
结构
- 数据源
- 数据存储及管理
- OLAP 服务器
- 前端工具
-
数据模型
- 星状模型
- 雪花模型
-
-
Hive
-
简介
-
系统架构
-
用户接口
- CLI
- JDBC/ODBC
- WebUI
-
跨语言服务
-
底层的驱动引擎
- 编译器
- 优化器
- 执行器
-
元数据存储系统
- Derby(默认)
- MySQL
-
-
工作原理
-
数据模型
- 数据库
- 表
- 分区
- 桶表
-
安装
-
安装模式
- 嵌入
- 本地
- 远程
管理
- CLI 方式
- 远程服务
内置数据类型
数据模型操作
- 数据库操作
- 内部表操作
- 外部表操作
- 分区表操作
- 桶表操作
数据操作
Flume 日志采集
概述
-
简介
-
运行机制
- Source(数据采集器)
- Channel(缓冲通道)
- Sink(接收器)
-
结构图
- 简单结构
- 复杂结构
基本使用
-
系统要求
-
安装配置
-
入门使用
- 配置采集方案
- 使用指定采集方案启动 Flume
- Flume 采集数据测试
采集方案配置说明
可靠性保证
- 负载均衡
- 故障转移
拦截器
- Timestamp
- Static
- Search and Replace
实例
Azkaban 工作流管理
概述
-
工作流管理器
-
工作流调度系统背景
-
常用工作流管理器
- Oozie
- Azkaban
- Zeus
-
-
Azkaban
-
特点
- 兼容任何版本的 Hadoop
- 易用的 Web UI
- 简单的 Web 和 HTTP 工作流上传
- 支持工作流定时调度
- 支持模块化和可插入
- 支持身份验证和授权
- 支持用户操作跟踪
- 支持有关失败和成功的电子邮件提醒
- 提供 SLA 警报和自动查杀功能
-
组成结构
- Relational Database
- Azkaban Web Server
- Azkaban Executor Server
-
部署模式
- sole servere mode
- two server mode
- distributed multiple-executor mode
-
部署
-
资源准备
- 下载源文件
- 编译源文件
- 安装包获取
-
安装配置
- MySQL 安装配置
- Web 服务安装配置
- Executor 服务安装配置
-
启动测试
使用
-
工作流相关概念
- job 任务
- 工作流
- 嵌入流
-
案例
Sqoop 数据迁移
概述
- 简介
- 原理