编辑推荐
Hadoop是目前*受关注的大数据处理平台和解决方案,并且已经广泛应用于生产环境。本书主要介绍Hadoop技术的相关知识,不但详细介绍了Hadoop、MapReduce、HDFS、Hive和Sqoop,还深入探讨了Hadoop的运维和调优,并包含了一个具有代表性的完整的基于Hadoop的商业智能系统的设计和实现。
本书的**特点是面向实践。基础篇介绍Hadoop及相关组件的同时,包含了大量动手实例,而应用篇包含的基于Hadoop的完整实例脱胎于生产环境的真实项目。在应用篇中,读者不仅能够通过项目实战巩固基础篇的学习效果,还能学习商业智能系统的开发过程。
本书由浅至深,从理论基础到项目实战,适合Hadoop的初学者阅读,也适合作为高等院校相关课程的教学参考书。
内容简介
《Hadoop海量数据处理:技术详解与项目实战》介绍了Hadoop技术的相关知识,并将理论知识与实际项目相结合。全书共分为三个部分:基础篇、应用篇和总结篇。基础篇详细介绍了Hadoop、MapReduce、HDFS、Hive和Sqoop,并深入探讨了Hadoop的运维和调优;应用篇则包含了一个具有代表性的完整的基于Hadoop的商业智能系统的设计和实现;结束篇对全书进行总结,并对技术发展做了展望。
《Hadoop海量数据处理:技术详解与项目实战》结构针对学习曲线进行了优化,由浅至深,从理论基础到项目实战,适合Hadoop的初学者阅读,也适合作为高等院校相关课程的教学参考书。
作者简介
范东来 北京航空航天大学硕士,就职于清华大学苏州汽车研究院大数据处理中心,数据挖掘工程师,对Apache Hadoop、Apache Spark的开发、运维和数据处理有较丰富的经验,研究方向为分布式计算、机器学习。
目录
- 基础篇:Hadoop基础
- 第1章 绪论
- 1.1 Hadoop和云计算
- 1.1.1 Hadoop的电梯演讲
- 1.1.2 Hadoop生态圈
- 1.1.3 云计算的定义
- 1.1.4 云计算的类型
- 1.1.5 Hadoop和云计算
- 1.2 Hadoop和大数据
- 1.2.1 大数据的定义
- 1.2.2 大数据的结构类型
- 1.2.3 大数据行业应用实例
- 1.2.4 Hadoop和大数据
- 1.2.5 其他大数据处理平台
- 1.3 数据挖掘和商业智能
- 1.3.1 数据挖掘的定义
- 1.3.2 数据仓库
- 1.3.3 操作数据库系统和数据仓库系统的区别
- 1.3.4 为什么需要分离的数据仓库
- 1.3.5 商业智能
- 1.3.6 大数据时代的商业智能
- 第2章 环境准备
- 2.1 Hadoop的发行版本选择
- 2.1.1 Apache Hadoop
- 2.1.2 CDH
- 2.1.3 Hadoop的版本
- 2.1.4 如何选择Hadoop的版本
- 2.2 Hadoop架构
- 2.2.1 Hadoop HDFS架构
- 2.2.2 Hadoop MapReduce架构
- 2.2.3 Hadoop架构
- 2.3 安装Hadoop
- 2.3.1 安装运行环境
- 2.3.2 修改主机名和用户名
- 2.3.3 配置静态IP地址
- 2.3.4 配置SSH无密码连接
- 2.3.5 安装JDK
- 2.3.6 配置Hadoop
- 2.3.7 格式化HDFS
- 2.3.8 启动Hadoop并验证安装
- 2.4 安装Hive
- 2.4.1 安装元数据库
- 2.4.2 修改Hive配置文件
- 2.4.3 验证安装
- 2.5 安装Sqoop
- 2.6 Eclipse Hadoop插件的安装和使用
- 2.6.1 安装并配置Eclipse Hadoop插件
- 2.6.2 Eclipse插件的使用
- 第3章 Hadoop的基石:HDFS
- 3.1 认识HDFS
- 3.1.1 HDFS的设计理念
- 3.1.2 HDFS的架构
- 3.1.3 HDFS容错
- 3.2 HDFS读取文件和写入文件
- 3.2.1 块的分布
- 3.2.2 数据读取
- 3.2.3 写入数据
- 3.2.4 数据完整性
- 3.3 如何访问HDFS
- 3.3.1 命令行接口
- 3.3.2 Java API
- 3.3.3 其他常用的接口
- 3.3.4 Web UI
- 第4章 分而治之的智慧:MapReduce
- 4.1 认识MapReduce
- 4.1.1 MapReduce的编程思想
- 4.1.2 MapReduce运行环境
- 4.1.3 MapReduce作业和任务
- 4.1.4 MapReduce的计算资源划分
- 4.1.5 MapReduce的局限性
- 4.2 Hello WordCount
- 4.2.1 WordCount的设计思路
- 4.2.2 编写WordCount
- 4.2.3 运行程序
- 4.2.4 还能更快吗
- 4.3 MapReduce的过程
- 4.3.1 从输入到输出
- 4.3.2 input
- 4.3.3 map及中间结果的输出
- 4.3.4 shuffle
- 4.3.5 reduce及最后结果的输出
- 4.3.6 sort
- 4.3.7 作业的进度组成
- 4.4 MapReduce的工作机制
- 4.4.1 作业提交
- 4.4.2 作业初始化
- 4.4.3 任务分配
- 4.4.4 任务执行
- 4.4.5 任务完成
- 4.4.6 推测执行
- 4.4.7 MapReduce容错
- 4.5 MapReduce编程
- 4.5.1 Writable类
- 4.5.2 编写Writable类
- 4.5.3 编写Mapper类
- 4.5.4 编写Reducer类
- 4.5.5 控制shuffle
- 4.5.6 控制sort
- 4.5.7 编写main函数
- 4.6 MapReduce编程实例:连接
- 4.6.1 设计思路
- 4.6.2 编写Mapper类
- 4.6.3 编写Reducer类
- 4.6.4 编写main函数
- 4.7 MapReduce编程实例:二次排序
- 4.7.1 设计思路
- 4.7.2 编写Mapper类
- 4.7.3 编写Partitioner类
- 4.7.4 编写SortComparator类
- 4.7.5 编写Reducer类
- 4.7.6 编写main函数
- 4.8 MapReduce编程实例:全排序
- 4.8.1 设计思路
- 4.8.2 编写代码
- 第5章 SQL on Hadoop:Hive
- 5.1 认识Hive
- 5.1.1 从MapReduce到SQL
- 5.1.2 Hive架构
- 5.1.3 Hive与关系型数据库的区别
- 5.1.4 Hive命令的使用
- 5.2 数据类型和存储格式
- 5.2.1 基本数据类型
- 5.2.2 复杂数据类型
- 5.2.3 存储格式
- 5.2.4 数据格式
- 5.3 HQL:数据定义
- 5.3.1 Hive中的数据库
- 5.3.2 Hive中的表
- 5.3.3 创建表
- 5.3.4 管理表
- 5.3.5 外部表
- 5.3.6 分区表
- 5.3.7 删除表
- 5.3.8 修改表
- 5.4 HQL:数据操作
- 5.4.1 装载数据
- 5.4.2 通过查询语句向表中插入数据
- 5.4.3 利用动态分区向表中插入数据
- 5.4.4 通过CTAS加载数据
- 5.4.5 导出数据
- 5.5 HQL:数据查询
- 5.5.1 SELECT…FROM语句
- 5.5.2 WHERE语句
- 5.5.3 GROUP BY和HAVING语句
- 5.5.4JOIN语句
- 5.5.5 ORDER BY和SORT BY语句
- 5.5.6 DISTRIBUTE BY和SORTBY语句
- 5.5.7 CLUSTER BY
- 5.5.8 分桶和抽样
- 5.5.9 UNION ALL
- 5.6 Hive函数
- 5.6.1 标准函数
- 5.6.2 聚合函数
- 5.6.3 表生成函数
- 5.7 Hive用户自定义函数
- 5.7.1 UDF
- 5.7.2 UDAF
- 5.7.3 UDTF
- 5.7.4 运行
- 第6章 SQL to Hadoop : Sqoop
- 6.1 一个Sqoop示例
- 6.2 导入过程
- 6.3 导出过程
- 6.4 Sqoop的使用
- 6.4.1 codegen
- 6.4.2 create-hive-table
- 6.4.3 eval
- 6.4.4 export
- 6.4.5 help
- 6.4.6 import
- 6.4.7 import-all-tables
- 6.4.8 job
- 6.4.9 list-databases
- 6.4.10 list-tables
- 6.4.11 merge
- 6.4.12 metastore
- 6.4.13 version
- 第7章 Hadoop性能调优和运维
- 7.1 Hadoop客户端
- 7.2 Hadoop性能调优
- 7.2.1 选择合适的硬件
- 7.2.2 操作系统调优
- 7.2.3 JVM调优
- 7.2.4 Hadoop参数调优
- 7.3 Hive性能调优
- 7.3.1 JOIN优化
- 7.3.2 Reducer的数量
- 7.3.3 列裁剪
- 7.3.4 分区裁剪
- 7.3.5 GROUP BY优化
- 7.3.6 合并小文件
- 7.3.7 MULTI-GROUP BY和MULTI-INSERT