本书全面介绍了Hadoop生态系统中各个开源组件的理论知识和实践案例。全书分为上篇——Hadoop基础篇、中篇——Hadoop提高篇、下篇——案例篇三部分,共11章,涉及数据采集、数据存储与管理、数据处理与分析、数据可视化一系列大数据应用生命周期中各阶段典型组件的理论知识、安装部署和实战使用。上篇为第1~8章,具体内容包括大数据概述、初识Hadoop、分布式文件系统HDFS、分布式计算框架MapReduce、统一资源管理和调度框架YARN、分布式协调框架ZooKeeper、分布式数据库HBase、数据仓库Hive;中篇为第9、10章,具体内容包括大数据迁移和采集工具、数据可视化;下篇为第11章,介绍了使用Hadoop平台完成用户画像项目的全过程。本书在Hadoop、HDFS、MapReduce、ZooKeeper、HBase、Hive等重要章节安排了初级实践操作,以便读者更好地学习和掌握Hadoop关键技术。
本书内容翔实,案例丰富,既可作为高等院校大数据、计算机、人工智能等相关专业研究生、本科生的大数据课程教材,也可供相关技术人员参考。
本书配套有《Hadoop大数据原理与应用实验教程》,同时可在西安电子科技大学出版社网站下载本书作者提供的相关资源。
大数据时代的到来,带来了信息技术发展的巨大变革,并深刻影响着社会生产和人民生活的方方面面。在全球范围内,世界各国政府均高度重视大数据技术的研究与产业发展,纷纷把大数据上升为国家战略加以重点推进。大数据已经成为企业和社会关注的重要战略资源,越来越多的行业面临着海量数据存储和分析的挑战。
Hadoop由道格·卡丁(Doug Cutting)创建,起源于开源项目网络搜索引擎Apache
Nutch,于2008年1月成为Apache顶级项目。Hadoop是一个开源的、可运行于大规模集群上的分布式存储和计算的软件框架,它具有高可靠、弹性可扩展等特点,非常适合处理海量数据。Hadoop实现了分布式文件系统HDFS和分布式计算框架MapReduce等功能,允许用户在不了解分布式系统底层细节的情况下,使用简单的编程模型轻松编写出分布式程序,并将其运行于计算机集群上,完成对大规模数据集的存储和分析。目前,Hadoop在业内得到了广泛应用,已经是公认的大数据通用存储和分析平台,许多厂商都围绕Hadoop提供开发工具、开源软件、商业化工具和技术服务,例如谷歌、雅虎、微软、淘宝等都支持Hadoop。另外,还有一些专注于Hadoop的公司,例如Cloudera、Hortonworks和MapR都可以提供商业化的Hadoop支持。
未来5~10年,我国大数据产业将会处于高速发展时期,社会亟需高校培养一大批大数据相关专业人才。自2016年以来,我国新增的大数据类专业包括“数据科学与大数据技术”本科专业(080910T)、“数据管理与应用”本科专业(120108T)、“大数据技术与应用”专科专业(610215),以适应地方产业发展对战略性新兴产业的人才需求。因此,学会使用大数据通用存储和分析平台Hadoop及其生态系统对于未来适应新一代信息技术产业的发展具有重要的意义。
本书面向Hadoop生态系统,以企业需求为导向,紧紧围绕大数据应用的闭环流程展开讲述,引导读者构建大数据知识体系和进行大数据技术的初级实践,旨在使读者掌握Hadoop生态系统的设计原理和Hadoop平台的运用能力。
本书分为上篇——Hadoop基础篇、中篇——Hadoop提高篇和下篇——案例篇三大部分,共11章,涉及数据采集、数据存储与管理、数据处理与分析、数据可视化一系列大数据应用生命周期中各阶段典型组件的理论知识、安装部署和实战使用。上篇即Hadoop基础篇,为1~8章,其中第1章介绍了大数据的基本概念和相关产业,分析了大数据与云计算、物联网、人工智能、5G之间的关系,梳理了大数据职业岗位,同时给出了大数据的学习路线;第2章介绍了大数据处理平台Hadoop的来源、发展史、生态系统、体系架构和应用现状等,并演示了如何在Linux操作系统下部署Hadoop集群;第3章介绍了分布式文件系统HDFS的特征、体系架构、文件存储机制和数据读/写过程,通过实战案例演示了HDFS用户接口HDFS Web、HDFS Shell和HDFS Java API的使用,并讲述了HDFS实现高可靠性的几种机制;第4章介绍了分布式计算框架MapReduce的编程思想、作业执行流程、数据类型、Shuffle机制,通过引入入门案例WordCount详细讲解了MapReduce的内部实现细节,通过实战案例演示了如何定义和使用自定义组件,以及MapReduce Shell、MapReduce Web和MapReduce Java API的使用,并简单介绍了目前其他主流分布式计算框架;第5章从MapReduce 1.0存在的问题入手,引入新一代资源管理和调度框架YARN,简述了YARN的优势、发展目标、体系架构和工作流程,演示了YARN的基本使用,并介绍了YARN的新特性和当前常见的其他统一资源管理与调度平台;第6章介绍了分布式协调框架ZooKeeper的来源、基本概念、系统模型、工作原理、典型应用场景,演示了ZooKeeper集群的部署过程,并通过实战案例讲述了ZooKeeper四字命令、ZooKeeper Shell、ZooKeeper Java API等实践技能;第7章介绍了NoSQL数据库的特点以及HBase数据库的发展史、基本特点、数据模型、体系结构,演示了HBase集群的部署过程,通过实战案例讲述了HBase Shell、HBase Java API的使用方法,以及如何在HBase中使用MapReduce,并介绍了HBase性能优化的常见方法;第8章介绍了数据仓库Hive的基本工作流程、特征、体系架构、数据类型、文件格式、函数等知识,演示了部署Hive的过程,通过实战案例讲述了HWI、Hive Shell、HiveQL语句和Hive Java API的使用方法,并介绍了几种常见的Hive优化策略。中篇即Hadoop提高篇,为第9、10章,其中第9章从初步认识、体系架构、安装部署、实战应用四个方面依次介绍了数据迁移工具Sqoop、日志采集工具Flume、分布式流平台Kafka和ETL工具Kettle,同时也简要介绍了当前比较常见的其他数据迁移工具;第10章介绍了数据可视化的基本概念、历史、意义、常用图表类型,重点演示了ECharts、Python、Tableau、阿里云DataV、D3.js等几种主流数据可视化工具的使用。下篇即案例篇,为第11章,本章旨在通过一个具体项目案例,介绍如何借助Hadoop大数据处理平台,基于华为P30手机的评论数据进行数据分析,从而得到用户画像的完整
过程。
为了方便读者整体把握各章知识,在每章开始位置均配备有本章知识结构图。根据近几年的教学实践,建议安排32学时理论课,第1、2、5、10章每章安排2学时,第3、4、6、7、8、9章每章安排4学时,第11章由学生自学完成。另外,建议增加16学时的上机实践课。
本书面向高等院校计算机、大数据、人工智能等相关专业的研究生、本科生,可以作为专业核心课程大数据技术原理与应用的教材。本书拥有配套的实验教材《Hadoop大数据原理与应用实验教程》(亦由本书作者编写,由西安电子科技大学出版社出版),两本书配套使用,可以达到更好的学习效果。
本书由校企联合完成,第1章由西京学院于长青编写,第2章由安徽信息工程学院李月军编写,第3、7、8章由西京学院左银波编写,第4章由国信蓝桥教育科技(北京)股份有限公司颜群工程师编写,第5、6、9章由西京学院徐鲁辉编写,第10章由郑州升达经贸管理学院王芳编写,第11章由郑州升达经贸管理学院周湘贞编写。全书由国信蓝桥教育科技(北京)股份有限公司大数据专家唐友刚主审,由西京学院徐鲁辉负责策划、审校和定稿。
本书与配套实验教材《Hadoop大数据原理与应用实验教程》拥有完整的立体化资源,包括教学大纲、授课计划、教案、PPT、源代码、在线题库、实验大纲、实验指导书、实验视频、项目案例库等教学资源,提供全方位的免费服务。读者可通过以下三种方式免费在线浏览或下载全部配套资源:教材官方网站https://dzxxgcx.xijing.edu.cn/xkzy/zxkc. htm/pabigdata/index.asp,教材官方云班课“Hadoop大数据原理与应用教材云班课”(邀请码为5962412),教材官方GitHub网站https://github.com/xuluhuixijing/pabigdata。
本书中关于图形界面元素代替符号的约定如表1所示。
表1 本书中图形界面元素的代替符号约定
文字描述 代替符号 举 例
按钮 边框?+?阴影?+?底纹 “确定”按钮可简化为?确定
菜单项 『 』 菜单项“文件”可简化为『File』
连续选择菜单项及子菜单项 → 选择『File』→『New』→『Java Project』
下拉框、单选框、复选框选项 [ ] 复选框选项“启用用户”可简化为[启用用户]
窗口名 【 】 例如,进入窗口【Properties for HDFSExample】
提示信息 “ ” 例如,否则会出现错误信息“bash: ****: command not found...”
本书中各实验所使用软件的名称、版本、发布日期及下载地址如表2所示。
表2 本书使用软件的名称、版本、发布日期及下载地址
序号 软件
名称 软件
版本 发布日期 下载地址 安装文件名
1 VMware Workstation Pro VMware Workstation 12.5.7 Pro for Windows 2017.6.22 https://www.vmware.com/products/
workstationpro.html VMwareworkstationfull12.5.7
5813279.exe
2 CentOS CentOS 7.6.1810 2018.11.26 https://www.centos.org/download/ CentOS7x86_64DVD1810.iso
3 Java Oracle JDK 8u191 2018.10.16 http://www.oracle.com/technetwork/java/
javase/downloads/index.html jdk8u191linuxx64.tar.gz
4 Hadoop Hadoop 2.9.2 2018.11.19 http://hadoop.apache.org/releases.html hadoop2.9.2.tar.gz
5 Eclipse Eclipse IDE 201809 for Java Developers 2018.9 https://www.eclipse.org/downloads/packages eclipsejava201809linuxgtk
x86_64.tar.gz
6 ZooKeeper ZooKeeper 3.4.13 2018.7.15 http://zookeeper.apache.org/releases.html zookeeper3.4.13.tar.gz
7 HBase HBase 1.4.10 2019.6.10 https://hbase.apache.org/downloads.html hbase1.4.10bin.tar.gz
续表
序号 软件
名称 软件
版本 发布日期 下载地址 安装文件名
8 MySQL Connector/J MySQL Connector/J 5.1.48 2019.7.29 https://dev.mysql.com/downloads/connector/j/ mysqlconnectorjava5.1.48.tar.gz
9 MySQL Community Server MySQL Community 5.7.27 2019.7.22 http://dev.mysql.com/get/mysql57community
releaseel711.noarch.rpm mysql57communityreleaseel7
11.noarch.rpm(Yum Repository)
10 Hive Hive 2.3.4 2018.11.7 https://hive.apache.org/downloads.html apachehive2.3.4bin.tar.gz
11 Spark Spark 2.3.3 2019.2.15 https://spark.apache.org/downloads.html spark2.3.3binhadoop2.7.tgz
12 Sqoop Sqoop 1.4.7 2017.12 http://www.apache.org/dyn/closer.lua/sqoop/ sqoop1.4.7.bin__hadoop2.6.0.tar.gz
13 Flume Flume 1.9.0 2019.1.8 http://flume.apache.org/download.html apacheflume1.9.0bin.tar.gz
14 Kafka Kafka 2.1.1 2019.2.15 http://kafka.apache.org/downloads kafka_2.122.1.1.tgz
在本书编写与出版过程中,国信蓝桥教育科技(北京)股份有限公司高校合作部项目经理单宝军在教材编写方面提供了帮助,西京学院校长黄文准、西京学院信息工程学院院长郭建新、副院长乌伟在学院政策方面提供了支持,西安电子科技大学出版社李惠萍编辑对本书的出版提供了很多意见和建议,在此表示衷心感谢。
本书在撰写的过程中参考了部分国内外教材、专著、论文和开源社区资源,在此向这些作者一并致谢。由于作者水平和能力有限,书中难免有疏漏与不足之处,衷心希望广大同行和读者批评指正。
上篇 Hadoop基础篇
第1章 大数据概述 2
1.1 大数据内涵 3
1.2 大数据的特征 5
1.3 大数据的关键技术 6
1.4 大数据产业 8
1.5 大数据与物联网、云计算、人工智能、5G的关系 11
1.6 大数据岗位介绍 12
1.7 大数据学习路线 13
本章小结 14
思考与练习题 15
第2章 初识Hadoop 16
2.1 Hadoop概述 17
2.2 Hadoop生态系统 20
2.3 Hadoop的体系架构 23
2.4 Hadoop的应用现状 23
2.5 部署和运行Hadoop 25
本章小结 50
思考与练习题 50
实验1 部署全分布模式Hadoop集群 51
第3章 分布式文件系统HDFS 52
3.1 HDFS简介 53
3.2 HDFS的体系架构 53
3.3 HDFS文件的存储机制 55
3.4 HDFS数据的读/写过程 57
3.5 实战HDFS 60
3.6 HDFS的高可靠性机制 75
本章小结 89
思考与练习题 89
实验2 实战HDFS 90
第4章 分布式计算框架MapReduce 91
4.1 MapReduce简介 92
4.2 第一个MapReduce案例:WordCount 92
4.3 MapReduce的作业执行流程 97
4.4 MapReduce的数据类型与格式 101
4.5 Shuffle的机制 104
4.6 在MapReduce中自定义组件 105
4.7 实战MapReduce 109
4.8 MapReduce调优 116
4.9 其他主流计算框架 118
本章小结 119
思考与练习题 120
实验3 MapReduce编程 120
第5章 统一资源管理和调度框架YARN 122
5.1 初识YARN 123
5.2 YARN的体系架构 126
5.3 YARN的工作流程 127
5.4 实战YARN 129
5.5 YARN的新特性 134
5.6 其他统一资源管理调度框架 141
本章小结 150
思考与练习题 151
第6章 分布式协调框架ZooKeeper 152
6.1 分布式协调技术 153
6.2 初识ZooKeeper 154
6.3 ZooKeeper的系统模型 156
6.4 ZooKeeper的工作原理 163
6.5 ZooKeeper的典型应用场景 172
6.6 部署ZooKeeper集群 176
6.7 实战ZooKeeper 183
本章小结 218
思考与练习题 219
实验4 部署ZooKeeper集群和实战ZooKeeper 220
第7章 分布式数据库HBase 221
7.1 NoSQL简介 222
7.2 初识HBase 224
7.3 HBase的数据模型 224
7.4 HBase的体系架构 229
7.5 HBase的运行机制 233
7.6 部署HBase集群 235
7.7 实战HBase 241
7.8 HBase的性能优化 264
本章小结 265
思考与练习题 266
实验5 部署全分布模式HBase集群和实战HBase 267
第8章 数据仓库Hive 268
8.1 初识Hive 269
8.2 Hive的体系架构 271
8.3 Hive的数据类型 273
8.4 Hive的文件格式 275
8.5 Hive的数据模型 275
8.6 Hive函数 278
8.7 部署Hive 285
8.8 实战Hive 299
8.9 Hive的优化策略 307
本章小结 308
思考与练习题 309
实验6 部署本地模式Hive和实战Hive 309
中篇 Hadoop提高篇
第9章 大数据迁移和采集工具 312
9.1 数据迁移工具Sqoop 313
9.2 日志采集工具Flume 344
9.3 分布式流平台Kafka 357
9.4 ETL工具Kettle 371
本章小结 377
思考与练习题 378
第10章 数据可视化 379
10.1 可视化概念 380
10.2 可视化的作用与意义 381
10.3 可视化图表的类型 386
10.4 可视化工具 391
本章小结 419
思考与练习题 419
下篇 案 例 篇
第11章 华为P30手机评论画像分析 422
11.1 需求分析 423
11.2 项目设计 423
11.3 项目环境搭建 423
11.4 数据采集与预处理 424
11.5 使用Hive分析数据 430
11.6 数据可视化 437
本章小结 443
思考与练习题 443
参考文献 444