第1章 初识Hadoop 1
1.1 大数据简介 1
1.1.1 大数据的五大特征 1
1.1.2 大数据的六大发展趋势 3
1.1.3 大数据在电商行业的应用 4
1.1.4 大数据在交通行业的应用 5
1.1.5 大数据在医疗行业的应用 5
1.2 大数据技术的核心需求 5
1.3 Hadoop简介 6
1.3.1 什么是Hadoop 6
1.3.2 Hadoop的产生和发展 6
1.3.3 Hadoop的优缺点 7
1.3.4 Hadoop版本介绍 7
1.3.5 Hadoop生态圈的相关组件 7
1.3.6 Hadoop应用介绍 8
1.3.7 国内Hadoop的就业情况分析 9
1.3.8 分布式系统概述 10
1.4 离线数据分析流程介绍 10
1.4.1 项目需求描述 11
1.4.2 数据来源 11
1.4.3 数据处理流程 11
1.4.4 项目最终效果 12
1.5 大数据学习流程 12
1.6 本章小结 13
1.7 习题 14
第2章 搭建Hadoop集群 15
2.1 安装准备 15
2.1.1 虚拟机安装 15
2.1.2 虚拟机克隆 21
2.1.3 Linux系统网络配置 23
2.1.4 SSH服务配置 26
2.2 Linux基本命令 28
2.2.1 系统工作命令 29
2.2.2 磁盘操作命令 30
2.2.3 目录与文件操作命令 30
2.2.4 权限操作命令 31
2.3 Hadoop集群搭建 32
2.3.1 Hadoop集群部署模式 32
2.3.2 安装JDK 32
2.3.3 安装Hadoop 33
2.3.4 Hadoop集群配置 34
2.4 Hadoop 集群测试 37
2.4.1 格式化文件系统 37
2.4.2 启动和关闭Hadoop进程命令 37
2.4.3 启动和查看Hadoop进程 38
2.4.4 查看Web界面 38
2.5 使用Hadoop集群 39
2.6 本章小结 40
2.7 习题 40
第3章 HDFS分布式文件系统 41
3.1 HDFS简介 41
3.1.1 HDFS的概念 41
3.1.2 HDFS数据的存储和读取方式 42
3.1.3 HDFS的特点 42
3.2 HDFS存储架构和数据读写流程 43
3.2.1 HDFS的存储架构 43
3.2.2 HDFS的数据读写流程 44
3.3 HDFS的Shell命令 46
3.4 Java程序操作HDFS 47
3.4.1 HDFS Java API概述 47
3.4.2 使用Java API操作HDFS 47
3.5 Hadoop序列化 55
3.5.1 Hadoop序列化简介 55
3.5.2 常用实现Writable接口的类 56
3.5.3 自定义实现Writable接口的类 58
3.6 Hadoop小文件处理 59
3.6.1 压缩小文件 59
3.6.2 创建序列文件 60
3.7 通信机制RPC 63
3.7.1 RPC简介 63
3.7.2 Hadoop的RPC架构 63
3.8 本章小结 64
3.9 习题 64
第4章 MapReduce分布式计算框架 65
4.1 认识MapReduce 65
4.1.1 MapReduce核心思想 65
4.1.2 MapReduce编程模型 65
4.1.3 MapReduce编程案例——WordCount 67
4.2 MapReduce编程组件 72
4.2.1 InputFormat组件 72
4.2.2 OutputFormat组件 73
4.2.3 RecordReader组件和
RecordWriter组件 76
4.2.4 Partitioner组件 76
4.2.5 Combiner组件 78
4.3 MapReduce作业解析 82
4.3.1 MapReduce作业简介 82
4.3.2 MapReduce作业运行时的资源调度 82
4.3.3 MapReduce作业运行流程 83
4.4 MapReduce工作原理 83
4.4.1 Map任务工作原理 83
4.4.2 Reduce任务工作原理 83
4.5 Shuffle阶段 83
4.5.1 Shuffle的概念 83
4.5.2 Map端的Shuffle 84
4.5.3 Reduce端的Shuffle 85
4.6 优化——数据倾斜 85
4.7 MapReduce典型案例——排序 86
4.7.1 部分排序 86
4.7.2 全排序 87
4.8 MapReduce典型案例——倒排索引 91
4.8.1 准备模拟数据 91
4.8.2 输出数据解析 92
4.8.3 编写MapReduce程序 92
4.9 MapReduce典型案例——连接 94
4.9.1 准备模拟数据 94
4.9.2 输出数据解析 94
4.9.3 编写MapReduce程序 94
4.10 MapReduce典型案例——平均分以及百分比 97
4.10.1 准备模拟数据 97
4.10.2 输出数据解析 97
4.10.3 编写MapReduce程序 97
4.11 MapReduce典型案例——过滤敏感词汇 100
4.11.1 准备模拟数据 100
4.11.2 创建敏感词库 101
4.11.3 编写MapReduce程序 101
4.12 本章小结 103
4.13 习题 103
第5章 ZooKeeper分布式协调服务 105
5.1 认识ZooKeeper 105
5.1.1 ZooKeeper简介 105
5.1.2 ZooKeeper的设计目的 105
5.1.3 ZooKeeper的系统模型 106
5.1.4 ZooKeeper中的角色 106
5.1.5 ZooKeeper的工作原理 107
5.2 ZooKeeper安装和常用命令 108
5.2.1 ZooKeeper单机模式 108
5.2.2 ZooKeeper全分布式 109
5.2.3 ZooKeeper服务器常用脚本 111
5.2.4 ZooKeeper客户端节点和命令 111
5.3 ZooKeeper客户端编程 113
5.3.1 配置开发环境 113
5.3.2 Java程序操作ZooKeeper客户端 114
5.4 ZooKeeper典型应用场景 115
5.4.1 数据发布与订阅 115
5.4.2 命名服务 115
5.4.3 分布式锁 116
5.5 本章小结 116
5.6 习题 116
第6章 Hadoop 2.0新特性 118
6.1 Hadoop 2.0的改进 118
6.1.1 HDFS存在的问题 118
6.1.2 MapReduce存在的问题 118
6.1.3 HDFS 2.0解决HDFS 1.0中的问题 119
6.2 YARN资源管理框架 119
6.2.1 YARN简介 119
6.2.2 YARN架构 119
6.2.3 YARN的优势 120
6.3 Hadoop的HA模式 120
6.3.1 HA模式简介 120
6.3.2 HDFS的HA模式 121
6.3.3 YARN的HA模式 127
6.3.4 启动和关闭Hadoop的HA模式 131
6.4 本章小结 132
6.5 习题 132
第7章 Hive 133
7.1 数据仓库简介 133
7.1.1 数据仓库概述 133
7.1.2 数据仓库的使用 133
7.1.3 数据仓库的特点 134
7.1.4 主流的数据仓库 134
7.2 认识Hive 134
7.2.1 Hive简介 134
7.2.2 Hive架构 135
7.2.3 Hive和关系型数据库比较 136
7.3 Hive安装 136
7.4 Hive数据类型 140
7.4.1 Hive基本数据类型 140
7.4.2 Hive复杂数据类型 141
7.5 Hive数据库操作 142
7.6 Hive表 143
7.6.1 内部表和外部表 143
7.6.2 对表进行分区 149
7.6.3 对表或分区进行桶操作 153
7.7 Hive表的查询 156
7.7.1 select查询语句 156
7.7.2 视图 161
7.7.3 Join 162
7.8 Hive函数 165
7.8.1 Hive内置函数 165
7.8.2 通过JDBC驱动程序使用Hiveserver2服务 167
7.8.3 Hive用户自定义函数 169
7.9 Hive性能优化 171
7.10 Hive案例分析 173
7.11 本章小结 174
7.12 习题 174
第8章 HBase分布式存储系统 175
8.1 认识HBase 175
8.1.1 HBase简介 175
8.1.2 HBase的数据模型 176
8.1.3 HBase架构 176
8.1.4 HBase文件存储格式 178
8.1.5 HBase存储流程 179
8.1.6 HBase和HDFS 179
8.2 HBase表设计 179
8.2.1 列簇设计 179
8.2.2 行键设计 180
8.3 HBase安装 180
8.3.1 HBase的单机模式 180
8.3.2 HBase的HA模式 182
8.4 HBase Shell常用操作 184
8.5 HBase编程 190
8.5.1 配置开发环境 190
8.5.2 使用Java API操作HBase 191
8.5.3 使用HBase实现WordCount 193
8.6 HBase过滤器和比较器 195
8.6.1 过滤器 195
8.6.2 比较器 196
8.6.3 编程实例 196
8.7 HBase与Hive结合 201
8.7.1 HBase与Hive结合的原因 201
8.7.2 Hive关联HBase 201
8.8 HBase性能优化 202
8.9 本章小结 204
8.10 习题 204
第9章 Flume 205
9.1 认识Flume 205
9.1.1 Flume简介 205
9.1.2 Flume的特点 205
9.2 Flume基本组件 206
9.2.1 Event 206
9.2.2 Agent 206
9.3 Flume安装 207
9.4 Flume数据流模型 208
9.5 Flume的可靠性保证 210
9.5.1 负载均衡 210
9.5.2 故障转移 211
9.6 Flume拦截器 212
9.7 采集案例 214
9.7.1 采集目录到HDFS 214
9.7.2 采集文件到HDFS 215
9.8 本章小结 216
9.9 习题 216
第10章 Sqoop 217
10.1 认识Sqoop 217
10.1.1 Sqoop简介 217
10.1.2 Sqoop原理 218
10.1.3 Sqoop架构 218
10.2 Sqoop安装 218
10.3 Sqoop命令 220
10.3.1 Sqoop数据库连接参数 221
10.3.2 Sqoop export参数 221
10.3.3 Sqoop import参数 221
10.3.4 Sqoop import命令的基本操作 221
10.4 Sqoop数据导入 222
10.4.1 将MySQL的数据导入HDFS 222
10.4.2 将MySQL的数据导入Hive 223
10.4.3 将MySQL的数据导入HBase 226
10.4.4 增量导入 227
10.4.5 按需导入 229
10.5 Sqoop数据导出 230
10.5.1 将HDFS的数据导出到MySQL 230
10.5.2 将Hive的数据导出到MySQL 231
10.5.3 将HBase的数据导出到MySQL 231
10.6 Sqoop job 233
10.7 本章小结 233
10.8 习题 234
第11章 综合项目——电商精准营销 235
11.1 项目概述 235
11.1.1 项目背景介绍 235
11.1.2 项目架构设计 235
11.2 项目详细介绍 237
11.2.1 项目核心关注点 237
11.2.2 重要概念 237
11.2.3 维度 238
11.3 项目模块分析 239
11.3.1 用户基本信息分析模块 239
11.3.2 浏览器分析模块 239
11.3.3 地域分析模块 239
11.3.4 外链分析模块 239
11.4 数据采集 240
11.4.1 日志采集系统概述 240
11.4.2 JS SDK收集数据 240
11.4.3 Java SDK收集数据 242
11.4.4 使用Flume搭建日志采集系统 243
11.4.5 日志信息说明 244
11.5 数据清洗 245
11.5.1 分析需要清洗的数据 245
11.5.2 解析数据格式转换 245
11.5.3 利用MapReduce清洗数据 245
11.6 使用数据仓库进行数据分析 253
11.6.1 事件板块数据分析 253
11.6.2 订单板块数据分析 257
11.6.3 时间板块数据分析 262
11.7 可视化 264
11.7.1 ECharts简介 264
11.7.2 ECharts的优点 265
11.7.3 操作流程 265
11.8 本章小结 267
11.9 习题 267
附录 268