2010年以后,信息产业进入了大数据时代,Hadoop成为大数据分析的首选平台和开发标准,数据分析软件纷纷向 Hadoop靠拢。在Hadoop原有技术基础之上,涌现了Hadoop家族产品,它们正在配合大数据概念不断创新,推动科技进步。因此,新一代IT精英都必须顺应潮流,抓住机遇,随着 Hadoop一起发展和成长!
Hadoop是一个能够对大量数据进行分布式处理的软件框架。但Hadoop是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。
Hadoop体系下包含了一系列进行数据处理、分析的组件,其中常见的组件包括Hive、HBase、Pig、Sqoop等。
Hive是一种底层封装了Hadoop的数据仓库处理工具,使用类SQL的HiveQL 语言实现数据查询,所有Hive的数据都存储在Hadoop兼容的文件系统(例如,Amazon S3、HDFS)中。Hive在加载数据过程中不会对数据进行任何修改,只是将数据移动到HDFS中Hive设定的目录下。Hive构建在基于静态批处理的Hadoop之上,Hadoop通常都有较高的延迟并且在作业提交和调度的时候需要大量开销。因此,Hive并不能够在大规模数据集上实现低延迟快速的查询。
作为NoSQL家庭的一员,HBase的出现弥补了Hadoop只能离线批处理的不足,同时能够存储小文件,提供海量数据的随机检索,并保证一定的性能。而这些特性也完善了整个Hadoop生态系统,泛化了其大数据的处理能力,结合其高性能、稳定、扩展性好的特性,给使用大数据的企业带来了方便。
Pig是基于Hadoop的并行数据流处理开源引擎。通过Pig无须开发一个全功能的应用程序就可以在集群中进行数据批处理,这使得在新数据集上进行实验变得更加容易。
Sqoop是一个用来将Hadoop和关系型数据库中的数据进行相互转移的工具,可以将一个关系型数据库(例如,MySQL、Oracle、PostgreSQL等)中的数据导入Hadoop的HDFS中,也可以将HDFS的数据导入关系型数据库中。对于某些NoSQL数据库,它也提供了连接器。Sqoop使用元数据模型来判断数据类型并在数据从数据源转移到Hadoop时确保类型安全的数据处理。Sqoop专为大数据批量传输设计,能够分割数据集并创建Hadoop任务来处理每个区块。
本书针对Hadoop体系的基本技术方法进行了分析,并提供了相应的实例以帮助读者进一步加深了解。通过本书的学习,相信大家会在很短暂的时间内掌握Hadoop体系的相关技术,为以后的工作、学习提供指导与帮助。
本书特色
本书作者从实践出发,结合大量的教学经验以及工程案例,深入浅出地介绍大数据技术架构及相关组件。在章节的编排上,注重理论与实践相结合。首先提出相关的理论背景,并进行深入分析、讲解,然后着重介绍相关技术的环境搭建,最后通过实际操作,加深读者对技术的掌握及应用。
通过项目实战案例介绍相关组件在实际大数据处理中的关键应用,本书介绍的Hadoop组件包括HDFS、MapReduce、Hive、HBase、Pig、Sqoop。
为了方便读者对内容的理解以及满足相关教学、工作的需要,本书配套提供了真实的样本数据文件、PPT课件以及实验视频,读者可以根据勘误与支持中提供的联系方式进行咨询或者获取。
本书适用对象
本书内容由浅入深,既适合初学者入门,也适合有一定基础的技术人员进一步提高技术水平。本书的读者对象包括:
Hadoop初学者
Hadoop开发人员
Hadoop管理人员
高等院校计算机相关专业的老师、学生
具有Hadoop相关经验,并希望进一步提高技术水平的读者
如何阅读本书
本书在章节的安排上,着眼于引导读者以最快的速度上手Hadoop,本书一共包括11章,分为3个部分: 基础篇、高级篇、实战篇。
基础篇(第1~3章): 第1章的主要内容包括Hadoop简介、Hadoop项目及架构分析、Hadoop计算模型、Hadoop数据管理、Hadoop环境搭建; 第2章针对Hadoop分布式文件系统HDFS进行讲解,包括HDFS基本操作、WebHDFS操作以及通过Java API进行HDFS文件操作; 第3章针对Hadoop分布式计算MapReduce进行讲解,并通过实战案例帮助读者加深对相关知识的理解。
高级篇(第4~10章): 第4章针对Hadoop中的数据仓库Hive进行分析,包括Hive环境搭建、Hive数据定义; 第5章介绍了Hive的使用,包括数据操作、数据查询,并通过实战案例帮助读者进行深入的了解; 第6章针对HBase进行详细的介绍,包括HBase的发展历史、HBase的特性、HBase与Hadoop的关系等,并讲解如何进行HBase环境的搭建; 第7章针对HBase数据操作进行讲解,包括Shell工具的使用、基于HBase的Java客户端的使用; 第8章介绍了Pig数据流引擎的使用,包括Pig概述、Pig的安装与配置、Pig命令行交互工具的使用; 第9章针对Pig Latin进行讲解,主要内容包括Pig Latin介绍、关系操作和用户自定义函数的使用; 第10章详细讲解Sqoop工具的使用,包括Sqoop概述、Sqoop安装部署、Sqoop常用命令介绍和Sqoop数据操作。
实战篇(第11章): 通过实际的大数据案例进行分析讲解,帮助读者进一步了解实际工程环境中Hadoop的应用,本章主要内容包括实战项目背景与数据源分析、环境搭建、数据清洗、数据统计分析以及定时任务处理。
致谢
在本书的编写过程中,得到了许多企事业单位人员的大力支持; 在此谨向北京科技大学陈红松教授致以深深的谢意。在本书的编辑和出版过程中还得到了清华大学出版社相关人员的无私帮助与支持,在此一并表示感谢。
编者
2021年12月
基础篇
第1章Hadoop基础
1.1Hadoop简介
1.1.1什么是Hadoop
1.1.2Hadoop项目及其结构
1.1.3Hadoop体系结构
1.1.4Hadoop与分布式开发
1.1.5Hadoop计算模型MapReduce on Yarn
1.1.6Hadoop数据管理
1.1.7Hadoop集群安全策略
1.2Hadoop的安装与配置
1.2.1安装JDK 1.8与配置SSH免密码登录
1.2.2安装并运行Hadoop
第2章Hadoop存储: HDFS
2.1HDFS的基本操作
2.1.1HDFS的命令行操作
2.1.2HDFS的Web界面
2.1.3通过distcp进行并行复制
2.1.4使用Hadoop归档文件
2.2WebHDFS
2.2.1WebHDFS的配置
2.2.2WebHDFS命令
2.3HDFS常见的Java API介绍
2.3.1使用Hadoop URL读取数据
2.3.2使用FileSystem API读取数据
2.3.3创建目录
2.3.4写数据
2.3.5删除数据
2.3.6文件系统查询
第3章Hadoop计算: MapReduce
3.1MapReduce应用程序编写
3.1.1实例描述
3.1.2设计思路
3.1.3代码数据流
3.1.4程序代码
3.1.5代码解读
3.1.6程序执行
3.1.7代码结果
3.2使用MapReduce求每年最低温度
3.2.1作业描述
3.2.2程序代码
3.2.3准备输入数据
3.2.4运行程序
高级篇
第4章数据仓库: Hive
4.1Hive的安装和配置
4.1.1安装详细步骤
4.1.2Hive内部是什么
4.2数据定义
4.2.1Hive中的数据库
4.2.2修改数据库
4.2.3创建表
4.2.4分区表
4.2.5删除表
4.2.6修改表
第5章Hive数据操作与查询
5.1数据操作
5.1.1向管理表中装载数据
5.1.2通过查询语句向表中插入数据
5.1.3单个查询语句中创建表并加载数据
5.1.4导出数据
5.2数据查询
5.2.1SELECT…FROM语句
5.2.2WHERE语句
5.2.3GROUP BY语句
5.2.4HAVING语句
5.2.5JOIN语句
5.2.6ORDER BY和SORT BY
5.2.7含有SORT BY 的DISTRIBUTE BY
5.2.8CLUSTER BY
5.2.9类型转换
5.2.10抽样查询
5.2.11UNION ALL
5.3Hive实战
5.3.1背景
5.3.2实战数据及要求
5.3.3实验步骤
第6章Hadoop数据库: HBase
6.1HBase概述
6.1.1HBase的发展历史
6.1.2HBase的发行版本
6.1.3HBase的特性
6.1.4HBase与Hadoop的关系
6.1.5HBase的核心功能模块
6.2HBase的安装和配置
6.2.1HBase的运行模式
6.2.2HBase的Web UI
6.2.3Hbase Shell工具使用
6.2.4停止HBase集群
第7章HBase数据操作
7.1Shell工具的使用
7.1.1命令分类
7.1.2常规命令
7.1.3DDL命令
7.1.4DML命令
7.1.5工具命令Tools
7.1.6复制命令
7.1.7安全命令
7.2Java客户端的使用
7.2.1客户端配置
7.2.2创建表
7.2.3删除表
7.2.4插入数据
7.2.5查询数据
7.2.6删除数据
第8章并行数据流处理引擎: Pig
8.1Pig概述
8.1.1Pig是什么
8.1.2Pig的发展简史
8.2Pig的安装和使用
8.2.1下载和安装Pig
8.2.2命令行使用以及配置选项介绍
8.2.3返回码
8.3命令行交互工具
8.3.1Grunt概述
8.3.2在Grunt中输入Pig Latin脚本
8.3.3在Grunt中使用HDFS命令
8.3.4在Grunt中控制Pig
第9章Pig Latin的使用
9.1Pig Latin概述
9.1.1基础知识
9.1.2输入和输出
9.2关系操作
9.2.1foreach
9.2.2Filter
9.2.3Group
9.2.4Order by
9.2.5distinct
9.2.6Join
9.2.7Limit
9.2.8Sample
9.2.9Parallel
9.3用户自定义函数UDF
9.3.1注册UDF
9.3.2define命令和UDF
9.3.3调用静态Java函数
第10章SQL to Hadoop: Sqoop
10.1Sqoop概述
10.1.1Sqoop的产生背景
10.1.2Sqoop是什么
10.1.3为什么选择Sqoop
10.1.4Sqoop1和 Sqoop2的异同
10.1.5Sqoop1与Sqoop2的架构图
10.1.6Sqoop1与Sqoop2的优缺点
10.2Sqoop安装部署
10.2.1下载Sqoop
10.2.2设置/etc/profile参数
10.2.3设置bin/configuresqoop配置文件
10.2.4设置conf/sqoopenv.sh配置文件
10.2.5验证安装完成
10.3Sqoop常用命令介绍
10.3.1如何列出帮助
10.3.2Export
10.3.3Import
10.3.4Job作业
10.4数据操作
10.4.1MySQL数据导入到HDFS中
10.4.2HDFS数据导入到MySQL中
实战篇
第11章项目实战
11.1项目背景与数据情况
11.1.1项目概述
11.1.2项目分析指标
11.1.3项目开发步骤
11.1.4表结构设计
11.2环境搭建
11.2.1MySQL的安装
11.2.2Eclipse的安装
11.3数据清洗
11.3.1数据分析
11.3.2数据清洗流程
11.4数据统计分析
11.4.1建立分区表
11.4.2使用HQL统计关键指标
11.4.3使用Sqoop将数据导入到MySQL数据表
11.5定时任务处理
11.5.1日志数据定时上传
11.5.2日志数据定期清理
11.5.3数据定时统计分析
参考文献