《从零开始学Hadoop大数据分析(视频教学版)》
从零开始学Hadoop大数据分析
(视频教学版)
温春水 毕洁馨 编著
前言
随着互联网的发展,人们日常工作和生活中产生的数据越来越多,伴随着信息的爆炸,大数据应运而生。分布式集群对大量数据的存储和分析处理有极大优势,因此Hadoop的各种技术得到了广泛应用和普及。大数据项目的开发除了需要扎实的理论基础外,还需要掌握Hadoop的搭建环境和运行部署方法,这样才能在大数据技术领域有更强的竞争力和职业发展前景。
目前市场上关于Hadoop的原理介绍和环境搭建的图书不少,但是真正从实战出发,通过“理论讲解→环境搭建→项目案例实战”这种符合初学者学习规律的科学编排体系的图书却不多。本书便是基于这一编排体系而写,以实战为主旨,通过Hadoop的14个基础组件的相关模块和4个完整的项目实战案例,让读者在理解大数据原理的同时,完成Hadoop的环境搭建,并亲自动手实现书中的实战案例,提高开发水平和项目实战能力。
本书可以帮助大数据开发人员充分了解当下流行的大数据技术和应用方法,从而在大数据项目中能更加自信、高效地完成项目开发。书中为有意涉猎大数据领域的人提供了详尽的指导,让他们能够更快、更好地掌握大数据的核心技术,并应用于项目实践,从而脱颖而出,顺利进军大数据行业。另外,本书也为大数据项目开发小组提供了可参考和借鉴的选拔大数据人才的技术标准。
本书特色
1.提供了20小时同步配套教学视频,高效、直观
为了便于读者高效、直观地学习,笔者专门为本书重点内容录制了20小时同步配套教学视频。读者可以一边看书,一边结合教学视频进行学习,取得更好的学习效果。
2.对Hadoop开发做了基础上的准备
本书从一开始就对大数据的应用、特点和Hadoop的起源与发展做了基本介绍,并简要介绍了大数据的技术框架及Hadoop的核心构件,然后详细介绍了Hadoop的安装和配置步骤,便于读者理解后续章节中介绍的各种组件和案例。
3.全面涵盖Hadoop的各种核心技术
本书介绍了Hadoop的核心构件HDFS和MapReduce,并详细介绍了基于存储和计算的YARN、Hive、HBase、Flume、Sqoop、Kafka和Redis等大数据技术的原理、环境搭建步骤和整合应用示例。
4.模块驱动,实用性强
本书介绍了Hadoop开发的14个典型模块,有很强的实用性。这些模块都是Hadoop开发经常要用到的模块,开发人员可以随时查阅和参考。
5.详解4个高价值项目实战案例
本书介绍了4个项目实战案例,这些案例来源于大数据实际项目,有较高的参考价值和实际应用价值。这些案例用不同的大数据整合技术实现,读者稍加修改即可用于自己的实际项目中。通过这些实战案例,可以让读者对书中介绍的相关理论知识和技术细节有更加透彻的理解。
6.提供完善的售后服务
本书提供了专门的售后服务邮箱:hzbook2017@163.com。读者在阅读本书的过程中有任何疑问都可以通过该邮箱获得帮助。
7.提供教学PPT,方便老师教学和学生学习
笔者专门为本书制作了专业的教学PPT,以方便相关院校的教学人员讲课时使用;读者也可以通过教学PPT,来提纲挈领地掌握书中的内容脉络。
本书内容
第1篇 Hadoop基础知识(第1~4章)
第1章初识Hadoop,介绍了大数据的特点和在各行业的应用;阐述了大数据和云计算、物联网之间的关系;讲述了Hadoop的起源、发展和意义。
第2章Hadoop的安装与配置,介绍了Hadoop安装与配置的相关知识,主要包括虚拟机的创建、克隆服务器、SSH免密码登录、JDK安装、Hadoop环境变量配置及Hadoop分布式安装等。
第3章Hadoop分布式文件系统,主要介绍了Hadoop的分布式文件系统,包括HDFS的核心概念、读写文件的流程,以及HDFS基于Shell和Java API的操作。
第4章基于Hadoop 3的HDFS高可用,主要介绍了Hadoop 3.x的发展和HDFS的高可用实现原理,以及如何基于Hadoop 3搭建完全分布式和NameNode的高可用。
第2篇 Hadoop核心技术(第5~15章)
第5章Hadoop的分布式协调服务——ZooKeeper,介绍了ZooKeeper的核心概念,包括Session、数据节点(Znode)、版本、Watcher和ACL等;还介绍了ZooKeeper的安装步骤、服务器端和客户端的相关命令,以及Java API访问ZooKeeper的多种操作。
第6章分布式离线计算框架——MapReduce,主要介绍了MapReduce的原理和应用知识,包括MapReduce的特点、应用场景、执行原理和测试实例。
第7章Hadoop的集群资源管理系统——YARN,比较了YARN和MapReduce的异同,并介绍了YARN集群资源管理系统的基本架构、工作流程和环境搭建步骤等。
第8章Hadoop的数据仓库框架——Hive,介绍了Hive的理论基础,以及Hive和数据库的异同、Hive设计目的与应用、Hive运行框架及执行原理;完成了Hive的环境搭建、内部表的创建、外部表的创建及数据操作;另外,还介绍了如何通过Java访问Hive及Hive的优化等相关内容。
第9章大数据快速读写——HBase,介绍了HBase列式数据库的体系架构、执行原理及安装步骤,还介绍了通过Shell操作HBase,以及基于Java API访问HBase实现数据增加和查询的相关内容。
第10章海量日志采集工具——Flume,主要介绍了Flume的概念、特点、架构,以及其主要组件Event、Client、Agent、Source、Channel和Sink的作用,并详细介绍了本地读取和配置设置的分日期储存和自动读取实例。
第11章Hadoop和关系型数据库间的数据传输工具——Sqoop,主要介绍了数据采集工具Sqoop的运行机制、安装和配置,以及Sqoop的导入和导出实例。
第12章分布式消息队列——Kafka,介绍了在大数据背景下的分布式消息队列Kafka的相关知识,主要包括Kafka的基本概念、核心组件、Kafka集群安装及应用案例等。
第13章开源的内存数据库——Redis,介绍了Redis的核心概念、特点、安装和配置步骤及基于客户端登录Redis实例;还介绍了Redis的数据类型,包括String、List、Hash和Set等。
第14章Ambari和CDH,主要介绍了Ambari和CDH的基本概念及其特点,并详细介绍了Ambari和CDH的安装步骤。
第15章快速且通用的集群计算系统——Spark,主要介绍了Spark的核心概念和运行机制,涉及Spark分布式集群的安装、平台搭建和应用案例等。
第3篇 Hadoop项目案例实战(第16~19章)
第16章基于电商产品的大数据业务分析系统实战,通过一个项目实战案例,详细介绍了数据采集、数据存储、数据清洗、数据转化、数据分析及最终数据的展现过程。
第17章用户画像分析实战,通过一个项目实战案例,详细介绍了项目背景、数据采集、数据预处理、模型构建、数据分析等项目开发的过程,并对项目核心代码做了详细解读和部署运行。
第18章基于个性化的视频推荐系统实战,通过一个项目实战案例,详细介绍了推荐系统的基本概念、协同过滤推荐算法、项目架构、模型构建的详细过程,并对相关核心代码做了详细解读。
第19章电信离网用户挽留实战,通过一个项目实战案例,详细介绍了数据挖掘标准流程中的商业理解、数据理解、数据准备、建模、评估和部署这6个步骤,并利用代码实现了数据建模、评估和部署,最终得到用户离网预警清单,有效防止用户流失。
本书配套资源及获取方式
本书提供了以下配套资源:
* 20小时配套教学视频;
* 实例源代码文件;
* 教学PPT。
这些资源需要读者自行下载。请在华章公司的网站(www.hzbook.com)上搜索到本书,然后单击“资料下载”按钮,即可在本书页面上找到“配书资源”下载链接。
适合阅读本书的读者
* 需要全面学习Hadoop大数据技术的人员;
* Java程序员;
* 大数据开发工程师;
* 需要提高大数据项目开发水平的人员;
* 大数据开发项目经理;
* 专业培训机构的学员;
* 对大数据技术感兴趣的学生;
* 需要一本案头必备查询手册的人员。
阅读建议
* 没有Hadoop技术基础的读者,建议从第1章开始顺次阅读并搭建环境,演练每一个实例。
* 有一定Hadoop框架基础的读者,可以根据实际情况有重点地选择阅读相关章节和项目案例。
* 对于每一个实例和项目案例,读者可以先自己思考一下实现的思路,然后再详细阅读,这样学习效果会更好。
* 对于重点内容,建议读者先看一遍教学视频,对相关内容有个基本了解,然后再详细阅读书中的内容,会更加事半功倍。
本书作者
本书由温春水和毕洁馨编写。感谢在本书编写过程中提供过帮助的各位编辑!
由于作者的水平所限,加之成书时间较为仓促,书中可能还存在一些疏漏和不当之处,敬请各位读者斧正。联系我们请发电子邮件到hzbook2017@163.com。
编著者
目录
前言
第1篇 Hadoop基础知识
2.7.2 配置Hadoop的bin和sbin文件夹到环境变量中 17
2.7.3 修改/etc/hadoop/hadoop-env.sh 17
第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
- 点赞
- 收藏
- 关注作者
评论(0)