本书采用“理论+实战”的形式编写,全面介绍了Hadoop大数据挖掘的相关知识。作者为本书专门录制了配套教学视频,便于读者高效、直观地学习。本书分为13章,涵盖的主要内容有集群及开发环境搭建;快速构建一个Hadoop项目并线上运行;Hadoop套件实战;Hive编程;游戏玩家的用户行为分析;Hadoop平台管理与维护;Hadoop异常处理解决方案;Hadoop核心源码初识;Hadoop通信机制和内部协议;HDFS核心模块分析;ELK实战案例;Kafka实战案例;Hadoop拓展。本书不但适合刚入门的初学者系统学习Hadoop的各种基础语法和开发技巧,而且也适合有多年开发经验的开发者进阶提高。另外,本书也适合社会培训机构和相关院校作为教材或者教学参考书使用。
封面图
目录
- 前言
- 第1章 集群及开发环境搭建1
- 1.1 环境准备1
- 1.1.1 基础软件下载1
- 1.1.2 准备Linux操作系统2
- 1.2 安装Hadoop4
- 1.2.1 基础环境配置4
- 1.2.2 Zookeeper部署7
- 1.2.3 Hadoop部署9
- 1.2.4 效果验证21
- 1.2.5 集群架构详解24
- 1.3 Hadoop版Hello World25
- 1.3.1 Hadoop Shell介绍25
- 1.3.2 WordCount初体验27
- 1.4 开发环境28
- 1.4.1 搭建本地开发环境28
- 1.4.2 运行及调试预览31
- 1.5 小结34
- 第2章 实战:快速构建一个Hadoop项目并线上运行35
- 2.1 构建一个简单的项目工程35
- 2.1.1 构建Java Project结构工程35
- 2.1.2 构建Maven结构工程36
- 2.2 操作分布式文件系统(HDFS)39
- 2.2.1 基本的应用接口操作39
- 2.2.2 在高可用平台上的使用方法42
- 2.3 利用IDE提交MapReduce作业43
- 2.3.1 在单点上的操作43
- 2.3.2 在高可用平台上的操作46
- 2.4 编译应用程序并打包51
- 2.4.1 编译Java Project工程并打包51
- 2.4.2 编译Maven工程并打包55
- 2.5 部署与调度58
- 2.5.1 部署应用58
- 2.5.2 调度任务59
- 2.6 小结60
- 第3章 Hadoop套件实战61
- 3.1 Sqoop——数据传输工具61
- 3.1.1 背景概述61
- 3.1.2 安装及基本使用62
- 3.1.3 实战:在关系型数据库与分布式文件系统之间传输数据64
- 3.2 Flume——日志收集工具66
- 3.2.1 背景概述67
- 3.2.2 安装与基本使用67
- 3.2.3 实战:收集系统日志并上传到分布式文件系统(HDFS)上72
- 3.3 HBase——分布式数据库74
- 3.3.1 背景概述74
- 3.3.2 存储架构介绍75
- 3.3.3 安装与基本使用75
- 3.3.4 实战:对HBase业务表进行增、删、改、查操作79
- 3.4 Zeppelin——数据集分析工具85
- 3.4.1 背景概述85
- 3.4.2 安装与基本使用85
- 3.4.3 实战:使用解释器操作不同的数据处理引擎88
- 3.5 Drill——低延时SQL查询引擎92
- 3.5.1 背景概述93
- 3.5.2 安装与基本使用93
- 3.5.3 实战:对分布式文件系统(HDFS)使用SQL进行查询95
- 3.5.4 实战:使用SQL查询HBase数据库99
- 3.5.5 实战:对数据仓库(Hive)使用类实时统计、查询操作101
- 3.6 Spark——实时流数据计算104
- 3.6.1 背景概述104
- 3.6.2 安装部署及使用105
- 3.6.3 实战:对接Kafka消息数据,消费、计算及落地108
- 3.7 小结114
- 第4章 Hive编程——使用SQL提交MapReduce任务到Hadoop集群115
- 4.1 环境准备与Hive初识115
- 4.1.1 背景介绍115
- 4.1.2 基础环境准备116
- 4.1.3 Hive结构初识116
- 4.1.4 Hive与关系型数据库(RDBMS)118
- 4.2 安装与配置Hive118
- 4.2.1 Hive集群基础架构119
- 4.2.2 利用HAProxy实现Hive Server负载均衡120
- 4.2.3 安装分布式Hive集群123
- 4.3 可编程方式126
- 4.3.1 数据类型126
- 4.3.2 存储格式128
- 4.3.3 基础命令129
- 4.3.4 Java编程语言操作数据仓库(Hive)131
- 4.3.5 实践Hive Streaming134
- 4.4 运维和监控138
- 4.4.1 基础命令138
- 4.4.2 监控工具Hive Cube140
- 4.5 小结143
- 第5章 游戏玩家的用户行为分析——特征提取144
- 5.1 项目应用概述144
- 5.1.1 场景介绍144
- 5.1.2 平台架构与数据采集145
- 5.1.3 准备系统环境和软件147
- 5.2 分析与设计148
- 5.2.1 整体分析148
- 5.2.2 指标与数据源分析149
- 5.2.3 整体设计151
- 5.3 技术选型153
- 5.3.1 套件选取简述154
- 5.3.2 套件使用简述154
- 5.4 编码实践157
- 5.4.1 实现代码157
- 5.4.2 统计结果处理163
- 5.4.3 应用调度169
- 5.5 小结174
- 第6章 Hadoop平台管理与维护175
- 6.1 Hadoop分布式文件系统(HDFS)175
- 6.1.1 HDFS特性175
- 6.1.2 基础命令详解176
- 6.1.3 解读NameNode Standby179
- 6.2 Hadoop平台监控182
- 6.2.1 Hadoop日志183
- 6.2.2 常用分布式监控工具187
- 6.3 平台维护196
- 6.3.1 安全模式196
- 6.3.2 节点管理198
- 6.3.3 HDFS快照200
- 6.4 小结203
- 第7章 Hadoop异常处理解决方案204
- 7.1 定位异常204
- 7.1.1 跟踪日志204
- 7.1.2 分析异常信息208
- 7.1.3 阅读开发业务代码209
- 7.2 解决问题的方式210
- 7.2.1 搜索关键字211
- 7.2.2 查看Hadoop JIRA212
- 7.2.3 阅读相关源码213
- 7.3 实战案例分析216
- 7.3.1 案例分析1:启动HBase失败216
- 7.3.2 案例分析2:HBase表查询失败219
- 7.3.3 案例分析3:Spark的临时数据不自动清理222
- 7.4 小结223
- 第8章 初识Hadoop核心源码224
- 8.1 基础准备与源码编译224
- 8.1.1 准备环境224
- 8.1.2 加载源码228
- 8.1.3 编译源码230
- 8.2 初识Hadoop 2233
- 8.2.1 Hadoop的起源233
- 8.2.2 Hadoop 2源码结构图234
- 8.2.3 Hadoop模块包235
- 8.3 MapReduce框架剖析236
- 8.3.1 第一代MapReduce框架236
- 8.3.2 第二代MapReduce框架238
- 8.3.3 两代MapReduce框架的区别239
- 8.3.4 第二代MapReduce框架的重构思路240
- 8.4 序列化241
- 8.4.1 序列化的由来242
- 8.4.2 Hadoop序列化243
- 8.4.3 Writable实现类245
- 8.5 小结247
- 第9章 Hadoop通信机制和内部协议248
- 9.1 Hadoop RPC概述248
- 9.1.1 通信模型248
- 9.1.2 Hadoop RPC特点250
- 9.2 Hadoop RPC的分析与使用251
- 9.2.1 基础结构251
- 9.2.2 使用示例257
- 9.2.3 其他开源RPC框架264
- 9.3 通信协议266
- 9.3.1 MapReduce通信协议266
- 9.3.2 RPC协议的实现273
- 9.4 小结277
- 第10章 Hadoop分布式文件系统剖析278
- 10.1 HDFS介绍278
- 10.1.1 HDFS概述278
- 10.1.2 其他分布式文件系统282
- 10.2 HDFS架构剖析283
- 10.2.1 设计特点283
- 10.2.2 命令空间和节点285
- 10.2.3 数据备份剖析289
- 10.3 数据迁移实战292
- 10.3.1 HDFS跨集群迁移292
- 10.3.2 HBase集群跨集群数据迁移297
- 10.4 小结301
- 第11章 ELK实战案例——游戏应用实时日志分析平台302
- 11.1 Logstash——实时日志采集、分析和传输302
- 11.1.1 Logstash介绍302
- 11.1.2 Logstash安装306
- 11.1.3 实战操作308
- 11.2 Elasticsearch——分布式存储及搜索引擎309
- 11.2.1 应用场景309
- 11.2.2 基本概念310
- 11.2.3 集群部署312
- 11.2.4 实战操作317
- 11.3 Kibana——可视化管理系统323
- 11.3.1 Kibana特性324
- 11.3.2 Kibana安装324
- 11.3.3 实战操作328
- 11.4 实时日志分析平台案例331
- 11.4.1 案例概述331
- 11.4.2 平台体系架构与剖析332
- 11.4.3 实战操作334
- 11.5 小结339
- 第12章 Kafka实战案例——实时处理游戏用户数据340
- 12.1 应用概述340
- 12.1.1 Kafka回顾340
- 12.1.2 项目简述347
- 12.1.3 Kafka工程准备348
- 12.2 项目的分析与设计349
- 12.2.1 项目背景和价值概述349
- 12.2.2 生产模块350
- 12.2.3 消费模块352
- 12.2.4 体系架构352
- 12.3 项目的编码实践354
- 12.3.1 生产模块354
- 12.3.2 消费模块356
- 12.3.3 数据持久化362
- 12.3.4 应用调度364
- 12.4 小结369
- 第13章 Hadoop拓展——Kafka剖析370
- 13.1 Kafka开发与维护370
- 13.1.1 接口370
- 13.1.2 新旧API编写372
- 13.1.3 Kafka常用命令380
- 13.2 运维监控383
- 13.2.1 监控指标384
- 13.2.2 Kafka开源监控工具——Kafka Eagle384
- 13.3 Kafka源码分析391
- 13.3.1 源码工程环境构建391
- 13.3.2 分布式选举算法剖析394
- 13.3.3 Kafka Offset解读398
- 13.3.4 存储机制和副本398
- 13.4 小结402