本篇主要提供Hadoop指南:大数据的存储与分析TomWhite著王海,华东,刘喻,吕粤海译出电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com
基本信息
书名:Hadoop指南:大数据的存储与分析
定价:148元
作者:Tom White著 王海,华东,刘喻,吕粤海 译
出版社:清华大学出版社
出版日期:2017-07-01
ISBN:9787302465133
字数:594000
页码:705
版次:4
装帧:平装
开本:16开
商品重量:
编辑
本书结合理论和实践,由浅入深,全方位介绍了Hadoop 这一高性能的海量数据处理和分析平台。全书5部分24 章,第Ⅰ部分介绍Hadoop 基础知识,第Ⅱ部分介绍MapReduce,第Ⅲ部分介绍Hadoop 的运维,第Ⅳ部分介绍Hadoop 相关开源项目,第Ⅴ部分提供了三个案例,分别来自卫生信息技术服务商塞纳(Cerner)、微软的人工智能项目ADAM(一种大规模分布式深度学习框架)和开源项目Cascading(一个新的针对MapReduce 的数据处理API)。本书是一本、全面的Hadoop 参考书和工具书,阐述了Hadoop 生态圈的新发展和应用,程序员可以从中探索海量数据集的存储和分析,管理员可以从中了解Hadoop 集群的安装和运维。
内容提要
本书结合理论和实践,由浅入深,多方面介绍了Hadoop这一高性能的海量数据处理和分析平台。全书5部分24章,第Ⅰ部分介绍Hadoop基础知识,主题涉及Hadoop、MapReduce、Hadoop分布式文件、YARN、Hadoop的I/O操作。第Ⅱ部分介绍MapReduce,主题包括MapReduce应用开发;MapReduce的工作机制、MapReduce的类型与格式、MapReduce的特性。第Ⅲ部分介绍Hadoop的运维,主题涉及构建Hadoop集群、管理Hadoop。第Ⅳ部分介绍Hadoop相关开源项目,主题涉及Avro、Parquet、Flume、Sqoop、Pig、Hive、Crunch、Spark、HBase、ZooKeeper。第Ⅴ部分提供了三个案例,分别来自卫生信息技术服务商塞纳(Cerner)、微软的人工智能项目ADAM(一种大规模分布式深度学习框架)和开源项目Cascading(一个新的针对MapReduce的数据处理API)。 本书是一本很好不错、全面的Hadoop参考书和工具书,阐述了Hadoop生态圈的很新发展和应用,程序员可以从中探索海量数据集的存储和分析,管理员可以从中了解Hadoop集群的安装和运维。
目录
第Ⅰ部分 Hadoop基础知识
章 初识Hadoop3
1.1 数据!数据!3
1.2 数据的存储与分析5
1.3 查询所有数据6
1.4 不仅仅是批处理7
1.5 相较于其他的优势8
1.5.1 关系型数据库管理8
1.5.2 网格计算10
1.5.3 志愿计算11
1.6 Apache Hadoop发展简史12
1.7 本书包含的内容16
第2章 关于MapReduce19
2.1 气象数据集19
2.2 使用Unix工具来分析数据21
2.3 使用Hadoop来分析数据22
2.3.1 map和reduce23
2.3.2 Java MapReduce24
2.4 横向扩展31
2.4.1 数据流31
2.4.2 biner函数35
2.4.3 运行分布式的
MapReduce作业37
2.5 Hadoop Streaming37
2.5.1 Ruby版本38
2.5.2 Python版本40
第3章 Hadoop分布式文件42
3.1 HDFS的设计42
3.2 HDFS的概念44
3.2.1 数据块44
3.2.2 namenode和datanode45
3.2.3 块缓存46
3.2.4 联邦HDFS47
3.2.5 HDFS的高可用性47
3.3 命令行接口50
3.4 Hadoop文件52
3.5 Java接口56
3.5.1 从Hadoop URL读取
数据56
3.5.2 通过FileSystem API
读取数据58
3.5.3 写入数据61
3.5.4 目录63
3.5.5 查询文件63
3.5.6 删除数据68
3.6 数据流68
3.6.1 剖析文件读取68
3.6.2 剖析文件写入71
3.6.3 一致模型74
3.7 通过distcp并行复制76
第4章 关于YARN78
4.1 剖析YARN应用运行机制79
4.1.1 资源请求80
4.1.2 应用生命期81
4.1.3 构建YARN应用81
4.2 YARN与MapReduce 1相比82
4.3 YARN中的调度85
4.3.1 调度选项85
4.3.2 容量调度器配置87
4.3.3 公平调度器配置89
4.3.5调度93
4.3.5 主导资源公平性94
4.4 延伸阅读95
第5章 Hadoop的I/O操作96
5.1 数据完整性96
5.1.1 HDFS的数据完整性97
5.1.2 LocalFileSystem98
5.1.3 ChecksumFileSystem98
5.2 压缩99
5.2.1 codec100
5.2.2 压缩和输入分片105
5.2.3 在MapReduce中使用
压缩106
5.3 序列化109
5.3.1 Writable接口110
5.3.2 Writable类112
5.3.3 实现定制的Writable
集合121
5.3.4 序列化框架125
5.4 基于文件的数据结构127
5.4.1 关于SequenceFile127
5.4.2 关于MapFile135
5.4.3 其他文件格式和
面向列的格式136
第Ⅱ部分 关于MapReduce
第6章 MapReduce应用开发141
6.1 用于配置的API142
6.1.1 资源合并143
6.1.2 变量扩展144
6.2 配置开发环境144
6.2.1 管理配置146
6.2.2 辅助类GenericOptionsParser,
Tool和ToolRunner149
6.3 用MRUnit来写单元152
6.3.1 关于Mapper152
6.3.2 关于Reducer156
6.4 本地运行数据156
6.4.1 在本地作业运行器上
运行作业156
6.4.2驱动程序158
6.5 在集群上运行160
6.5.1 打包作业160
6.5.2 启动作业162
6.5.3 MapReduce的Web
界面165
6.5.4 获取结果167
6.5.5 作业调试168
6.5.6 Hadoop日志171
6.5.7 远程调试173
6.6 作业调优174
6.7 MapReduce的工作流176
6.7.1 将问题分解成
MapReduce作业177
6.7.2 关于JobControl178
6.7.3 关于Apache Oozie179
第7章 MapReduce的工作机制184
7.1 剖析MapReduce作业运行
机制184
7.1.1 作业的提交185
7.1.2 作业的初始化186
7.1.3 任务的分配187
7.1.4 任务的执行188
7.1.5 进度和状态的更新189
7.1.6 作业的完成191
7.2 失败191
7.2.1 任务运行失败191
7.2.2 application master
运行失败193
7.2.3 节点管理器运行失败193
7.2.4 资源管理器运行失败194
7.3 shuffle和排序195
7.3.1 map端195
7.3.2 reduce端197
7.3.3 配置调优199
7.4 任务的执行201
7.4.1 任务执行环境201
7.4.2 推测执行202
7.4.3 关于
OutputCommitters204
第8章 MapReduce的
类型与格式207
8.1 MapReduce的类型207
8.1.1 默认的MapReduce
作业212
8.1.2 默认的Streaming
作业216
8.2 输入格式218
8.2.1 输入分片与记录218
8.2.2 文本输入229
8.2.3 二进制输入233
8.2.4 多个输入234
8.2.5 数据库输入(和输出)235
8.3 输出格式236
8.3.1 文本输出236
8.3.2 二进制输出237
8.3.3 多个输出237
8.3.4输出242
8.3.5 数据库输出242
第9章 MapReduce的特性243
9.1 计数器243
9.1.1 内置计数器243
9.1.2 用户定义的Java
计数器248
9.1.3 用户定义的Streaming
计数器251
9.2 排序252
9.2.1 准备252
9.2.2 部分排序253
9.2.3 全排序255
9.2.4 辅助排序259
9.3 连接264
9.3.1 map端连接266
9.3.2 reduce端连接266
9.4 边数据分布270
9.4.1 利用JobConf来配置
作业270
9.4.2 分布式缓存270
9.5 MapReduce库类276
第Ⅲ部分 Hadoop的操作
0章 构建Hadoop集群279
10.1 集群规范280
10.1.1 集群规模281
10.1.2 网络拓扑282
10.2 集群的构建和安装284
10.2.1 安装Java284
10.2.2 创建Unix 用户账号284
10.2.3 安装Hadoop284
10.2.4 SSH配置285
10.2.5 配置Hadoop286
10.2.6 格式化HDFS 文件
286
10.2.7 启动和停止守护
进程286
10.2.8 创建用户目录288
10.3 Hadoop配置288
10.3.1 配置管理289
10.3.2 环境设置290
10.3.3 Hadoop守护进程的
关键属性293
10.3.4 Hadoop守护进程的
地址和端口300
10.3.5 Hadoop的其他属性303
10.4 安全性305
10.4.1 Kerberos和Hadoop306
10.4.2 委托令牌308
10.4.3 其他安全性改进309
10.5 利用基准评测程序
Hadoop集群311
10.5.1 Hadoop基准评测
程序311
10.5.2 用户作业313
1章 管理Hadoop314
11.1 HDFS314
11.1.1 性数据结构314
11.1.2 安全模式320
11.1.3 日志审计322
11.1.4 工具322
11.2 监控327
11.2.1 日志327
11.2.2 度量和JMX(Java
管理扩展)328
11.3 维护329
11.3.1 日常管理过程329
11.3.2 委任和解除节点331
11.3.3 升级334
第Ⅳ部分 Hadoop相关开源项目
2章 关于Avro341
12.1 Avro数据类型和模式342
12.2 内存中的序列化和
反序列化特定API347
12.3 Avro数据文件349
12.4 互操作性351
12.4.1 Python API351
12.4.2 Avro工具集352
12.5 模式解析352
12.6 排列顺序354
12.7 关于Avro MapReduce356
12.8 使用Avro MapReduce
进行排序359
12.9 其他语言的Avro362
3章 关于Parquet363
13.1 数据模型364
13.2 Parquet文件格式367
13.3 Parquet的配置368
13.4 Parquet文件的读/写369
13.4.1 Avro、Protocol Buffers
和Thrift371
13.4.2 投影模式和读取
模式373
13.5 Parquet MapReduce374
4章 关于Flume377
14.1 安装Flume378
14.2 示例378
14.3 事务和可靠性380
14.4 HDFS Sink382
14.5 扇出385
14.5.1 交付保证386
14.5.2 复制和复用选择器387
14.6 通过代理层分发387
14.7 Sink组391
14.8 Flume与应用程序的集成395
14.9 组件编目395
14.10 延伸阅读397
5章 关于Sqoop398
15.1 获取Sqoop398
15.2 Sqoop连接器400
15.3 一个导入的例子401
15.4 生成代码404
15.5 深入了解数据库导入405
15.5.1 导入控制407
15.5.2 导入和一致性408
15.5.3 增量导入408
15.5.4 直接模式导入408
15.6 使用导入的数据409
15.7 导入大对象412
15.8 执行导出414
15.9 深入了解导出功能416
15.9.1 导出与事务417
15.9.2 导出和SequenceFile418
15.10 延伸阅读419
6章 关于Pig420
16.1 安装与运行Pig421
16.1.1 执行类型422
16.1.2 运行Pig程序423
16.1.3 Grunt424
16.1.4 Pig Latin编辑器424
16.2 示例425
16.3 与数据库进行比较428
16.4 PigLatin429
16.4.1 结构430
16.4.2 语句431
16.4.3 表达式436
16.4.4 类型437
16.4.5 模式438
16.4.6 函数443
16.4.7 宏445
16.5 用户自定义函数446
16.5.1 过滤UDF447
16.5.2 计算UDF450
16.5.3 加载UDF452
16.6 数据处理操作455
16.6.1 数据的加载和存储455
16.6.2 数据的过滤455
16.6.3 数据的分组与连接458
16.6.4 数据的排序463
16.6.5 数据的组合和切分465
16.7 Pig实战465
16.7.1 并行处理465
16.7.2 匿名关系466
16.7.3 参数代换467
16.8 延伸阅读468
7章 关于Hive469
17.1 安装Hive470
Hive的shell环境471
17.2 示例472
17.3 运行Hive473
17.3.1 配置Hive473
17.3.2 Hive服务476
17.3.3 Metastore478
17.4 Hive与传统数据库相比480
17.4.1 读时模式vs.写时
模式480
17.4.2 更新、事务和索引481
17.4.3 其他SQL-on-Hadoop
技术482
17.5 HiveQL483
17.5.1 数据类型484
17.5.2 操作与函数487
17.6 表488
17.6.1 托管表和外部表488
17.6.2 分区和桶490
17.6.3 存储格式494
17.6.4 导入数据498
17.6.5 表的修改500
17.6.6 表的丢弃501
17.7 查询数据501
17.7.1 排序和聚集501
17.7.2 MapReduce脚本502
17.7.3 连接503
17.7.4 子查询506
17.7.5 视图507
17.8 用户定义函数508
17.8.1 写UDF510
17.8.2 写UDAF512
17.9 延伸阅读516
8章 关于Crunch517
18.1 示例518
18.2 Crunch核心API521
18.2.1 基本操作522
18.2.2 类型527
18.2.3 源和目标530
18.2.4 函数532
18.2.5 物化535
18.3 管线执行537
18.3.1 运行管线538
18.3.2 停止管线539
18.3.3 查看Crunch计划540
18.3.4 迭代算法543
18.3.5 给管线设置检查点544
18.4 Crunch库545
18.5 延伸阅读547
9章 关于Spark548
19.1 安装Spark549
19.2 示例549
19.2.1 Spark应用、作业、
阶段和任务551
19.2.2 Scala独立应用552
19.2.3 Java示例553
19.2.4 Python示例554
19.3 弹性分布式数据集555
19.3.1 创建555
19.3.2 转换和动作557
19.3.3 持久化561
19.3.4 序列化563
19.4 共享变量564
19.4.1 广播变量564
19.4.2 累加器565
19.5 剖析Spark作业运行机制565
19.5.1 作业提交566
19.5.2 DAG的构建566
19.5.3 任务调度569
19.5.4 任务执行570
19.6 执行器和集群管理器570
19.7 延伸阅读574
第20章 关于HBase575
20.1 HBase基础575
20.2 概念576
20.2.1 数据模型的
“旋风之旅”576
20.2.2 实现578
20.3 安装581
20.4 客户端584
20.4.1 Java584
20.4.2 MapReduce588
20.4.3 REST和Thrift589
20.5 创建在线查询应用589
20.5.1 模式设计590
20.5.2 加载数据591
20.5.3 在线查询595
20.6 HBase和RDBMS的比较598
20.6.1 成功的服务599
20.6.2 HBase600
20.7 Pras601
20.7.1 HDFS601
20.7.2 用户界面602
20.7.3 度量602
20.7.4 计数器602
20.8 延伸阅读602
第21章 关于ZooKeeper604
21.1 安装和运行ZooKeeper605
21.2 示例607
21.2.1 ZooKeeper中的
组成员关系608
21.2.2 创建组608
21.2.3 加入组611
21.2.4 列出组成员612
21.2.5 删除组614
21.3 ZooKeeper服务615
21.3.1 数据模型615
21.3.2 操作618
21.3.3 实现622
21.3.4 一致性624
21.3.5 会话626
21.3.6 状态628
21.4 使用ZooKeeper来构建
应用629
21.4.1 配置服务629
21.4.2 可复原的ZooKeeper
应用633
21.4.3 锁服务637
21.4.4 更多分布式数据
结构和协议639
21.5 生产环境中的ZooKeeper640
21.5.1 可恢复性和性能641
21.5.2 配置642
21.6 延伸阅读643
第Ⅴ部分 案例学习
第22章公司塞纳(Cerner)
的可聚合数据647
22.1 从多CPU到语义集成647
22.2 进入Apache Crunch648
22.3 建立全貌649
22.4 集成健康数据651
22.5 框架之上的可组合性654
22.6 下一步655
第23章 生物数据科学:
用软件拯救生命657
23.1 DNA的结构659
23.2 遗传密码:将DNA字符
转译为蛋白质660
22.3 将DNA想象成源代码661
23.4 人类基因组计划和参考
基因组663
22.5 DNA测序和比对664
23.6 ADAM,一个可扩展的
基因组分析平台666
23.7 使用Avro接口描述语言进行
自然语言编程666
23.8 使用Parquet进行面向列的
存取668
23.9 一个简单例子:用Spark和
ADAM做k-mer计数669
23.10 从个性化广告到个性化
672
23.11 联系我们673
第24章 开源项目Cascading674
24.1 字段、元组和管道675
24.2 操作678
24.3 Taps,Schemes和Flows680
24.4 Cascading实践应用681
24.5 灵活性684
24.6 ShareThis中的Hadoop和
Cascading685
24.7 总结689
附录A安装Apache Hadoop691
附录B关于CDH697
附录C准备NCDC气象数据699
附录D新版和旧版Java
MapReduce API702
作者介绍
Tom White是很杰出的Hadoop专家之一。自2007年2月以来,Tom White一直是Apache Hadoop的提交者(mitter),也是Apache软件基金会的成员。Tom是Cloudera的软件工程师,他是Cloudera的首批员工,对Apache和Cloudera做出了举足轻重的贡献。在此之前,他是一名独立的Hadoop顾问,帮助公司搭建、使用和扩展Hadoop。他是很多行业大会的专题演讲人,比如ApacheCon、OSCON和Strata。Tom在英国剑桥大学获得数学学士学位,在利兹大学获得科学哲学硕士学位。他目前与家人居住在威尔士。
王海博士,解放军理工大学通信工程学院教授,博导,教研中心主任,长期从事无线自组网网络的设计与研发工作,主持国家自然科学基金、国家863计划课题等多项重量课题,近5年获军队科技进步二等奖1项,三等奖6项,作为发明人申请国家发明专利十余项,发表学术论文50余篇。
华东博士,现任南京医科大学计算机教研室教师,一直致力于计算机辅助教学的相关技术研究,陆续开发了人体解剖学网络自主学习考试平台、诊断学自主学习平台和面向执业医师考试的预约化考试平台等,并在各个学科得到广泛的使用,获得全国高等学校计算机课件评比一等奖和三等奖各一项。主编、副主编教材两部,获发明专利一项、软件著作权多项。
序言