本书是Hadoop Spark大数据分析技术入门书,基于Hadoop和Spark两大框架体系的3.2版本,以通俗易懂的方式介绍Hadoop Spark原生态组件的原理、集群搭建、实战操作,以及整个Hadoop生态系统主流的大数据分析技术。 本书共分14章。第1章讲解Hadoop框架及新版本特性,并详细讲解大数据分析环境的搭建工作,包括Linux操作系统的安装、SSH工具使用和配置等;第2章讲解Hadoop伪分布式的安装和开发体验,使读者熟悉Hadoop大数据开发两大核心组件,即HDFS和MapReduce;第3~12章讲解Hadoop生态系统各框架HDFS、MapReduce、输入输出、Hadoop集群配置、高可用集群、HBase、Hive、数据实时处理系统Flume,以及Spark框架数据处理、机器学习等实战技术,并通过实际案例加深对各个框架的理解与应用;第13~14章分别通过影评分析、旅游酒店评价分析实战项目来贯穿大数据分析的完整流程。 本书可以作为大数据分析初学者的入门指导书,也可以作为大数据开发人员的参考手册,同时也适合作为高等院校大数据相关专业的教材或教学参考书。
本书全面讲解Hadoop生态圈各组件的核心知识、操作和分析技术,系统介绍Spark框架搭建、操作和典型的机器学习分析技术。最后通过两个综合实战项目影评分析、旅游酒店评价分析,来贯穿大数据分析的完整流程。
如今大数据技术已广泛应用于金融、医疗、教育、电信、政府等领域。各个行业都积累了大量的历史数据,并不断产生大量新数据,数据的种类不断增多,数据体量也急剧增长,数据计量单位已经发展到PB、EB、ZB、YB级甚至BB、NB、DB级,传统的数据存储、管理、分析技术已经无法满足大数据的处理要求。大数据分析不同于传统的数据处理方式,需要通过分布式存储和分布式运算来实现,这也催生了优秀的大数据处理框架和生态组件的出现,Hadoop便是最具代表性的大数据处理生态系统框架,Spark则是更为高效的数据处理框架,二者的结合可以为大数据分析和机器学习提供可靠且高效的解决方案。许多大型互联网公司,如谷歌、阿里巴巴、百度、京东等都急需掌握大数据技术人才,大数据技术人才出现了供不应求的状况。
写作思路
本书从大数据开发和大数据分析岗位需求出发,力求从Hadoop生态圈和Spark生态系统全面解析每个组件。Hadoop框架方面,包括大数据平台搭建、Hadoop各典型组件的实战应用、新版本的集群配置和高可用特性、Hive和HBase的搭建与实战等。Spark框架方面,包括Spark框架数据处理等的基础知识、机器学习实战应用、集群环境搭建,同时包括常用的Shell命令、API操作。本书最后安排了两个综合项目实战案例,一方面用来对Hadoop Spark框架进行大数据开发和大数据分析的基础内容进行巩固和提高,另一方面,结合电影评论分析和旅游评论分析这样的实际场景,使读者能够把握真实的大数据开发或大数据分析应用项目的技术内容,从而对大数据分析的典型流程有清晰的理解,完成从数据采集、数据分析到数据可视化各个环节的全面掌握。全书实战操作和应用案例丰富,每一个知识点都讲得十分细致,让读者能够轻松地步入大数据开发工程师的大门。
关于本书
本书是一本关于大数据平台应用和大数据分析方面的实战书籍,知识面比较广,涵盖整个Hadoop生态系统主流的大数据开发技术,以及用于数据实时处理的Spark框架。力从实践操作讲起,尽量去除那些影响读者理解的纯理论内容。等基本的操作已经掌握以后,再回过头来讲解与实战相关的核心理论知识。所以,本书讲解的方法是先动手实践再理解理论。首先基于目前新版本的Hadoop框架展开,采用Hadoop 3.2.2版本阐述大数据平台搭建和开发方面的内容。随着Hadoop生态系统的成长,Hadoop已经不再是一个简单的数据分布式存储平台和工具,已经形成一个完整的Hadoop生态圈。本书全面讲解Hadoop生态圈各组件的核心知识和操作方法。然后,系统介绍Spark框架搭建和操作,并结合经典的机器学习算法,讲解基于Spark平台的大数据分析技术。最后通过两个综合实战项目来体现大数据分析的完整流程。
本书采用先上手实践,后归纳和学习理论知识的思路编写,读者可以快速上手基于Hadoop和Spark的大数据开发应用,读者还可以对照书中的步骤成功搭建属于自己的大数据集群,并独立完成项目开发。书中提供了大数据分析的详细步骤,并配套了源代码。
本书内容
全书共14章,第1章讲解Hadoop框架及新版本特性,并详细讲解大数据环境的准备工作,包括Linux操作系统的安装、SSH工具使用和配置等;第2章讲解Hadoop伪分布式的安装和开发体验,使读者熟悉Hadoop大数据开发两大核心组件,即HDFS和MapReduce;第3~12章讲解Hadoop生态系统各框架HDFS、MapReduce、输入输出、Hadoop集群配置、HA高可用集群、HBase、Hive、数据实时处理系统Flume、Spark框架数据处理等的基础知识、机器学习实战应用、集群环境搭建,同时包括常用的Shell命令、API操作等,并通过实际操作加深对各个框架的理解与应用;第13~14章分别通过影评分析、旅游酒店评价分析实战项目巩固所学知识,案例涉及自然语言处理和数据可视化入门内容,使读者掌握的技术更加全面。
配套资源下载
本书配套资源包括源码、PPT课件、开发环境、答疑服务,可用微信扫描下面的二维码获取,也可按扫描后的页面提示把下载链接转发到自己的邮箱中下载。如果有疑问和建议,请联系booksaga@163.com,邮件主题为Hadoop Spark大数据分析实战。
适合阅读本书的读者
本书可作为大数据分析初学者的入门指导书、大数据开发人员的参考用书,也可以作为高校大数据平台搭建或大数据开发课程的参考教材。学习本书要求读者有一定的Java编程基础,并掌握Linux系统的基础知识。
作 者
2022年4月
迟殿委,计算机软件与理论专业硕士,系统架构设计师。有多年企业软件研发经验和丰富的JavaEE培训经验,熟练掌握JavaEE全栈技术框架,对Java核心编程技术有深刻理解。主要擅长JavaEE系统架构设计、大数据分析与挖掘。著有图书《Hadoop Spark大数据分析实战》《Spring Boot企业级开发实战(视频教学版)》《Spring Boot Spring Cloud微服务开发》《深入浅出Java编程》。
第1章 大数据与Hadoop 1
1.1 什么是大数据 1
1.2 大数据的来源 2
1.3 如何处理大数据 3
1.3.1 数据分析与挖掘 3
1.3.2 基于云平台的分布式处理 4
1.4 Hadoop 3新特性 6
1.5 虚拟机与Linux操作系统的安装 7
1.5.1 VirtualBox虚拟机的安装 7
1.5.2 Linux操作系统的安装 8
1.6 SSH工具与使用 14
1.7 Linux统一设置 16
1.8 本章小结 17
第2章 Hadoop伪分布式集群 18
2.1 安装独立运行的Hadoop 19
2.2 Hadoop伪分布式环境准备 21
2.3 Hadoop伪分布式安装 25
2.4 HDFS操作命令 31
2.5 Java项目访问HDFS 33
2.6 winutils 38
2.7 快速MapReduce程序示例 39
2.8 本章小结 42
第3章 HDFS分布式文件系统 43
3.1 HDFS的体系结构 43
3.2 NameNode的工作 44
3.3 SecondaryNameNode 49
3.4 DataNode 50
3.5 HDFS的命令 51
3.6 RPC远程过程调用 52
3.7 本章小结 53
第4章 分布式运算框架MapReduce 55
4.1 MapReduce的运算过程 55
4.2 WordCount示例 57
4.3 自定义Writable 60
4.4 Partitioner分区编程 63
4.5 自定义排序 65
4.6 Combiner编程 67
4.7 默认Mapper和默认Reducer 68
4.8 倒排索引 69
4.9 Shuffle 73
4.9.1 Spill过程 73
4.9.2 Sort过程 74
4.9.3 Merge过程 75
4.10 本章小结 76
第5章 Hadoop输入输出 78
5.1 自定义文件输入流 79
5.1.1 自定义LineTextInputFormat 79
5.1.2 自定义ExcelInputFormat类 82
5.1.3 DBInputFormat 86
5.1.4 自定义输出流 89
5.2 顺序文件SequenceFile的读写 90
5.2.1 生成一个顺序文件 91
5.2.2 读取顺序文件 91
5.2.3 获取Key/Value类型 92
5.2.4 使用SequenceFileInputFormat读取数据 93
5.3 本章小结 95
第6章 Hadoop分布式集群配置 96
6.1 Hadoop集群 96
6.2 本章小结 100
第7章 Hadoop高可用集群搭建 101
7.1 ZooKeeper简介 101
7.2 ZooKeeper集群安装 104
7.3 znode节点类型 105
7.4 观察节点 106
7.5 配置Hadoop高可靠集群 106
7.6 用Java代码操作集群 115
7.7 本章小结 117
第8章 数据仓库Hive 118
8.1 Hive简介 118
8.2 Hive3的安装配置 120
8.2.1 使用Derby数据库保存元数据 120
8.2.2 使用MySQL数据库保存元数据 121
8.3 Hive命令 124
8.4 Hive内部表 127
8.5 Hive外部表 128
8.6 Hive表分区 128
8.6.1 分区的技术细节 128
8.6.2 分区示例 131
8.7 查询示例汇总 133
8.8 Hive函数 134
8.8.1 关系运算符号 135
8.8.2 更多函数 136
8.8.3 使用Hive函数实现WordCount 138
8.9 本章小结 140
第9章 HBase数据库 141
9.1 HBase的特点 141
9.1.1 HBase的高并发和实时处理数据 142
9.1.2 HBase的数据模型 142
9.2 HBase的安装 144
9.2.1 HBase的单节点安装 145
9.2.2 HBase的伪分布式安装 147
9.2.3 Java客户端代码 149
9.2.4 其他Java操作代码 152
9.3 HBase集群安装 155
9.4 HBase Shell操作 159
9.4.1 DDL操作 160
9.4.2 DML操作 162
9.5 本章小结 166
第10章 Flume数据采集 167
10.1 Flume简介 167
10.1.1 Flume原理 167
10.1.2 Flume的一些核心概念 168
10.2 Flume的安装与配置 169
10.3 快速示例 169
10.4 在ZooKeeper中保存Flume的配置文件 171
10.5 Flume的更多Source 174
10.5.1 avro source 174
10.5.2 thrift source和thrift sink 178
10.5.3 exec source 181
10.5.4 spool source 182
10.5.5 HDFS sinks 183
10.6 本章小结 184
第11章 Spark框架搭建及应用 185
11.1 安装Spark 186
11.1.1 本地模式 186
11.1.2 伪分布式安装 188
11.1.3 集群安装 191
11.1.4 Spark on YARN 193
11.2 使用Scala开发Spark应用 196
11.2.1 安装Scala 196
11.2.2 开发Spark程序 197
11.3 spark-submit 200
11.3.1 使用spark-submit提交 200
11.3.2 spark-submit参数说明 201
11.4 DataFrame 203
11.4.1 DataFrame概述 203
11.4.2 DataFrame基础应用 205
11.5 Spark SQL 210
11.5.1 快速示例 211
11.5.2 Read和Write 215
11.6 Spark Streaming 216
11.6.1 快速示例 217
11.6.2 DStream 220
11.6.3 FileStream 220
11.6.4 窗口函数 222
11.6.5 updateStateByKey 223
11.7 共享变量 225
11.7.1 广播变量 225
11.7.2 累加器 227
11.8 本章小结 227
第12章 Spark机器学习 228
12.1 机器学习 228
12.1.1 机器学习概述 228
12.1.2 Spark ML 230
12.2 典型机器学习流程介绍 230
12.2.1 提出问题 230
12.2.2 假设函数 231
12.2.3 代价函数 232
12.2.4 训练模型确定参数 233
12.3 经典算法模型实战 233
12.3.1 聚类算法实战 233
12.3.2 回归算法实战 236
12.3.3 协同过滤算法实战 239
第13章 影评分析项目实战 245
13.1 项目内容 245
13.2 项目需求及分析 246
13.3 详细实现 250
13.3.1 搭建项目环境 250
13.3.2 编写爬虫类 253
13.3.3 编写分词类 255
13.3.4 第一个job的Map阶段实现 259
13.3.5 一个job的Reduce阶段实现 259
13.3.6 第二个job的Map阶段实现 260
13.3.7 第二个job的自定义排序类阶段的实现 261
13.3.8 第二个job的自定义分区阶段实现 261
13.3.9 第二个job的Reduce阶段实现 262
13.3.10 Run程序主类实现 262
13.3.11 编写词云类 263
13.3.12 效果测试 264
第14章 旅游酒店评价分析项目实战 266
14.1 项目介绍 266
14.2 项目需求及分析 267
14.2.1 数据集需求 267
14.2.2 功能需求 267
14.3 详细实现 268
14.3.1 数据集上传到HDFS 269
14.3.2 Spark数据清洗 271
14.3.3 构建Hive数据仓库表 274
14.3.4 Hive表数据导出到MySQL 280
14.3.5 数据可视化开发 282