Hadoop应用开发技术详解》

基本信息

作者: 刘刚

丛书名: 大数据技术丛书

出版社:机械工业出版社

ISBN:9787111452447

上架时间:2014-1-10

出版日期:2014 年1月

开本:16开

页码:1

版次:1-1

所属分类:计算机

更多关于》》》Hadoop应用开发技术详解

内容简介

书籍

计算机书籍

  《hadoop应用开发技术详解》由资深hadoop技术专家撰写,系统、全面、深入地讲解了hadoop开发者需要掌握的技术和知识,包括hdfs的原理和应用、hadoop文件i/o的原理和应用、mapreduce的原理和高级应用、mapreduce的编程方法和技巧,以及hive、hbase和mahout等技术和工具的使用。并且提供大量基于实际生产环境的案例,实战性非常强。

  全书一共12章。第1~2章详细地介绍了hadoop的生态系统、关键技术以及安装和配置;第3章是mapreduce的使用入门,让读者了解整个开发过程;第4~5章详细讲解了分布式文件系统hdfs和hadoop的文件i/o;第6章分析了mapreduce的工作原理;第7章讲解了如何利用eclipse来编译hadoop的源代码,以及如何对hadoop应用进行测试和调试;第8~9章细致地讲解了mapreduce的开发方法和高级应用;第10~12章系统地讲解了hive、hbase和mahout。

目录

《hadoop应用开发技术详解》

前 言

第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 安装vmware tools / 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 java api接口 / 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 java api交互 / 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

本图书信息来源:互动出版

《Hadoop应用开发技术详解》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. 使用php扩展mcrypt实现AES加密

    AES(Advanced Encryption Standard,高级加密标准)是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.Rijndael是 ...

  2. JavaScript“并非”一切皆对象

    上一篇:<函数声明和函数表达式--函数声明和函数表达式的异同> p{font-size:14px; } 写在前面 网上非常多都在说"JavaScript一切皆对象",那 ...

  3. netty 基础知识

    http://my.oschina.net/bieber/blog/406799 线程模型 http://hongweiyi.com/2014/01/netty-4-x-thread-model/ h ...

  4. 【51nod】1594 Gcd and Phi

    题解 跟随小迪学姐的步伐,学习一下数论 小迪学姐太巨了! 这道题的式子很好推嘛 \(\sum_{i = 1}^{n} \sum_{j = 1}^{n} \sum_{d|\phi(i),\phi(j)} ...

  5. oracle创建计划任务

    特别提示: oracle是执行完任务,才按照interval去计算下次执行时间!!! 为精确每个5分钟执行一个任务,必须自己计算时间. 如:trunc_minute(sysdate)+/ create ...

  6. 洛谷P0248 [NOI2010] 超级钢琴 [RMQ,贪心]

    题目传送门 超级钢琴 题目描述 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符 ...

  7. TCP/IP——链路层简记

    在TCP/IP协议族中链路层的主要目的有三个: 1,为IP模块发送和接受IP数据报. 2,为ARP模块发送ARP请求和接受ARP应答. 3,为RARP模块发送RARP请求和接受RARP应答. 链路层包 ...

  8. 我的OI生涯 第六章

    开学了,但是我们并没有像一个正常的高二学生一样坐在教室里接受调研考试的洗礼. 暑假作业这种东西早已被甩在一旁,可以想象回去补文化课时该有多么狼狈. 大王给我们制定了周密的计划,每周两次测试,加上蔡老师 ...

  9. luoguP4457 [BJOI2018]治疗之雨 概率期望 + 高斯消元

    应该是最后一道紫色的概率了....然而颜色啥也代表不了.... 首先看懂题意: 你现在有$p$点体力,你的体力上限为$n$ 在一轮中, 1.如果你的体力没有满,你有$\frac{1}{m + 1}$的 ...

  10. python3-开发进阶Flask的基础(5)

    内容概要: SQLAlchemy flsak-sqlalchemy flask-script flask-migrate Flask的目录结构 一.SQLAlchemy 1.概述 SQLAlchemy ...