本书基于Hadoop 3.x,循序渐进地介绍了Hadoop的相关知识以及Hadoop生态体系中常用的开源大数据项目。本书共11章,其中,第1章主要带领读者了解大数据和Hadoop的基本理论知识;第2章主要演示如何在VMware Workstation安装操作系统为CentOS Stream 9的虚拟机,分别基于伪分布式和完全分布式部署Hadoop,并通过一个简单的案例介绍Hadoop的使用;第3~4章主要讲解Hadoop的3个核心组件HDFS、MapReduce和YARN的原理,并利用这3个核心组件实现分布式存储和分布式计算;第5~10章主要讲解Hadoop生态体系中常用的开源大数据项目的原理和使用,并利用ZooKeeper实现基于高可用模式的Hadoop集群;第11章通过一个完整的实战项目,让读者能够灵活地运用Hadoop及其生态系统的开源大数据项目,具备开发简单项目的能力。
本书可作为高等教育本科院校数据科学与大数据技术及相关专业的教材,并适合大数据开发初学者、大数据运维人员以及大数据分析与挖掘领域的从业者阅读。
本书以Hadoop 3.x为主线,全面介绍Hadoop及其生态体系中常用的大数据开源项目的安装和使用。全书共11章,分别讲解大数据概念、Hadoop基础知识、Hadoop集群部署、HDFS、MapReduce、YARN、ZooKeeper、Hive、Flume、Azkaban和Sqoop,并在最后开发一个完整的网站流量日志分析系统,帮助读者巩固前面所学的内容。
本书附有配套视频、教学课件、教学设计、测试题等资源;同时,为了帮助初学者更好地学习本书中的内容,还提供在线答疑,欢迎读者关注。
第1章 初识Hadoop 1.1 大数据概述 1.1.1 什么是大数据 1.1.2 大数据的数据类型 1.1.3 大数据的特征 1.1.4 研究大数据的意义 1.2 大数据的应用场景 1.2.1 医疗行业的应用 1.2.2 金融行业的应用 1.2.3 零售行业的应用 1.3 Hadoop概述 1.3.1 Hadoop的前世今生 1.3.2 Hadoop的优点 1.3.3 Hadoop的缺点 1.3.4 Hadoop的生态体系 1.3.5 Hadoop架构变迁 1.4 本章小结 1.5 课后习题 第2章 部署Hadoop 2.1 安装准备 2.1.1 创建虚拟机 2.1.2 克隆虚拟机 2.1.3 配置虚拟机 2.1.4 安装JDK 2.2 Hadoop集群部署模式 2.3 基于伪分布式模式部署Hadoop 2.4 基于完全分布式模式部署Hadoop 2.5 案例——词频统计 2.6 本章小结 2.7 课后习题 第3章 HDFS分布式文件系统 3.1 文件系统的分类 3.2 HDFS简介 3.2.1 HDFS架构 3.2.2 HDFS的特点 3.3 HDFS的文件读写流程 3.4 HDFS的健壮性 3.5 HDFS的Shell操作 3.5.1 HDFS Shell介绍 3.5.2 案例——通过Shell脚本定时采集数据到HDFS 3.6 HDFS的Java API操作 3.6.1 HDFS的Java API介绍 3.6.2 案例——使用Java API操作HDFS 3.7 Federation机制 3.7.1 Federation机制的实现原理 3.7.2 Federation机制的特点 3.7.3 Federation机制的实现 3.8 Erasure Coding 3.9 本章小结 3.10 课后习题 第4章 MapReduce分布式计算框架 4.1 MapReduce概述 4.2 MapReduce编程模型 4.3 MapReduce工作原理 4.3.1 MapReduce工作过程 4.3.2 MapTask工作原理 4.3.3 ReduceTask工作原理 4.3.4 Shuffle工作原理 4.4 MapReduce编程组件 4.4.1 InputFormat组件 4.4.2 Mapper组件 4.4.3 Reducer组件 4.4.4 Partitioner组件 4.4.5 OutputFormat组件 4.5 MapReduce驱动类 4.6 MapReduce性能优化策略 4.7 YARN资源管理框架 4.7.1 YARN基本架构 4.7.2 YARN工作流程 4.8 MapReduce经典案例——数据去重 4.8.1 案例分析 4.8.2 案例实现 4.9 MapReduce经典案例——TopN 4.9.1 案例分析 4.9.2 案例实现 4.10 MapReduce经典案例——倒排索引 4.10.1 倒排索引介绍 4.10.2 案例分析 4.10.3 案例实现 4.11 本章小结 4.12 课后习题 第5章 ZooKeeper分布式协调服务 5.1 ZooKeeper简介 5.1.1 ZooKeeper特性 5.1.2 ZooKeeper集群架构 5.2 ZooKeeper数据模型 5.3 ZooKeeper典型应用场景 5.4 ZooKeeper的Watcher机制 5.5 ZooKeeper的选举机制 5.6 部署ZooKeeper集群 5.6.1 基于伪分布式模式部署ZooKeeper集群 5.6.2 基于完全分布式模式部署ZooKeeper集群 5.7 ZooKeeper的Shell操作 5.8 ZooKeeper的Java API操作 5.8.1 创建会话 5.8.2 操作ZooKeeper 5.9 本章小结 5.10 课后习题 第6章 Hadoop高可用集群 6.1 HDFS高可用集群 6.2 YARN高可用集群 6.3 部署Hadoop高可用集群 6.4 本章小结 6.5 课后习题 第7章 Hive数据仓库 7.1 数据仓库简介 7.1.1 什么是数据仓库 7.1.2 数据仓库系统结构 7.1.3 数据仓库分层 7.1.4 数据仓库模型 7.2 Hive简介 7.2.1 Hive与传统关系型数据库的区别 7.2.2 Hive系统架构 7.2.3 Hive工作原理 7.2.4 Hive数据存储模型 7.3 Hive的部署 7.3.1 内嵌模式 7.3.2 本地模式 7.3.3 远程模式 7.4 Hive数据类型 7.5 数据库操作 7.5.1 创建数据库 7.5.2 查看数据库信息 7.5.3 修改数据库属性 7.5.4 删除数据库 7.6 表操作 7.6.1 创建表 7.6.2 查看表 7.6.3 修改表 7.6.4 删除表 7.6.5 修改分区 7.7 数据操作 7.7.1 导入数据 7.7.2 向分区导入数据 7.7.3 查询数据 7.7.4 查询插入 7.7.5 关联查询 7.8 本章小结 7.9 课后习题 第8章 Flume日志采集系统 8.1 Flume概述 8.2 Flume日志采集系统结构 8.3 Flume的部署 8.4 Flume的基本使用 8.5 Flume的采集方案 8.5.1 Flume Sources 8.5.2 Flume Channels 8.5.3 Flume Sinks 8.6 Flume拦截器 8.7 Flume的可靠性保证 8.7.1 负载均衡 8.7.2 故障恢复 8.8 案例——将日志采集到HDFS 8.8.1 案例分析 8.8.2 案例实现 8.9 本章小结 8.10 课后习题 第9章 Azkaban工作流管理器 9.1 工作流管理器概述 9.2 Azkaban概述 9.3 部署Azkaban 9.3.1 Azkaban部署模式 9.3.2 安装Azkaban 9.3.3 配置Azkaban 9.3.4 启动Azkaban 9.4 Azkaban的使用 9.4.1 Azkaban的常用概念 9.4.2 案例演示——依赖任务调度管理 9.4.3 案例演示——MapReduce程序调度管理 9.4.4 案例演示——Hive脚本任务调度管理 9.5 本章小结 9.6 课后习题 第10章 Sqoop数据迁移 10.1 Sqoop概述 10.1.1 Sqoop简介 10.1.2 Sqoop原理 10.2 Sqoop安装配置 10.3 Sqoop命令介绍 10.4 Sqoop数据的导入 10.4.1 数据准备 10.4.2 MySQL导入HDFS 10.4.3 增量导入 10.4.4 MySQL导入Hive 10.4.5 MySQL过滤导入HDFS 10.5 Sqoop数据的导出 10.6 本章小结 10.7 课后习题 第11章 综合项目——网站流量日志数据分析系统 11.1 系统概述 11.1.1 系统背景介绍 11.1.2 需求分析 11.1.3 系统架构 11.2 模块开发 11.3 本章小结