《Hadoop应用开发技术详解》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:刘刚著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2014
  • ISBN:9787111452447
  • 页数:408 页
图书介绍:本书一共分为五个部分:基础篇(1~2章),主要介绍了Hadoop的概念、用途、整个生态环境中的其他技术,以及Hadoop的安装与配置;应用篇(3~6章),分别详细讲解了MapReduce的用法、HDFS的技术细节、I/O的技术细节、MR的工作原理等;开发篇(7~12章),主要讲解了MR、HBase、Hive、Pig的应用开发方法,以及FlumeNG的使用方法;实战篇(13~17章),主要讲解了几个大型的案例,包括MR与Eclipse的集成、MR应用开发的案例、HDFS的应用开发案例、HBase的应用开发案例、Hive的应用开发案例;提高篇(18~20章)主要讲解了MR、HBase和Hive的高级特性和性能优化。

第1章 Hadoop概述 1

1.1 Hadoop起源 1

1.1.1 Google与Hadoop模块 1

1.1.2 为什么会有Hadoop 1

1.1.3 Hadoop版本介绍 2

1.2 Hadoop生态系统 3

1.3 Hadoop常用项目介绍 4

1.4 Hadoop在国内的应用 6

1.5 本章小结 7

第2章 Hadoop安装 8

2.1 Hadoop环境安装配置 8

2.1.1 安装VMware 8

2.1.2 安装Ubuntu 8

2.1.3 安装VMwareTools 15

2.1.4 安装JDK 15

2.2 Hadoop安装模式 16

2.2.1 单机安装 17

2.2.2 伪分布式安装 18

2.2.3 分布式安装 20

2.3 如何使用Hadoop 27

2.3.1 Hadoop的启动与停止 27

2.3.2 Hadoop配置文件 28

2.4 本章小结 28

第3章 MapReduce快速入门 30

3.1 WordCount实例准备开发环境 30

3.1.1 使用Eclipse创建一个Java工程 30

3.1.2 导入Hadoop的JAR文件 31

3.2 MapReduce代码的实现 32

3.2.1 编写WordMapper类 32

3.2.2 编写WordReducer类 33

3.2.3 编写WordMain驱动类 34

3.3 打包、部署和运行 35

3.3.1 打包成JAR文件 35

3.3.2 部署和运行 36

3.3.3 测试结果 38

3.4 本章小结 39

第4章 Hadoop分布式文件系统详解 40

4.1 认识HDFS 40

4.1.1 HDFS的特点 40

4.1.2 Hadoop文件系统的接口 45

4.1.3 HDFS的Web服务 46

4.2 HDFS架构 46

4.2.1 机架 47

4.2.2 数据块 47

4.2.3 元数据节点 48

4.2.4 数据节点 50

4.2.5 辅助元数据节点 50

4.2.6 名字空间 52

4.2.7 数据复制 53

4.2.8 块备份原理 53

4.2.9 机架感知 54

4.3 Hadoop的RPC机制 55

4.3.1 RPC的实现流程 56

4.3.2 RPC的实体模型 56

4.3.3 文件的读取 57

4.3.4 文件的写入 58

4.3.5 文件的一致模型 59

4.4 HDFS的HA机制 59

4.4.1 HA集群 59

4.4.2 HA架构 60

4.4.3 为什么会有HA机制 61

4.5 HDFS的Federation机制 62

4.5.1 单个NameNode的HDFS架构的局限性 62

4.5.2 为什么引入Federation机制 63

4.5.3 Federation架构 64

4.5.4 多个名字空间的管理问题 65

4.6 Hadoop文件系统的访问 66

4.6.1 安全模式 66

4.6.2 HDFS的Shell访问 67

4.6.3 HDFS处理文件的命令 67

4.7 JavaAPI接口 72

4.7.1 Hadoop URL读取数据 73

4.7.2 FileSystem类 73

4.7.3 FileStatus类 75

4.7.4 FSDataInputStream类 77

4.7.5 FSDataOutputStream类 81

4.7.6 列出HDFS下所有的文件 83

4.7.7 文件的匹配 84

4.7.8 PathFilter对象 84

4.8 维护HDFS 86

4.8.1 追加数据 86

4.8.2 并行复制 88

4.8.3 升级与回滚 88

4.8.4 添加节点 90

4.8.5 删除节点 91

4.9 HDFS权限管理 92

4.9.1 用户身份 92

4.9.2 权限管理的原理 93

4.9.3 设置权限的Shell命令 93

4.9.4 超级用户 93

4.9.5 HDFS权限配置参数 94

4.10 本章小结 94

第5章 Hadoop文件I/O详解 95

5.1 Hadoop文件的数据结构 95

5.1.1 SequenceFile存储 95

5.1.2 MapFile存储 99

5.1.3 SequenceFile转换为MapFile 101

5.2 HDFS数据完整性 103

5.2.1 校验和 103

5.2.2 数据块检测程序 104

5.3 文件序列化 106

5.3.1 进程间通信对序列化的要求 106

5.3.2 Hadoop文件的序列化 107

5.3.3 Writable接口 107

5.3.4 WritableComparable接口 108

5.3.5 自定义Writable接口 109

5.3.6 序列化框架 113

5.3.7 数据序列化系统Avro 114

5.4 Hadoop的Writable类型 115

5.4.1 Writable类的层次结构 115

5.4.2 Text类型 116

5.4.3 NullWritable类型 117

5.4.4 ObjectWritable类型 117

5.4.5 GenericWritable类型 117

5.5 文件压缩 117

5.5.1 Hadoop支持的压缩格式 118

5.5.2 Hadoop中的编码器和解码器 118

5.5.3 本地库 121

5.5.4 可分割压缩LZO 122

5.5.5 压缩文件性能比较 122

5.5.6 Snappy压缩 124

5.5.7 gzip、LZO和Snappy比较 124

5.6 本章小结 125

第6章 MapReduce工作原理 126

6.1 MapReduce的函数式编程概念 126

6.1.1 列表处理 126

6.1.2 Mapping数据列表 127

6.1.3 Reducing数据列表 127

6.1.4 Mapper和Reducer如何工作 128

6.1.5 应用实例:词频统计 129

6.2 MapReduce框架结构 129

6.2.1 MapReduce模型 130

6.2.2 MapReduce框架组成 130

6.3 MapReduce运行原理 132

6.3.1 作业的提交 132

6.3.2 作业初始化 134

6.3.3 任务的分配 136

6.3.4 任务的执行 136

6.3.5 进度和状态的更新 136

6.3.6 MapReduce的进度组成 137

6.3.7 任务完成 137

6.4 MapReduce容错 137

6.4.1 任务失败 138

6.4.2 TaskTracker失败 138

6.4.3 JobTracker失败 138

6.4.4 子任务失败 138

6.4.5 任务失败反复次数的处理方法 139

6.5 Shuffle阶段和Sort阶段 139

6.5.1 Map端的Shuffle 140

6.5.2 Reduce端的Shuffle 142

6.5.3 Shuffle过程参数调优 143

6.6 任务的执行 144

6.6.1 推测执行 144

6.6.2 任务JVM重用 145

6.6.3 跳过坏的记录 145

6.6.4 任务执行的环境 146

6.7 作业调度器 146

6.7.1 先进先出调度器 146

6.7.2 容量调度器 146

6.7.3 公平调度器 149

6.8 自定义Hadoop调度器 153

6.8.1 Hadoop调度器框架 153

6.8.2 编写Hadoop调度器 155

6.9 YARN介绍 157

6.9.1 异步编程模型 157

6.9.2 YARN支持的计算框架 158

6.9.3 YARN架构 158

6.9.4 YARN工作流程 159

6.10 本章小结 160

第7章 Eclipse插件的应用 161

7.1 编译Hadoop源码 161

7.1.1 下载Hadoop源码 161

7.1.2 准备编译环境 161

7.1.3 编译common组件 162

7.2 Eclipse安装MapReduce插件 166

7.2.1 查找MapReduce插件 166

7.2.2 新建一个Hadoop location 167

7.2.3 Hadoop插件操作HDFS 168

7.2.4 运行MapReduce的驱动类 170

7.3 MapReduce的Debug调试 171

7.3.1 进入Debug运行模式 171

7.3.2 Debug调试具体操作 172

7.4 单元测试框架MRUnit 174

7.4.1 认识MRUnit框架 174

7.4.2 准备测试案例 174

7.4.3 Mapper单元测试 176

7.4.4 Reducer单元测试 177

7.4.5 MapReduce单元测试 178

7.5 本章小结 179

第8章 MapReduce编程开发 180

8.1 WordCount案例分析 180

8.1.1 MapReduce工作流程 180

8.1.2 WordCount的Map过程 181

8.1.3 WordCount的Reduce过程 182

8.1.4 每个过程产生的结果 182

8.1.5 Mapper抽象类 184

8.1.6 Reducer抽象类 186

8.1.7 MapReduce驱动 188

8.1.8 MapReduce最小驱动 189

8.2 输入格式 193

8.2.1 InputFormat接口 193

8.2.2 InputSplit类 195

8.2.3 RecordReader类 197

8.2.4 应用实例:随机生成100个小数并求最大值 198

8.3 输出格式 205

8.3.1 OutputFormat接口 205

8.3.2 RecordWriter类 206

8.3.3 应用实例:把首字母相同的单词放到一个文件里 206

8.4 压缩格式 211

8.4.1 如何在MapReduce中使用压缩 211

8.4.2 Map作业输出结果的压缩 212

8.5 MapReduce优化 212

8.5.1 Combiner类 212

8.5.2 Partitioner类 213

8.5.3 分布式缓存 217

8.6 辅助类 218

8.6.1 读取Hadoop配置文件 218

8.6.2 设置Hadoop的配置文件属性 219

8.6.3 GenericOptionsParser选项 220

8.7 Streaming接口 221

8.7.1 Streaming工作原理 221

8.7.2 Streaming编程接口参数 221

8.7.3 作业配置属性 222

8.7.4 应用实例:抓取网页的标题 223

8.8 本章小结 225

第9章 MapReduce高级应用 226

9.1 计数器 226

9.1.1 默认计数器 226

9.1.2 自定义计数器 229

9.1.3 获取计数器 231

9.2 MapReduce二次排序 232

9.2.1 二次排序原理 232

9.2.2 二次排序的算法流程 233

9.2.3 代码实现 235

9.3 MapReduce中的Join算法 240

9.3.1 Reduce端Join 240

9.3.2 Map端Join 242

9.3.3 半连接Semi Join 244

9.4 MapReduce从MySQL读写数据 244

9.4.1 读数据 245

9.4.2 写数据 248

9.5 Hadoop系统调优 248

9.5.1 小文件优化 249

9.5.2 Map和Reduce个数设置 249

9.6 本章小结 250

第10章 数据仓库工具Hive 251

10.1 认识Hive 251

10.1.1 Hive工作原理 251

10.1.2 Hive数据类型 252

10.1.3 Hive的特点 253

10.1.4 Hive下载与安装 255

10.2 Hive架构 256

10.2.1 Hive用户接口 257

10.2.2 Hive元数据库 259

10.2.3 Hive的数据存储 262

10.2.4 Hive解释器 263

10.3 Hive文件格式 264

10.3.1 TextFile格式 265

10.3.2 SequenceFile格式 265

10.3.3 RCFile文件格式 265

10.3.4 自定义文件格式 269

10.4 Hive操作 270

10.4.1 表操作 270

10.4.2 视图操作 278

10.4.3 索引操作 280

10.4.4 分区操作 283

10.4.5 桶操作 289

10.5 Hive复合类型 290

10.5.1 Struct类型 291

10.5.2 Array类型 292

10.5.3 Map类型 293

10.6 Hive的JOIN详解 294

10.6.1 JOIN操作语法 294

10.6.2 JOIN原理 294

10.6.3 外部JOIN 295

10.6.4 Map端JOIN 296

10.6.5 JOIN中处理NULL值的语义区别 296

10.7 Hive优化策略 297

10.7.1 列裁剪 297

10.7.2 Map Join操作 297

10.7.3 Group By操作 298

10.7.4 合并小文件 298

10.8 Hive内置操作符与函数 298

10.8.1 字符串函数 299

10.8.2 集合统计函数 299

10.8.3 复合类型操作 301

10.9 Hive用户自定义函数接口 302

10.9.1 用户自定义函数UDF 302

10.9.2 用户自定义聚合函数UDAF 304

10.10 Hive的权限控制 306

10.10.1 角色的创建和删除 307

10.10.2 角色的授权和撤销 307

10.10.3 超级管理员权限 309

10.11 应用实例:使用JDBC开发Hive程序 311

10.11.1 准备测试数据 311

10.11.2 代码实现 311

10.12 本章小结 313

第11章 开源数据库HBase 314

11.1 认识HBase 314

11.1.1 HBase的特点 314

11.1.2 HBase访问接口 314

11.1.3 HBase存储结构 315

11.1.4 HBase存储格式 317

11.2 HBase设计 319

11.2.1 逻辑视图 320

11.2.2 框架结构及流程 321

11.2.3 Table和Region的关系 323

11.2.4 -ROOT-表和.META.表 323

11.3 关键算法和流程 324

11.3.1 Region定位 324

11.3.2 读写过程 325

11.3.3 Region分配 327

11.3.4 Region Server上线和下线 327

11.3.5 Master上线和下线 327

11.4 HBase安装 328

11.4.1 HBase单机安装 328

11.4.2 HBase分布式安装 330

11.5 HBase的Shell操作 334

11.5.1 一般操作 334

11.5.2 DDL操作 335

11.5.3 DML操作 337

11.5.4 HBase Shell脚本 339

11.6 HBase客户端 340

11.6.1 JavaAPI交互 340

11.6.2 MapReduce操作HBase 344

11.6.3 向HBase中写入数据 348

11.6.4 读取HBase中的数据 350

11.6.5 Avro、REST和Thrift接口 352

11.7 本章小结 353

第12章 Mahout算法 354

12.1 Mahout的使用 354

12.1.1 安装Mahout 354

12.1.2 运行一个Mahout案例 354

12.2 Mahout数据表示 356

12.2.1 偏好Perference类 356

12.2.2 数据模型DataModel类 357

12.2.3 Mahout链接MySQL数据库 358

12.3 认识Taste框架 360

12.4 Mahout推荐器 361

12.4.1 基于用户的推荐器 361

12.4.2 基于项目的推荐器 362

12.4.3 Slope One推荐策略 363

12.5 推荐系统 365

12.5.1 个性化推荐 365

12.5.2 商品推荐系统案例 366

12.6 本章小结 370

附录A Hive内置操作符与函数 371

附录B HBase默认配置解释 392

附录C Hadoop三个配置文件的参数含义说明 398