前言
第1篇 Hadoop基础知识
第1章 初识Hadoop 2
1.1 大数据初探 2
1.1.1 大数据技术 2
1.1.2 大数据技术框架 3
1.1.3 大数据的特点 3
1.1.4 大数据在各个行业中的应用 4
1.1.5 大数据计算模式 4
1.1.6 大数据与云计算、物联网的关系 4
1.2 Hadoop简介 5
1.2.1 Hadoop应用现状 6
1.2.2 Hadoop简介与意义 6
1.3 小结 6
第2章 Hadoop的安装与配置 7
2.1 虚拟机的创建 7
2.2 安装Linux系统 10
2.3 配置网络信息 11
2.4 克隆服务器 12
2.5 SSH免密码登录 13
2.6 安装和配置JDK 15
2.6.1 上传安装包 15
2.6.2 安装JDK 16
2.6.3 配置环境变量 16
2.7 Hadoop环境变量配置 16
2.7.1 解压缩Hadoop压缩包 17
2.7.2 配置Hadoop的bin和sbin文件夹到环境变量中 17
2.7.3 修改/etc/hadoop/hadoop-env.sh 17
2.8 Hadoop分布式安装 17
2.8.1 伪分布式安装 17
2.8.2 完全分布式安装 19
2.9 小结 21
第3章 Hadoop分布式文件系统 22
3.1 DFS介绍 22
3.1.1 什么是DFS 22
3.1.2 DFS的结构 22
3.2 HDFS介绍 23
3.2.1 HDFS的概念及体系结构 23
3.2.2 HDFS的设计 23
3.2.3 HDFS的优点和缺点 24
3.2.4 HDFS的执行原理 24
3.2.5 HDFS的核心概念 25
3.2.6 HDFS读文件流程 27
3.2.7 HDFS写文件流程 28
3.2.8 Block的副本放置策略 29
3.3 Hadoop中HDFS的常用命令 30
3.3.1 对文件的操作 30
3.3.2 管理与更新 31
3.4 HDFS的应用 31
3.4.1 基于Shell的操作 31
3.4.2 基于Java API的操作 33
3.4.3 创建文件夹 34
3.4.4 递归显示文件 34
3.4.5 文件上传 35
3.4.6 文件下载 35
3.5 小结 36
第4章 基于Hadoop 3的HDFS高可用 37
4.1 Hadoop 3.x的发展 37
4.1.1 Hadoop 3新特性 37
4.1.2 Hadoop 3 HDFS集群架构 38
4.2 Hadoop 3 HDFS完全分布式搭建 39
4.2.1 安装JDK 40
4.2.2 配置JDK环境变量 40
4.2.3 配置免密码登录 40
4.2.4 配置IP和主机名字映射关系 41
4.2.5 SSH免密码登录设置 41
4.2.6 配置Hadoop 3.1.0 42
4.3 什么是HDFS高可用 47
4.3.1 HDFS高可用实现原理 47
4.3.2 HDFS高可用实现 48
4.4 搭建HDFS高可用 50
4.4.1 配置ZooKeeper 50
4.4.2 配置Hadoop配置文件 52
4.4.3 将配置文件复制到其他节点上 54
4.4.4 启动JN节点 54
4.4.5 格式化 55
4.4.6 复制元数据到node2节点上 55
4.4.7 格式化ZKFC 55
4.4.8 启动集群 56
4.4.9 通过浏览器查看集群状态 56
4.4.10 高可用测试 57
4.5 小结 58
第2篇 Hadoop核心技术
第5章 Hadoop的分布式协调服务——ZooKeeper 60
5.1 ZooKeeper的核心概念 60
5.1.1 Session会话机制 60
5.1.2 数据节点、版本与Watcher的关联 61
5.1.3 ACL策略 61
5.2 ZooKeeper的安装与运行 61
5.3 ZooKeeper服务器端的常用命令 63
5.4 客户端连接ZooKeeper的相关操作 64
5.4.1 查看ZooKeeper常用命令 64
5.4.2 connect命令与ls命令 65
5.4.3 create命令——创建节点 65
5.4.4 get命令——获取数据与信息 66
5.4.5 set命令——修改节点内容 66
5.4.6 delete命令——删除节点 67
5.5 使用Java API访问ZooKeeper 67
5.5.1 环境准备与创建会话实例 68
5.5.2 节点创建实例 69
5.5.3 Java API访问ZooKeeper实例 70
5.6 小结 73
第6章 分布式离线计算框架——MapReduce 74
6.1 MapReduce概述 74
6.1.1 MapReduce的特点 74
6.1.2 MapReduce的应用场景 75
6.2 MapReduce执行过程 76
6.2.1 单词统计实例 76
6.2.2 MapReduce执行过程 77
6.2.3 MapReduce的文件切片Split 77
6.2.4 Map过程和Reduce过程 78
6.2.5 Shuffle过程 78
6.3 MapReduce实例 79
6.3.1 WordCount本地测试实例 79
6.3.2 ETL本地测试实例 84
6.4 温度排序实例 86
6.4.1 时间和温度的封装类MyKey.Java 87
6.4.2 Map任务MyMapper.java 88
6.4.3 数据分组类MyGroup.Java 89
6.4.4 温度排序类MySort.java 89
6.4.5 数据分区MyPartitioner.java 90
6.4.6 Reducer任务MyReducer.java 90
6.4.7 主函数RunJob.java 91
6.5 小结 94
第7章 Hadoop的集群资源管理系统——YARN 95
7.1 为什么要使用YARN 95
7.2 YARN的基本架构 96
7.2.1 ResourceManager进程 96
7.2.2 ApplicationMaster和NodeManager 97
7.3 YARN工作流程 97
7.4 YARN搭建 98
7.5 小结 100
第8章 Hadoop的数据仓库框架——Hive 101
8.1 Hive的理论基础 101
8.1.1 什么是Hive 101
8.1.2 Hive和数据库的异同 102
8.1.3 Hive设计的目的与应用 104
8.1.4 Hive的运行架构 104
8.1.5 Hive的执行流程 105
8.1.6 Hive服务 106
8.1.7 元数据存储Metastore 106
8.1.8 Embedded模式 107
8.1.9 Local模式 108
8.1.10 Remote模式 109
8.2 Hive的配置与安装 109
8.2.1 安装MySQL 110
8.2.2 配置Hive 112
8.3 Hive表的操作 113
8.3.1 创建Hive表 114
8.3.2 导入数据 114
8.4 表的分区与分桶 115
8.4.1 表的分区 115
8.4.2 表的分桶 117
8.5 内部表与外部表 118
8.5.1 内部表 119
8.5.2 外部表 119
8.6 内置函数与自定义函数 121
8.6.1 内置函数实例 121
8.6.2 自定义UDAF函数实例 123
8.7 通过Java访问Hive 124
8.8 Hive优化 125
8.8.1 MapReduce优化 126
8.8.2 配置优化 126
8.9 小结 127
第9章 大数据快速读写——HBase 128
9.1 关于NoSQL 128
9.1.1 什么是NoSQL 128
9.1.2 NoSQL数据库的分类 129
9.1.3 NoSQL数据库的应用 129
9.1.4 关系型数据库与非关系型数据库的区别 130
9.2 HBase基础 130
9.2.1 HBase简介 130
9.2.2 HBase数据模型 131
9.2.3 HBase体系架构及组件 132
9.2.4 HBase执行原理 134
9.3 HBase安装 135
9.4 HBase的Shell操作 138
9.5 Java API访问HBase实例 139
9.5.1 创建表 139
9.5.2 插入数据 140
9.5.3 查询数据 141
9.6 小结 142
第10章 海量日志采集工具——Flume 143
10.1 什么是Flume 143
10.2 Flume的特点 143
10.3 Flume架构 144
10.4 Flume的主要组件 144
10.4.1 Event、Client与Agent——数据传输 145
10.4.2 Source—Event接收 145
10.4.3 Channel—Event传输 146
10.4.4 Sink—Event发送 147
10.4.5 其他组件 148
10.5 Flume安装 148
10.6 Flume应用典型实例 149
10.6.1 本地数据读取(conf1) 149
10.6.2 收集至HDFS 150
10.6.3 基于日期分区的数据收集 152
10.7 通过exec命令实现数据收集 153
10.7.1 安装工具 153
10.7.2 编辑配置文件conf4 155
10.7.3 运行Flume 156
10.7.4 查看生成的文件 156
10.7.5 查看HDFS中的数据 157
10.8 小结 158
第11章 Hadoop和关系型数据库间的数据传输工具——Sqoop 159
11.1 什么是Sqoop 159
11.2 Sqoop工作机制 159
11.3 Sqoop的安装与配置 161
11.3.1 下载Sqoop 161
11.3.2 Sqoop配置 162
11.4 Sqoop数据导入实例 163
11.4.1 向HDFS中导入数据 165
11.4.2 将数据导入Hive 167
11.4.3 向HDFS中导入查询结果 170
11.5 Sqoop数据导出实例 172
11.6 小结 173
第12章 分布式消息队列——Kafka 174
12.1 什么是Kafka 174
12.2 Kafka的架构和主要组件 174
12.2.1 消息记录的类别名——Topic 175
12.2.2 Producer与Consumer——数据的生产和消费 176
12.2.3 其他组件——Broker、Partition、Offset、Segment 177
12.3 Kafka的下载与集群安装 177
12.3.1 安装包的下载与解压 177
12.3.2 Kafka的安装配置 178
12.4 Kafka应用实例 181
12.4.1 Producer实例 181
12.4.2 Consumer实例 182
12.5 小结 184
第13章 开源的内存数据库——Redis 185
13.1 Redis简介 185
13.1.1 什么是Redis 185
13.1.2 Redis的特点 186
13.2 Redis安装与配置 186
13.3 客户端登录 187
13.3.1 密码为空登录 187
13.3.2 设置密码登录 188
13.4 Redis的数据类型 188
13.4.1 String类型 188
13.4.2 List类型 190
13.4.3 Hash类型 191
13.4.4 Set类型 194
13.5 小结 197
第14章 Ambari和CDH 198
14.1 Ambari的安装与集群管理 198
14.1.1 认识HDP与Ambari 198
14.1.2 Ambari的搭建 199
14.1.3 配置网卡与修改本机名 199
14.1.4 定义DNS服务器与修改hosts主机映射关系 200
14.1.5 关闭防火墙并安装JDK 200
14.1.6 升级OpenSSL安全套接层协议版本 201
14.1.7 关闭SELinux的强制访问控制 201
14.1.8 SSH免密码登录 202
14.1.9 同步NTP 202
14.1.10 关闭Linux的THP服务 204
14.1.11 配置UMASK与HTTP服务 204
14.1.12 安装本地源制作相关工具与Createrepo 205
14.1.13 禁止离线更新与制作本地源 205
14.1.14 安装Ambari-server与MySQL 208
14.1.15 安装Ambari 210
14.1.16 安装Agent与Ambari登录安装 211
14.1.17 安装部署问题解决方案 214
14.2 CDH的安装与集群管理 216
14.2.1 什么是CDH和Cloudera Manager介绍 216
14.2.2 Cloudera Manager与Ambari对比的优势 216
14.2.3 CDH安装和网卡配置 217
14.2.4 修改本机名与定义DNS服务器 217
14.2.5 修改hosts主机映射关系 218
14.2.6 关闭防火墙 218
14.2.7 安装JDK 219
14.2.8 升级OpenSSL安全套接层协议版本 219
14.2.9 禁用SELinux的强制访问功能 220
14.2.10 SSH 免密码登录 220
14.2.11 同步NTP安装 220
14.2.12 安装MySQL 222
14.2.13 安装Cloudera Manager 222
14.2.14 添加MySQL驱动包和修改Agent配置 223
14.2.15 初始化CM5数据库和创建cloudera-scm用户 223
14.2.16 准备Parcels 223
14.2.17 CDH的安装配置 224
14.3 小结 227
第15章 快速且通用的集群计算系统——Spark 228
15.1 Spark基础知识 228
15.1.1 Spark的特点 228
15.1.2 Spark和Hadoop的比较 229
15.2 弹性分布式数据集RDD 230
15.2.1 RDD的概念 230
15.2.2 RDD的创建方式 230
15.2.3 RDD的操作 230
15.2.4 RDD的执行过程 231
15.3 Spark作业运行机制 232
15.4 运行在YARN上的Spark 233
15.4.1 在YARN上运行Spark 233
15.4.2 Spark在YARN上的两种部署模式 233
15.5 Spark集群安装 234
15.5.1 Spark安装包的下载 234
15.5.2 Spark安装环境 236
15.5.3 Scala安装和配置 236
15.5.4 Spark分布式集群配置 238
15.6 Spark实例详解 241
15.6.1 网站用户浏览次数最多的URL统计 241
15.6.2 用户地域定位实例 243
15.7 小结 246
第3篇 Hadoop项目案例实战
第16章 基于电商产品的大数据业务分析系统实战 248
16.1 项目背景、实现目标和项目需求 248
16.2 功能与流程 249
16.2.1 用户信息 250
16.2.2 商品信息 251
16.2.3 购买记录 251
16.3 数据收集 252
16.3.1 Flume的配置文件 252
16.3.2 启动Flume 253
16.3.3 查看采集后的文件 253
16.3.4 通过后台命令查看文件 254
16.3.5 查看文件内容 255
16.3.6 上传user.list文件 256
16.3.7 上传brand.list目录 256
16.4 数据预处理 257
16.5 数据分析——创建外部表 261
16.6 建立模型 264
16.6.1 各年龄段用户消费总额 264
16.6.2 查询各品牌销售总额 265
16.6.3 查询各省份消费总额 266
16.6.4 使用Sqoop将数据导入MySQL数据库 266
16.7 数据可视化 268
16.8 小结 272
第17章 用户画像分析实战 273
17.1 项目背景 273
17.2 项目目标与项目开发过程 274
17.2.1 数据采集 274
17.2.2 数据预处理 275
17.2.3 模型构建 275
17.2.4 数据分析 276
17.3 核心代码解读 277
17.3.1 项目流程介绍 277
17.3.2 核心类的解读 278
17.3.3 core-site.xml配置文件 279
17.3.4 hdfs-site.xml配置文件 279
17.3.5 UserProfile.properties配置文件 280
17.3.6 LoadConfig.java:读取配置信息 280
17.3.7 ReadFile.java:读取文件 281
17.3.8 ReadFromHdfs.java:提取信息 281
17.3.9 UserProfile.java:创建用户画像 282
17.3.10 TextArrayWritable.java:字符串处理工具类 285
17.3.11 MapReduce任务1:UserProfileMapReduce.java 285
17.3.12 MapReduce任务2:UserProfileMapReduce2.java 289
17.3.13 UserProfilePutInHbaseMap.java:提取用户画像 291
17.3.14 UserProfilePutInHbaseReduce:存储用户画像 292
17.4 项目部署 293
17.5 小结 294
第18章 基于个性化的视频推荐系统实战 295
18.1 项目背景 295
18.2 项目目标与推荐系统简介 295
18.2.1 推荐系统的分类 295
18.2.2 推荐模型的构建流程 296
18.2.3 推荐系统核心算法 297
18.2.4 如何基于Mahout框架完成商品推荐 300
18.2.5 基于Mahout框架的商品推荐实例 300
18.3 推荐系统项目架构 302
18.4 推荐系统模型构建 303
18.5 核心代码 304
18.5.1 公共部分 305
18.5.2 离线部分 307
18.5.3 在线部分 311
18.6 小结 314
第19章 电信离网用户挽留实战 315
19.1 商业理解 315
19.2 数据理解 316
19.2.1 收集数据 316
19.2.2 了解数据 317
19.2.3 保证数据质量 318
19.3 数据整理 318
19.3.1 数据整合 318
19.3.2 数据过滤 319
19.4 数据清洗 319
19.4.1 噪声识别 320
19.4.2 离群值和极端值的定义 321
19.4.3 离群值处理方法 321
19.4.4 数据空值处理示例 323
19.5 数据转换 324
19.5.1 变量转换 324
19.5.2 压缩分类水平数 324
19.5.3 连续数据离散化 325
19.5.4 变换哑变量 326
19.5.5 数据标准化 326
19.5.6 数据压缩 326
19.6 建模 327
19.6.1 决策树算法概述 327
19.6.2 决策树的训练步骤 327
19.6.3 训练决策树 328
19.6.4 C4.5算法 329
19.6.5 决策树剪枝 332
19.7 评估 335
19.7.1 混淆矩阵 335
19.7.2 ROC曲线 336
19.8 部署 338
19.9 用户离网案例代码详解 339
19.9.1 数据准备 339
19.9.2 相关性分析 341
19.9.3 最终建模 342
19.9.4 模型评估 343
19.10 小结 346
· · · · · · (
收起)