本书由浅入深地介绍了Hadoop技术生态的重要组件,让读者能够系统地了解大数据相关技术。第1章主要从整体上介绍了Hadoop大数据技术,并搭建Hadoop运行环境。第2~5章着重介绍了Hadoop核心技术,包括Hadoop分布式文件系统(HDFS)、Hadoop资源管理系统(YARN)、Hadoop分布式计算框架(MapReduce)以及ZooKeeper分布式协调服务。第6章重点介绍了Hadoop分布式集群的搭建以及集群的运维与管理。第7~8章详细介绍了Hive数据仓库和HBase分布式数据库等Hadoop的上层技术组件。第9章介绍了
Hadoop生态圈其他常用开发技术。第10~11章是项目实战,分别介绍了互联网金融项目离线分析、互联网直播项目实时分析。
本书采用理论知识和实战项目相结合的方式,突出实战,非常适合Hadoop 初学者及开发者阅读。本书既可以作为高等院校数据科学与大数据技术及相关专业的教材,也可以作为大数据工程师的必备开发手册。
前言
第1章 Hadoop技术概述1
1.1 Hadoop的前世今生1
1.1.1 Hadoop概述1
1.1.2 Hadoop项目起源1
1.1.3 Hadoop发展历程2
1.1.4 Hadoop名字起源2
1.2 Hadoop生态系统简介2
1.3 Hadoop的优势及应用领域4
1.3.1 Hadoop的优势4
1.3.2 Hadoop的应用领域4
1.4 Hadoop与云计算5
1.4.1 云计算的概念及特点5
1.4.2 Hadoop与云计算的关系6
1.5 Hadoop与Spark6
1.5.1 Spark的概念及特点6
1.5.2 Hadoop与Spark的关系7
1.6 Hadoop与传统关系型数据库7
1.6.1 RDBMS的概念及特点7
1.6.2 Hadoop与RDBMS的关系8
1.7 案例实践:搭建Hadoop运行环境8
1.7.1 搭建IDEA开发环境9
1.7.2 搭建Linux虚拟机11
1.7.3 搭建Hadoop伪分布式集群环境15
1.8 本章小结21
1.9 习题21
第2章 Hadoop分布式文件系统(HDFS)22
2.1 HDFS架构设计与工作原理22
2.1.1 HDFS概述22
2.1.2 HDFS产生背景22
2.1.3 HDFS设计理念23
2.1.4 HDFS架构23
2.1.5 HDFS优缺点26
2.1.6 HDFS读数据流程27
2.1.7 HDFS写数据流程28
2.1.8 HDFS副本存放策略29
2.2 HDFS的高可用31
2.2.1 HA机制产生背景31
2.2.2 HDFS的HA架构32
2.2.3 HDFS的HA机制33
2.3 HDFS联邦机制33
2.4 HDFS Shell操作34
2.4.1 HDFS Shell基本操作命令34
2.4.2 HDFS Shell管理员操作命令35
2.5 案例实践:Shell定时上传文件至HDFS37
2.5.1 项目需求37
2.5.2 实现思路37
2.5.3 具体实现流程37
2.6 本章小结38
2.7 习题39
第3章 Hadoop资源管理系统(YARN)40
3.1 YARN的架构设计与工作原理40
3.1.1 YARN概述40
3.1.2 YARN的作用41
3.1.3 YARN的基本架构41
3.1.4 YARN的工作原理42
3.2 MapReduce on YARN工作流程43
3.3 YARN的容错性44
3.4 YARN的高可用45
3.5 YARN的调度器46
3.5.1 先进先出调度器46
3.5.2 容量调度器47
3.5.3 公平调度器47
3.6 案例实践:YARN调度器的配置与使用48
3.6.1 启用公平调度器48
3.6.2 队列配置48
3.6.3 同步配置文件49
3.6.4 重启YARN集群49
3.6.5 提交任务50
3.6.6 查看任务50
3.6.7 查看运行结果50
3.7 本章小结51
3.8 习题51
第4章 Hadoop分布式计算框架(MapReduce)52
4.1 初识MapReduce52
4.1.1 MapReduce概述52
4.1.2 MapReduce基本设计思想53
4.1.3 MapReduce的优缺点54
4.2 MapReduce编程模型55
4.2.1 MapReduce编程模型简介55
4.2.2 深入剖析MapReduce编程模型56
4.3 MapReduce运行机制60
4.3.1 剖析MapReduce作业运行机制60
4.3.2 作业失败与容错63
4.3.3 Shuffle过程详解65
4.4 案例实践:气象大数据离线分析67
4.5 本章小结70
4.6 习题71
第5章 ZooKeeper分布式协调服务72
5.1 ZooKeeper架构设计与工作原理72
5.1.1 ZooKeeper定义72
5.1.2 ZooKeeper的特点73
5.1.3 ZooKeeper的基本架构73
5.1.4 ZooKeeper的工作原理74
5.1.5 ZooKeeper的数据模型74
5.2 ZooKeeper集群安装前的准备工作75
5.2.1 配置Hosts文件76
5.2.2 时钟同步76
5.2.3 集群SSH免密登录77
5.2.4 JDK安装78
5.3 ZooKeeper集群的安装部署79
5.3.1 下载并解压ZooKeeper79
5.3.2 修改zoo.cfg配置文件79
5.3.3 同步ZooKeeper安装目录80
5.3.4 创建数据和日志目录80
5.3.5 创建各节点服务编号80
5.3.6 启动ZooKeeper集群服务80
5.4 ZooKeeper Shell操作81
5.5 案例实践:ZooKeeper分布式爬虫监控81
5.5.1 项目需求81
5.5.2 实现思路82
5.5.3 具体实现流程82
5.6 本章小结86
5.7 习题86
第6章 Hadoop分布式集群搭建与管理87
6.1 集群规划87
6.1.1 主机规划87
6.1.2 软件规划87
6.1.3 用户规划88
6.1.4 目录规划88
6.2 HDFS分布式集群搭建88
6.2.1 HDFS集群配置88
6.2.2 启动HDFS集群服务91
6.2.3 HDFS集群测试92
6.3 YARN分布式集群搭建93
6.3.1 YARN 集群配置93
6.3.2 启动YARN集群服务96
6.3.3 YARN集群测试96
6.4 Hadoop集群运维管理97
6.4.1 Hadoop集群进程管理98
6.4.2 Hadoop集群运维技巧99
6.5 案例实践:Hadoop集群动态扩缩容99
6.5.1 项目需求99
6.5.2 动态扩容原理99
6.5.3 动态缩容原理100
6.5.4 原Hadoop集群配置与启动100
6.5.5 Hadoop集群动态扩容102
6.5.6 Hadoop集群动态缩容104
6.6 本章小结106
6.7 习题 106
第7章 Hive数据仓库工具107
7.1 Hive概述107
7.1.1 Hive定义107
7.1.2 Hive产生的背景107
7.1.3 Hive的优缺点108
7.1.4 Hive在Hadoop生态系统中的位置108
7.1.5 Hive与Hadoop的关系108
7.2 Hive原理及架构109
7.2.1 Hive的设计原理109
7.2.2 Hive的体系架构109
7.2.3 Hive的运行机制110
7.2.4 HQL的转换过程111
7.2.5 Hive的数据类型112
7.2.6 Hive的数据存储112
7.3 Hive的安装部署113
7.3.1 安装MySQL113
7.3.2 安装Hive114
7.4 Hive详解116
7.4.1 Hive对数据库的操作116
7.4.2 Hive对数据表的操作119
7.4.3 Hive数据相关操作122
7.4.4 Hive查询相关操作126
7.4.5 Hive表连接相关操作129
7.4.6 Hive内部表和外部表相关操作130
7.4.7 Hive分区与分桶相关操作131
7.5 案例实践:B站用户行为大数据分析133
7.5.1 项目需求133
7.5.2 表结构133
7.5.3 准备工作134
7.5.4 统计分析137
7.6 本章小结138
7.7 习题138
第8章 HBase分布式数据库139
8.1 HBase概述139
8.1.1 HBase定义139
8.1.2 HBase的特点139
8.2 HBase模型及架构140
8.2.1 HBase逻辑模型140
8.2.2 HBase数据模型141
8.2.3 HBase物理模型141
8.2.4 HBase基本架构143
8.3 搭建HBase分布式集群144
8.3.1 HBase集群规划144
8.3.2 HBase集群安装配置145
8.3.3 启动HBase集群服务147
8.4 HBase Shell操作149
8.4.1 HBase Shell命令分类149
8.4.2 HBase Shell基本操作150
8.5 HBase Java客户端152
8.5.1 引入HBase依赖152
8.5.2 连接HBase数据库152
8.5.3 创建HBase表153
8.5.4 HBase插入数据153
8.5.5 HBase查询数据154
8.5.6 HBase 过滤查询155
8.5.7 删除HBase表156
8.6 案例实践:MapReduce批量写入HBase156
8.6.1 需求分析156
8.6.2 数据集准备156
8.6.3 代码实现157
8.6.4 测试运行158
8.7 本章小结159
8.8 习题159
第9章 Hadoop生态圈其他常用开发技术160
9.1 Sqoop数据迁移工具160
9.1.1 Sqoop概述160
9.1.2 Sqoop的优势161
9.1.3 Sqoop的架构与工作机制161
9.1.4 Sqoop Import 流程161
9.1.5 Sqoop Export 流程162
9.1.6 Sqoop安装部署162
9.1.7 案例实践:Sqoop迁移Hive仓库数据163
9.2 Flume日志采集系统166
9.2.1 Flume概述166
9.2.2 Flume架构设计166
9.2.3 Flume安装部署169
9.2.4 案例实践:Flume集群搭建170
9.3 Kafka分布式消息系统172
9.3.1 Kafka概述172
9.3.2 Kafka架构设计173
9.3.3 Kafka分布式集群搭建175
9.3.4 案例实践:Flume与Kafka集成178
9.4 Spark实时分析系统179
9.4.1 Spark快速入门179
9.4.2 Spark Core的核心功能181
9.4.3 Spark分布式集群搭建186
9.4.4 Spark Streaming实时计算189
9.4.5 案例实践:广告点击实时分析193
9.5 Flink实时分析系统199
9.5.1 Flink快速入门199
9.5.2 Flink分布式集群搭建203
9.5.3 Flink DataStream实时计算210
9.5.4 案例实践:新闻热搜实时分析214
9.6 Davinci大数据可视化分析217
9.6.1 Davinci架构设计217
9.6.2 Davinci安装部署220
9.6.3 案例实践:Davinci制作数据可视化大屏224
9.7 本章小结229
9.8 习题229
第10章 项目实战—互联网金融项目离线分析230
10.1 项目需求分析230
10.2 系统架构设计230
10.3 数据流程设计231
10.4 系统集群规划231
10.5 项目开发步骤232
10.5.1 准备MySQL数据源232
10.5.2 Sqoop采集MySQL数据库234
10.5.3 Hive对金融项目进行离线分析237
10.5.4 创建MySQL业务表240
10.5.5 统计结果入库MySQL242
10.5.6 Davinci数据可视化分析245
10.6 本章小结247
第11章 项目实战—互联网直播项目实时分析248
11.1 项目需求分析248
11.2 系统架构设计248
11.3 数据流程设计249
11.4 系统集群规划249
11.5 项目开发步骤250
11.5.1 模拟实时产生数据250
11.5.2 MySQL建表存储统计结果252
11.5.3 Flink Streaming业务代码实现252
11.5.4 打通互联网直播项目整个流程254
11.5.5 Davinci数据可视化分析256
11.6 本章小结256
参考文献257