关于我们
书单推荐
新书推荐
|
Hadoop大数据原理与应用实验教程
本书作为《Hadoop大数据原理与应用》(本书作者编写,西安电子科技大学出版社出版)的配套实验教程,系统介绍了Hadoop生态系统中各个开源组件的相关知识和实践技能。全书分为“基础实验篇”和“拓展实验篇”两篇,共10章,涉及数据采集、数据存储与管理、数据处理与分析等大数据应用生命周期中各阶段典型组件的部署、使用和基础编程方法。“基础实验篇”内容包括部署全分布模式Hadoop集群、实战HDFS、MapReduce编程、部署ZooKeeper集群和实战ZooKeeper、部署全分布模式HBase集群和实战HBase、部署本地模式Hive和实战Hive;“拓展实验篇”内容包括部署Spark集群和Spark编程、实战Sqoop、实战Flume、实战Kafka。
本书内容翔实,案例丰富,操作过程详尽,并配有完整的立体化资源,既可作为高等院校研究生、本科生的大数据技术原理与应用课程的实验指导书,也可作为教师参考书,同时也可供相关技术人员参考。(相关资源可在西安电子科技大学出版社网站下载。)
大数据时代的到来,带来了信息技术发展的巨大变革,并深刻影响着社会生产和人民生活的方方面面。全球范围内,世界各国政府均高度重视大数据技术的研究与产业发展,纷纷把大数据上升为国家战略加以重点推进。大数据已经成为企业和社会关注的重要战略资源,越来越多的行业面临着海量数据存储和分析的挑战。
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的运用能力。
本书分为上篇“基础实验篇”和下篇“拓展实验篇”,共10章,涉及数据采集、数据存储与管理、数据处理与分析等大数据应用生命周期中各阶段典型组件的部署、使用和基础编程方法。在“基础实验篇”中,实验1介绍了Linux基本命令、vim编辑器、Java基本命令、SSH安全通信协议、Hadoop基础知识等先修技能,然后详细讲述了部署全分布模式Hadoop集群的全过程,并附加了伪分布模式Hadoop集群的部署过程;实验2介绍了分布式文件系统HDFS的体系架构、文件存储原理、接口等基础知识,详细演示了如何通过HDFS Web UI和HDFS Shell命令使用HDFS以及HDFS Java API编程,并附加了如何搭建HDFS NameNode HA环境;实验3在介绍了分布式计算框架MapReduce编程思想、作业执行流程的基础上,讲述了如何编写MapReduce程序,并附加了在Windows平台上开发MapReduce程序和使用MapReduce统计对象中某些属性的案例;实验4介绍了分布式协调框架ZooKeeper的系统模型、工作原理等基本知识,详细演示了如何部署ZooKeeper集群以及通过ZooKeeper Shell命令使用ZooKeeper,并附加了ZooKeeper编程实践;实验5介绍了分布式数据库HBase的数据模型、体系架构、接口等基础知识,详细演示了如何部署全分布模式HBase集群以及通过HBase Web UI和HBase Shell使用HBase,并附加了HBase编程实践;实验6介绍了数据仓库Hive的体系架构、数据类型、文件格式、数据模型、函数、接口等基础知识,详细演示了如何部署本地模式Hive以及通过Hive Shell使用Hive,并附加了Hive编程实践。在“拓展实验篇”中,实验7介绍了内存型计算框架Spark的生态系统、体系架构、计算模型、RDD原理等基础知识,详细演示了如何部署SparkStandalone集群以及Spark简单编程;实验8介绍了数据迁移工具Sqoop的功能、体系架构、接口等基础知识,详细演示了如何安装Sqoop和使用Sqoop Shell完成数据的导入导出操作;实验9介绍了日志采集工具Flume的功能、体系架构、接口等基础知识,详细演示了如何安装、配置Flume以及使用Flume高效进行海量日志的收集、聚合和移动;实验10介绍了分布式流平台Kafka的功能、体系架构、Kafka Shell、Kafka API,详细演示了如何部署Kafka集群以及通过Kafka Shell使用Kafka进行生产和消费消息。
为了方便读者整体把握各个实验,本书在每个实验的一开始先给出该实验的知识地图。根据我们近几年的教学实践,建议根据本书为大数据技术原理与应用课程增加16学时的上机实践课,可根据具体情况灵活安排本书实验项目。
本书面向高等院校计算机、大数据、人工智能等相关专业的研究生、本科生,可以作为专业核心课程大数据技术原理与应用的辅助实验教材。本书是《Hadoop大数据原理与应用》教材的配套实验教程,两本书配套使用,可以达到更好的学习效果。此外,本书也可以作为现有其他大数据教材的实验教材或辅助教材。
本书由校企联合完成,实验1由安徽信息工程学院李月军编写,实验2由郑州升达经贸管理学院周湘贞编写,实验3由国信蓝桥教育科技(北京)股份有限公司颜群工程师编写,实验4~10由西京学院徐鲁辉编写。此外,李月军和周湘贞还参与了本书全部架构设计和部分审阅工作。全书由国信蓝桥教育科技(北京)股份有限公司大数据专家唐友刚主审,由西京学院徐鲁辉负责策划、审校和定稿。
本书与配套教材《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 VMwareworkstation
full12.5.75813279.
exe
2 CentOS CentOS 7.6.1810 2018.11.26 https://www.centos.org/download/ CentOS7x86_64
DVD1810.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 evelopers 2018.9 https://www.eclipse.org/downloads
/packages eclipsejava201809
linuxgtkx86_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/ mysqlconnectorjava
5.1.48.tar.gz
续表
序号 软件名称 软件版本 发布日期 下载地址 安装文件名
9 MySQL Community Server MySQL Community 5.7.27 2019.7.22 http://dev.mysql.com/get/mysql57
communityreleaseel711.noarch.
rpm mysql57community
releaseel711.noarch.
rpm(Yum Repository)
10 Hive Hive 2.3.4 2018.11.7 https://hive.apache.org
/downloads.html apachehive2.3.4
bin.tar.gz
11 Spark Spark 2.3.3 2019.2.15 https://spark.apache.org
/downloads.html spark2.3.3binhaoop
2.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.0
bin.tar.gz
14 Kafka Kafka 2.1.1 2019.2.15 http://kafka.apache.org
/downloads kafka_2.122.1.1.tgz
本书在编写过程中得到了很多人的帮助。国信蓝桥教育科技(北京)股份有限公司高校合作部项目经理单宝军在教材编写方面提供了帮助,西京学院校长黄文准、西京学院信息工程学院院长郭建新、副院长乌伟在学院政策方面提供了支持,西安电子科技大学出版社李惠萍编辑对本书的出版提出了很多意见和建议,在此一并表示衷心感谢。
本书在撰写的过程中参考了部分国内外教材、专著、论文和开源社区资源,在此也向这些文献作者一并致谢。由于作者水平和能力有限,书中难免有疏漏与不足之处,衷心希望广大同行和读者批评指正。
上篇 基础实验篇
实验1 部署全分布模式Hadoop集群 2
1.1 实验目的、实验环境和实验内容 3
1.2 实验原理 3
1.2.1 Linux基本命令 3
1.2.2 vim编辑器 6
1.2.3 Java基本命令 7
1.2.4 SSH安全通信协议 8
1.2.5 Hadoop 8
1.3 实验步骤 12
1.3.1 规划部署 12
1.3.2 准备机器 14
1.3.3 准备软件环境 14
1.3.4 获取和安装Hadoop 22
1.3.5 配置全分布模式Hadoop集群 22
1.3.6 关闭防火墙 30
1.3.7 格式化文件系统 31
1.3.8 启动和验证Hadoop 32
1.3.9 关闭Hadoop 41
1.3.10 实验报告要求 42
1.4 拓展训练——部署伪分布模式
?Hadoop集群 42
1.4.1 规划部署 43
1.4.2 准备机器 43
1.4.3 准备软件环境 44
1.4.4 下载和安装Hadoop 47
1.4.5 配置Hadoop 47
1.4.6 格式化文件系统 49
1.4.7 启动和验证伪分布模式
Hadoop集群 49
1.4.8 关闭伪分布模式Hadoop集群 54
思考与练习题 55
参考文献 55
实验2 实战HDFS 57
2.1 实验目的、实验环境和实验内容 57
2.2 实验原理 58
2.2.1 初识HDFS 58
2.2.2 HDFS的体系架构 58
2.2.3 HDFS文件的存储原理 60
2.2.4 HDFS接口 64
2.3 实验步骤 70
2.3.1 启动Hadoop集群 70
2.3.2 使用 HDFS Shell 71
2.3.3 使用HDFS Web UI 72
2.3.4 搭建HDFS的开发环境Eclipse 73
2.3.5 使用HDFS Java API编程 75
2.3.6 关闭Hadoop集群 87
2.3.7 实验报告要求 87
2.4 拓展训练——?搭建HDFS
NameNode HA 88
思考与练习题 92
参考文献 92
实验3 MapReduce编程 94
3.1 实验目的、实验环境和实验内容 94
3.2 实验原理 95
3.2.1 MapReduce的编程思想 95
3.2.2 MapReduce的作业执行流程 97
3.2.3 MapReduce Web 98
3.2.4 MapReduce Shell 98
3.2.5 MapReduce Java API 99
3.3 实验步骤 99
3.3.1 启动Hadoop集群 99
3.3.2 搭建MapReduce的
开发环境Eclipse 100
3.3.3 编写并运行MapReduce程序
WordCount 100
3.3.4 练习使用MapReduce Shell命令 111
3.3.5 练习使用MapReduce Web UI
界面 112
3.3.6 关闭Hadoop集群 113
3.3.7 实验报告要求 113
3.4 拓展训练 113
3.4.1 在Windows平台上开发
MapReduce程序 113
3.4.2 MapReduce编程实践:使用
MapReduce统计对象中的
某些属性 117
思考与练习题 122
参考文献 122
实验4 部署ZooKeeper集群和实战
ZooKeeper 123
4.1 实验目的、实验环境和实验内容 123
4.2 实验原理 124
4.2.1 ZooKeeper的系统模型 124
4.2.2 ZooKeeper的工作原理 128
4.2.3 部署ZooKeeper 131
4.2.4 ZooKeeper的四字命令 134
4.2.5 ZooKeeper Shell 135
4.2.6 ZooKeeper Java API 137
4.3 实验步骤 139
4.3.1 规划ZooKeeper集群 139
4.3.2 部署ZooKeeper集群 140
4.3.3 启动ZooKeeper集群 143
4.3.4 验证ZooKeeper集群 144
4.3.5 使用ZooKeeper的四字命令 144
4.3.6 使用ZooKeeper Shell的
常用命令 146
4.3.7 关闭ZooKeeper集群 151
4.3.8 实验报告要求 151
4.4 拓展训练 152
4.4.1 搭建ZooKeeper的
开发环境Eclipse 152
4.4.2 ZooKeeper编程实践——
ZooKeeper文件系统的增删改查 152
4.4.3 ZooKeeper编程实践——
循环监听 160
思考与练习题 162
参考文献 163
实验5 部署全分布模式HBase集群和
实战HBase 164
5.1 实验目的、实验环境和实验内容 164
5.2 实验原理 165
5.2.1 初识HBase 165
5.2.2 HBase的数据模型 165
5.2.3 HBase的体系架构 169
5.2.4 部署HBase 172
5.2.5 HBase接口 174
5.3 实验步骤 178
5.3.1 规划全分布模式HBase集群 178
5.3.2 部署全分布模式HBase集群 179
5.3.3 启动全分布模式HBase集群 183
5.3.4 验证全分布模式HBase集群 184
5.3.5 使用HBase Shell和HBase
Web UI 186
5.3.6 关闭全分布模式HBase集群 189
5.3.7 实验报告要求 189
5.4 拓展训练 190
5.4.1 搭建HBase的开发环境Eclipse 190
5.4.2 HBase编程实践:HBase表的
增删改 190
思考与练习题 192
参考文献 192
实验6 部署本地模式Hive和实战Hive 194
6.1 实验目的、实验环境和实验内容 194
6.2 实验原理 195
6.2.1 初识Hive 195
6.2.2 Hive的体系架构 196
6.2.3 Hive的数据类型 198
6.2.4 Hive的文件格式 199
6.2.5 Hive的数据模型 200
6.2.6 Hive函数 201
6.2.7 部署Hive 205
6.2.8 Hive接口 208
6.3 实验步骤 211
6.3.1 规划Hive 211
6.3.2 部署本地模式Hive 213
6.3.3 验证Hive 223
6.3.4 使用Hive Shell 224
6.3.5 实验报告要求 227
6.4 拓展训练 228
6.4.1 搭建Hive的开发环境Eclipse 228
6.4.2 Hive编程实践:操纵Hive
数据库和表 228
思考与练习题 235
参考文献 236
下篇 拓展实验篇
实验7 部署Spark集群和Spark编程 238
7.1 实验目的、实验环境和实验内容 238
7.2 实验原理 239
7.2.1 初识Spark 239
7.2.2 Spark的体系架构 241
7.2.3 Spark的计算模型 246
7.2.4 RDD的设计与运行原理 247
7.2.5 Spark集群部署 250
7.2.6 Spark接口 252
7.3 实验步骤 255
7.3.1 规划SparkStandalone集群 255
7.3.2 手工部署SparkStandalone集群 257
7.3.3 启动SparkStandalone集群 261
7.3.4 验证SparkStandalone集群 261
7.3.5 使用Spark Web UI、Spark Shell和
Spark API 261
7.3.6 关闭SparkStandalone集群 267
思考与练习题 268
参考文献 268
实验8 实战Sqoop 269
8.1 实验目的、实验环境和实验内容 269
8.2 实验原理 270
8.2.1 初识Sqoop 270
8.2.2 Sqoop的体系架构 271
8.2.3 安装Sqoop 272
8.2.4 Sqoop Shell 273
8.2.5 Sqoop API 277
8.3 实验步骤 277
8.3.1 规划安装 277
8.3.2 安装和配置Sqoop 279
8.3.3 验证Sqoop 281
8.3.4 使用Sqoop Shell 281
思考与练习题 301
参考文献 301
实验9 实战Flume 302
9.1 实验目的、实验环境和实验内容 302
9.2 实验原理 303
9.2.1 初识Flume 303
9.2.2 Flume的体系架构 304
9.2.3 安装Flume 306
9.2.4 Flume Shell 307
9.2.5 Flume API 309
9.3 实验步骤 309
9.3.1 规划安装 309
9.3.2 安装和配置Flume 310
9.3.3 验证Flume 311
9.3.4 使用Flume 311
思考与练习题 318
参考文献 318
实验10 实战Kafka 319
10.1 实验目的、实验环境和实验内容 319
10.2 实验原理 320
10.2.1 初识Kafka 320
10.2.2 Kafka的体系架构 321
10.2.3 安装Kafka 323
10.2.4 Kafka Shell 325
10.2.5 Kafka API 326
10.3 实验步骤 326
10.3.1 规划Kafka集群 326
10.3.2 部署Kafka集群 327
10.3.3 启动Kafka集群 329
10.3.4 验证Kafka集群 330
10.3.5 使用Kafka Shell 330
10.3.6 关闭Kafka集群 334
思考与练习题 334
参考文献 334
你还可能感兴趣
我要评论
|