首页>参考读物>计算机科学与技术>软件与程序设计

Hadoop核心技术
作者 : 翟周伟 著
丛书名 : 大数据技术丛书
出版日期 : 2015-03-25
ISBN : 978-7-111-49468-3
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 400
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

内容简介
Hadoop及其相关技术在国内的使用已经非常普遍,相关的图书也比较多,但是很多书都离企业的真实需求比较远,也就是说不能解决企业的实际问题,没有抓到痛点。本书作者在大数据领域研究和实践多年,是百度资深的大数据工程师和算法工程师,深谙企业和大数据工程师们究竟需要什么和关心什么,于是写了这本书,它是Hadoop技术实践经验的总结。从使用、实现原理、运维和开发4个方面对Hadoop的核心技术进行了深入的讲解:
(1)使用:由纲及目,详细讲解了HDFS存储系统、MapReduce计算框架,以及HDFS的命令系统,全面而又不乏实战;
(2)原理:结合源代码,深度分析了MapReduce、HDFS、Streaming、Pipes、Hadoop作业调度系统等重要技术和组件的架构设计、工作机制和实现原理;
(3)运维:结合百度的实际生产环境,详细讲解了Hadoop集群的安装、配置、测试以及管理和运维;
(4)开发:详细讲解了Hadoop Streaming、Pipes的使用和开发实践,以及MapReduce的编程实践和常见问题。

图书特色

百度资深Hadoop技术专家和高级算法工程师撰写,结合百度大数据实践,直击企业痛点,多位大数据技术专家联袂推荐
从使用、原理、运维和开发4个方面深度讲解Hadoop最核心的技术
互联网与传统行业结合, 加速了大规模数据的生成和积累。这些数据蕴含了大量有价值的信息,及时有效地挖掘这些信息可以进一步促进行业健康、快速发展。Hadoop是处理大规模数据的有力工具, 在多个行业中被广泛使用,显示出巨大的威力。本书作者在百度长期使用Hadoop处理超大规模的数据, 有着丰富的理论基础和实战经验。 本书是作者经验的结晶, 从基础、高级,实战三个角度,逐步深入地讲解了Hadoop核心技术原理和应用,对于hadoop技术使用者和开发者而言是一本不可多得的学习参考书。
                         —— 百度网页搜索部技术总监 沈抖
本书主要对Hadoop的基本原理和优化配置由浅入深进行了详细分析,最后通过实战案例进一步讲解分析。本书对HDFS、MapReduce以及Hadoop Streaming 和 Pipes的实现机制进行了深度分析;对Hadoop调度作了详细说明,特别是对公平调度器(FairScheduler)的设计理念和配置优化做了详细剖析,无论是对于初学者还是熟悉Hadoop的同学本书都非常适合,特别适合MapReduce的开发人员、Hadoop集群运维人员、分布式计算工程师以及做数据挖掘的工程师和架构师。
—— 大数据资深专家和AdMaster技术副总裁 卢亿雷
作为目前使用最为广泛的大数据处理平台,把Hadoop用起来很容易,但是要“用好”很难。“用好”要充分发挥平台的能力,解决各种复杂的业务需求,高效稳定地将Hadoop应用于生产系统。本书从Hadoop的基本使用开始讲解,逐步深入到实现机制分析,最后回归到实战级的应用开发,对Hadoop的开发、运维人员来说,是“用好”Hadoop的一本不可多得的参考书。
—— 腾讯高级工程师 蔡斌
可以毫不夸张地说,近十年来,正是Hadoop的出现和不断完善,让海量数据挖掘成为可能,为科研和IT业界带来了一场革命性的风暴。身处风暴中心的互联网企业们,更是将这个工具发挥到极致,不但在该平台上运行无数的离线服务,还逐渐以更加开放的心态,反哺社区和学习者。本书作者翟周伟,是百度排序算法组的高级工程师,同事评价:“Hadoop的任何功能,如果说他不知道,那就是Hadoop不支持。”
—— 百度网页搜索部Rank主任架构师 王毅轩
Hadoop很好地解决了大规模数据的存储和计算问题,在百度广泛使用,是核心基础平台之一。本书深入浅出,循序渐进地介绍Hadoop的核心技术,非常适合大家学习参考。
—— 百度网页搜索部Rank主任架构师 朱文佳

作者简介
翟周伟  就职于百度,资深Hadoop技术专家,专注于Hadoop&大数据、数据挖掘、自然语言处理等领域。2009年便开始利用Hadoop构建商业级大数据系统,是国内该领域最早的一批人之一,负责设计过多个基于Hadoop的大数据平台和分析系统。2011年合著出版《Hadoop开源云计算平台》。在自然语言处理领域申请过一项发明专利。

内容简介
这是一本技术深度与企业实践并重的著作,由百度顶尖的Hadoop技术工程师撰写,是百度Hadoop技术实践经验的总结。本书从使用、实现原理、运维和开发4个方面对Hadoop的核心技术进行了深入的讲解。
使用:详细讲解了HDFS存储系统、MapReduce计算框架,以及HDFS的命令系统;
原理:结合源代码,深度分析了MapReduce、HDFS、Streaming、Pipes、Hadoop作业调度系统等重要技术和组件的架构设计、工作机制和实现原理;
运维:结合百度的实际生产环境,详细讲解了Hadoop集群的安装、配置、测试以及管理和运维;
开发:详细讲解了Hadoop Streaming、Pipes的使用和开发实践,以及MapReduce的编程实践和常见问题。
与市面上已有的Hadoop图书相比,本书最大的不同之处是它直击企业应用和实践Hadoop技术的痛点,深入讲解了企业最需要和最头疼的技术和问题,内容非常聚焦。

图书前言

为什么要写这本书
如今是一个数据爆炸的时代,个人的图片、视频、文档等数据很容易就可达到数百GB的规模,而企业的数据规模增长得更快,以互联网搜索引擎公司为例,往往需要存储爬虫获取的所有站点的原始网页数据,同时还需要记录数以亿计网民的搜索点击行为及日志等重要数据,这些数据的规模可以达到PB,甚至是EB级别。为了解决这些数据的存储和相关计算问题就必须构建一个强大且稳定的分布式集群系统来作为搜索引擎的基础架构支撑平台,但是对大多数的互联网公司而言,研发一个这样的高效能系统往往要支付高昂的费用。然而值得庆幸的是Google在2004年公布了关于其基础架构的两篇核心论文GFS(The Google File System)和MapReduce(MapReduce: SimplifiedData Processing on Large Clusters),正是这两篇论文奠定了Hadoop的理论和实践基础,而后顶级工程师Doug Cutting将Google的GFS分布式文件系统和MapReduce并行计算模型实现且命名为Hadoop,并将Hadoop开放源代码贡献给开源世界。经过多年的发展,如今已经形成了以Hadoop为核心的大数据生态系统,开创了通用海量数据处理基础架构平台的先河。
Hadoop是一个非常优秀的分布式计算系统,利用通用的硬件就可以构建一个强大、稳定、简单,并且高效的分布式集群计算系统,完全可以满足互联网公司基础架构平台的需求,付出相对低廉的代价就可以轻松处理超大规模的数据。如今Hadoop已经被国内外各大公司广泛使用,在国内以百度、腾讯、阿里等为代表的著名互联网公司也都利用Hadoop构建底层的大数据基础架构平台,而移动、联通、电信等电信企业,以及电力、银行等国内传统企业也在大规模使用Hadoop。因此学习并掌握Hadoop技术已经是进入这些企业的基本技能之一。相应地,学习和使用Hadoop技术的爱好者和开发者也越来越多。本书正是在这样的背景下创作出来的,希望可以帮助更多的人学习并掌握Hadoop技术,从而推动Hadoop技术在中国的推广,进而推动中国信息产业的发展。
Hadoop如今已经发行了多个版本,并且产生了各种以Hadoop为基础的应用系统,但是就核心技术而言Hadoop主要有两个重要版本:第一个就是以MapReduce模型为核心技术的版本,目前开源稳定版本为Hadoop-1.X(包括Hadoop-0.20.X,Hadoop-0.21.X,Hadoop-0.22.X等);第二个就是以YARN计算框架为核心技术的新版本,目前最新版本为Hadoop-2.X(包括Hadoop-0.23.X等)。目前以MapReduce模型为核心技术的Hadoop版本已经在工业界的商业系统运行多年,不论是在稳定性还是高效性方面都已经得到了认可,而YARN计算框架虽然有更好的计算模式,但是在稳定性方面还没有真正被大规模的商业系统所证实,更多的是作为实验系统或者新特性被调研使用。因此将本书以MapReduce模型为核心技术的版本Hadoop-1.X作为研究和讲解对象,分为三大部分由浅入深进行讲解,包括基础篇、高级篇和实战篇。为了使读者更好地理解并掌握Hadoop核心技术,本书对核心实现机制都结合了源代码进行深入分析,并在实战篇中结合实际应用讲解了如何使用Hadoop。
读者对象
(1)Hadoop技术学习者和爱好者
Hadoop作为一个分布式计算框架已经成为了互联网公司基础架构系统的标配,也吸引了越来越多的开发者和爱好者的关注。本书在写作上由纲及目、由浅入深,一步一步带领读者从Hadoop技术的入门开始,逐步到核心原理的实现机制以及Hadoop的实战应用,因此本书可以帮助Hadoop技术学习者和爱好者快速入门,对Hadoop的学习起到一个比较全面、深入而又不乏实战性的导向作用。
(2)Hadoop MapReduce并行应用开发者
Hadoop可以说是一个复杂而又简单的系统,说其复杂是因为Hadoop同时实现了分布式文件系统和并行计算框架,在实现机制上考虑了各种容错情况,因此不可谓不复杂;说其简单是因为Hadoop向并行应用开发者提供了非常简单的编程接口——Map和Reduce函数操作,因此,应用开发者只需要会使用这两个编程接口就可以很方便地编写处理大规模数据的并行应用程序。但是如果开发者想要编写高质量的并行程序,而只懂得基本的MapReduce编程方法肯定是不够的,这相当于知其然而不知其所以然,因此开发人员还需要知其所以然——必须理解Hadoop的核心实现机制,需要对Hadoop框架有一个全面而又深入的认识和理解,只有这样Hadoop应用开发者才能编写出高效而又简洁的MapReduce应用程序。
(3)Hadoop集群运维人员
Hadoop运维工程师可以说是复合型人才,因为Hadoop的运维不仅需要熟悉Linux系统的运维方法,还需要非常熟悉Hadoop的各种管理命令,不仅如此,还要了解Hadoop集群搭建、权限管理、作业调度管理与维护等。本书在Hadoop命令系统和集群搭建方面专门编排了章节进行讲解,因此可以作为Hadoop运维工程师的工具书。Hadoop运维工程师的主要职责虽然是通过集群运维保证Hadoop的高可靠性和高可用性,但是仍然需要对Hadoop的核心实现机制,甚至是某些实现细节进行深入理解,只有这样才可以在集群出现异常时快速找出问题,起到锦上添花的作用,因此本书对Hadoop运维工程来说也是一本值得精读的参考书。
(4)分布式系统的相关研发人员
Hadoop可以说是分布式系统领域中的经典之作,分布式文件系统和分布式计算系统中的核心理论方法都在Hadoop中有很好的实现。因此,通过对Hadoop的学习不但可以理解分布式系统中的理论方法,而且还可以深入理解这些理论方法具体的实现机制。
(5)大数据技术学习者和大数据工程师
如果从大数据的角度来讲,Hadoop无疑是目前使用最为广泛的大数据平台。特别是在互联网领域,Hadoop数据平台作为底层基础架构系统支撑着大多数的数据统计分析应用,因此对于大数据技术学习者和大数据工程师而言,学习Hadoop技术是进入大数据领域的一个很好的切入点。
如何阅读本书
本书分为三篇。
第一篇为基础篇(第1~6章),从认识Hadoop开始,讲解Hadoop的前世今生以及使用领域,然后正式介绍Hadoop的基本使用,帮助读者了解Hadoop的背景知识和简单使用方法,接着通过HDFS分布式文件系统和MapReduce并行计算模型从理论和实现机制的角度对Hadoop核心技术进行讲解,最后对Hadoop的命令系统进行了系统的介绍。对于初级和中级读者而言,第一篇的内容需要重点阅读和学习,这篇是Hadoop核心技术的基础,只有基础知识扎实后才能更好地掌握Hadoop的高级功能和精髓。
第二篇为高级篇(第7~9章),从原理与实现的角度对Hadoop的核心功能进行了深入的研究,涵盖MapReduce深度分析、Hadoop Streaming和Pipes原理解析,以及Hadoop作业调度器系统的深入研究和讲解。本篇内容适合在阅读了基础篇的基础上或者已经对Hadoop的核心原理有了一定理解的基础上进行阅读。
第三篇为实战篇(第10~12章),从实战的角度进行讲解,首先讲述Hadoop集群搭建技术,然后对Streaming和Pipes编程进行了实战级的应用讲解,Streaming编程接口是一个非常简单且高效的MapReduce编程方式,由于不限制编程语言,因此Streaming的使用比Java原生接口应用得还要广泛,由此可见,学习并掌握Streaming编程技术非常有助于软件工程师的Hadoop应用技术的提高。第12章讲解了Hadoop MapReduce应用开发实战,从整体的并行应用开发角度进行讲解,对实际开发过程中的常用功能使用和常见问题解决都进行了介绍。这部分内容适合在实际工作中使用Hadoop开发应用的工程师阅读和学习。
勘误和支持
由于作者的水平有限且编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,特意创建一个在线支持与应急方案的二级网站:http://book.zhaizhouwei.cn。读者可以将书中的错误发布在Bug勘误表页面中,此外如果你遇到任何问题,也可以访问Q&A页面,我将尽量在线上为读者提供最满意的解答。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱zhaizhouwei@163.com,期待能够得到你们的真挚反馈。
致谢
感谢北京邮电大学吕玉琴教授、刘刚博士、侯斌博士、李威海博士等老师,是他们在我读研的时候悉心指导我进入大数据以及统计挖掘领域,并使我能在2009年就开始学习并使用Hadoop技术,才使得本书今日的出版成为可能。特别感谢百度网页搜索部技术总监沈抖博士在百忙之中抽出时间对本书进行通读并指正,在多个章节提出了非常专业的指导建议。在此真心的感谢他们。
感谢机械工业出版社华章分社的杨福川老师和姜影老师,从本书的初期策划到最终的出版过程中始终支持我的写作,是他们的鼓励和帮助引导我能顺利完成全部书稿。
最后感谢我的爸爸、妈妈等家人,感谢他们给我的鼓励并时刻给予我信心和力量!感谢我的夫人欧阳茹给我生活上的悉心照顾以及在琐碎事情上的宽容大度。
谨以此书献给我最亲爱的家人、同事,以及众多热爱Hadoop的朋友们!

翟周伟

上架指导

计算机\程序设计

封底文字

互联网与传统行业结合, 加速了大规模数据的生成和积累。这些数据蕴含了大量有价值的信息,及时有效地挖掘这些信息可以进一步促进行业的健康、快速发展。Hadoop是处理大规模数据的有力工具, 在多个行业中被广泛使用,发挥了巨大的威力。本书作者在百度长期使用Hadoop处理超大规模的数据, 有着丰富的理论基础和实战经验。 本书是作者经验的结晶, 从基础、高级,实战三个角度,逐步深入的讲解了Hadoop核心技术原理和应用,对于hadoop技术使用者和开发者而言是一本不可多得的学习参考。
                         ——百度网页搜索部技术总监 沈抖
本书主要对Hadoop-1.X的基本原理和优化配置由浅入深进行了详细分析,最后通过用实战案例进行讲解分析。本书对HDFS、MapReduce以及Hadoop Streaming 和 Pipes的实现机制进行了深度分析;对Hadoop调度作了详细说明,特别是对公平调度器(FairScheduler)的设计理念和配置优化做了详细剖析,无论是对于初学者还是熟悉Hadoop的同学都非常适合。特别适合MapReduce的开发人员、Hadoop集群运维人员、分布式计算工程师以及做数据挖掘的工程师和架构师。
——大数据资深专家和AdMaster技术副总裁 卢亿雷
作为目前使用最为广泛的大数据处理平台,把Hadoop用起来很容易,但是要“用好”很难。“用好”要充分发挥平台的能力,解决各种复杂的业务需求,高效稳定地将Hadoop应用于生产系统。本书从Hadoop的基本使用开始讲解,逐步深入到实现机制分析,最后回归到实战级的应用开发,对Hadoop的开发、运维人员,是“用好”Hadoop的一本不可多得的参考书。
——腾讯高级工程师 蔡斌

可以毫不夸张地说,近十年来,正是Hadoop的出现和不断完善,让海量数据挖掘成为可能,为科研和IT业界带来了一场革命性的风暴。身处风暴中心的互联网企业们,更是将这个工具发挥到极致,不但在该平台上运行无数的离线服务,还逐渐以更加开放的心态,反哺社区和学习者。本书作者翟周伟,是百度排序算法组的高级工程师,同事评价:“Hadoop的任何功能,如果说他不知道,那就是不支持。”
——百度网页搜索部Rank主任架构师 王毅轩
Hadoop很好的解决了大规模数据的存储和计算问题,在百度广泛使用,是核心基础平台之一。本书深入浅出,循序渐进地介绍Hadoop的核心技术,非常适合大家学习参考。
——百度网页搜索部Rank主任架构师 朱文佳

作者简介

翟周伟 著:暂无简介

图书目录

前 言
基 础 篇
第1章 认识Hadoop 2
1.1 缘于搜索的小象 2
1.1.1 Hadoop的身世 2
1.1.2 Hadoop简介 3
1.1.3 Hadoop发展简史 6
1.2 大数据、Hadoop和云计算 7
1.2.1 大数据 7
1.2.2 大数据、Hadoop和云计算的关系 8
1.3 设计思想与架构 9
1.3.1 数据存储与切分 9
1.3.2 MapReduce模型 11
1.3.3 MPI和MapReduce 13
1.4 国外Hadoop的应用现状 13
1.5 国内Hadoop的应用现状 17
1.6 Hadoop发行版 20
1.6.1 Apache Hadoop 20
1.6.2 Cloudera Hadoop 20
1.6.3 Hortonworks Hadoop发行版 21
1.6.4 MapR Hadoop发行版 22
1.6.5 IBM Hadoop发行版 24
1.6.6 Intel Hadoop发行版 24
1.6.7 华为Hadoop发行版 25
1.7 小结 26
第2章 Hadoop使用之初体验 27
2.1 搭建测试环境 27
2.1.1 软件与准备 27
2.1.2 安装与配置 28
2.1.3 启动与停止 29
2.2 算法分析与设计 31
2.2.1 Map设计 31
2.2.2 Reduce设计 32
2.3 实现接口 32
2.3.1 Java API实现 33
2.3.2 Streaming接口实现 36
2.3.3 Pipes接口实现 38
2.4 编译 40
2.4.1 基于Java API实现的编译 40
2.4.2 基于Streaming实现的编译 40
2.4.3 基于Pipes实现的编译 41
2.5 提交作业 41
2.5.1 基于Java API实现作业提交 41
2.5.2 基于Streaming实现作业提交 42
2.5.3 基于Pipes实现作业提交 43
2.6 小结 44
第3章 Hadoop存储系统 45
3.1 基本概念 46
3.1.1 NameNode 46
3.1.2 DateNode 46
3.1.3 客户端 47
3.1.4 块 47
3.2 HDFS的特性和目标 48
3.2.1 HDFS的特性 48
3.2.2 HDFS的目标 48
3.3 HDFS架构 49
3.3.1 Master/Slave架构 49
3.3.2 NameNode和Secondary NameNode通信模型 51
3.3.3 文件存取机制 52
3.4 HDFS核心设计 54
3.4.1 Block大小 54
3.4.2 数据复制 55
3.4.3 数据副本存放策略 56
3.4.4 数据组织 57
3.4.5 空间回收 57
3.4.6 通信协议 58
3.4.7 安全模式 58
3.4.8 机架感知 59
3.4.9 健壮性 59
3.4.10 负载均衡 60
3.4.11 升级和回滚机制 62
3.5 HDFS权限管理 64
3.5.1 用户身份 64
3.5.2 系统实现 65
3.5.3 超级用户 65
3.5.4 配置参数 65
3.6 HDFS配额管理 66
3.7 HDFS的缺点 67
3.8 小结 68
第4章 HDFS的使用 69
4.1 HDFS环境准备 69
4.1.1 HDFS安装配置 69
4.1.2 HDFS格式化与启动 70
4.1.3 HDFS运行检查 70
4.2 HDFS命令的使用 71
4.2.1 fs shell 71
4.2.2 archive 77
4.2.3 distcp 78
4.2.4 fsck 81
4.3 HDFS Java API的使用方法 82
4.3.1 Java API简介 82
4.3.2 读文件 82
4.3.3 写文件 86
4.3.4 删除文件或目录 90
4.4 C接口libhdfs 91
4.4.1 libhdfs介绍 91
4.4.2 编译与部署 91
4.4.3 libhdfs接口介绍 92
4.4.4 libhdfs使用举例 95
4.5 WebHDFS接口 97
4.5.1 WebHDFS REST API简介 97
4.5.2 WebHDFS配置 98
4.5.3 WebHDFS使用 98
4.5.4 WebHDFS错误响应和查询参数 101
4.6 小结 103
第5章 MapReduce计算框架 104
5.1 Hadoop MapReduce简介 104
5.2 MapReduce模型 105
5.2.1 MapReduce编程模型 105
5.2.2 MapReduce实现原理 106
5.3 计算流程与机制 108
5.3.1 作业提交和初始化 108
5.3.2 Mapper 110
5.3.3 Reducer 111
5.3.4 Reporter和OutputCollector 112
5.4 MapReduce的输入/输出格式 113
5.4.1 输入格式 113
5.4.2 输出格式 118
5.5 核心问题 124
5.5.1 Map和Reduce数量 124
5.5.2 作业配置 126
5.5.3 作业执行和环境 127
5.5.4 作业容错机制 129
5.5.5 作业调度 131
5.6 有用的MapReduce特性 132
5.6.1 计数器 132
5.6.2 DistributedCache 134
5.6.3 Tool 135
5.6.4 IsolationRunner 136
5.6.5 Prof iling 136
5.6.6 MapReduce调试 136
5.6.7 数据压缩 137
5.6.8 优化 138
5.7 小结 138
第6章 Hadoop命令系统 139
6.1 Hadoop命令系统的组成 139
6.2 用户命令 141
6.3 管理员命令 144
6.4 测试命令 148
6.5 应用命令 156
6.6 Hadoop的streaming命令 163
6.6.1 streaming命令 163
6.6.2 参数使用分析 164
6.7 Hadoop的pipes命令 168
6.7.1 pipes命令 168
6.7.2 参数使用分析 169
6.8 小结 170
高 级 篇
第7章 MapReduce深度分析 172
7.1 MapReduce总结构分析 172
7.1.1 数据流向分析 172
7.1.2 处理流程分析 174
7.2 MapTask实现分析 176
7.2.1 总逻辑分析 176
7.2.2 Read阶段 178
7.2.3 Map阶段 178
7.2.4 Collector和Partitioner阶段 180
7.2.5 Spill阶段  181
7.2.6 Merge阶段 185
7.3 ReduceTask实现分析 186
7.3.1 总逻辑分析 186
7.3.2 Shuffle阶段 187
7.3.3 Merge阶段 189
7.3.4 Sort阶段 190
7.3.5 Reduce阶段 191
7.4 JobTracker分析 192
7.4.1 JobTracker服务分析 192
7.4.2 JobTracker启动分析 193
7.4.3 JobTracker核心子线程分析 195
7.5 TaskTracker分析 201
7.5.1 TaskTracker启动分析 201
7.5.2 TaskTracker核心子线程分析 205
7.6 心跳机制实现分析 207
7.6.1 心跳检测分析 207
7.6.2 TaskTracker.transmitHeart-Beat() 207
7.6.3 JobTracker.heartbeat() 209
7.6.4 JobTracker.processHeartbeat() 212
7.7 作业创建分析 213
7.7.1 初始化分析 214
7.7.2 作业提交分析 215
7.8 作业执行分析 217
7.8.1 JobTracker初始化 218
7.8.2 TaskTracker.startNewTask() 220
7.8.3 TaskTracker.localizeJob() 220
7.8.4 TaskRunner.run() 221
7.8.5 MapTask.run() 222
7.9 小结 223
第8章 Hadoop Streaming和Pipes原理与实现 224
8.1 Streaming原理浅析 224
8.2 Streaming实现架构 226
8.3 Streaming核心实现机制 227
8.3.1 主控框架实现 227
8.3.2 用户进程管理 228
8.3.3 框架和用户程序的交互 229
8.3.4 PipeMapper和PiperReducer 230
8.4 Pipes原理浅析 231
8.5 Pipes实现架构 233
8.6 Pipes核心实现机制 234
8.6.1 主控类实现 234
8.6.2 用户进程管理 235
8.6.3 PipesMapRunner 235
8.6.4 PipesReducer 238
8.6.5 C++端HadoopPipes 238
8.7 小结 239
第9章 Hadoop作业调度系统 240
9.1 作业调度概述 241
9.1.1 相关概念 241
9.1.2 作业调度流程 242
9.1.3 集群资源组织与管理 243
9.1.4 队列控制和权限管理 244
9.1.5 插件式调度框架 245
9.2 FIFO调度器 246
9.2.1 基本调度策略 246
9.2.2 FIFO实现分析 247
9.2.3 FIFO初始化与停止 248
9.2.4 作业监听控制 249
9.2.5 任务分配算法 250
9.2.6 配置与使用 254
9.3 公平调度器 254
9.3.1 产生背景 254
9.3.2 主要功能 255
9.3.3 基本调度策略 255
9.3.4 FairScheduler实现分析 257
9.3.5 FairScheduler启停分析 258
9.3.6 作业监听控制 260
9.3.7 资源池管理 260
9.3.8 作业更新策略 262
9.3.9 作业权重和资源量的计算 266
9.3.10 任务分配算法 267
9.3.11 FairScheduler配置参数 268
9.3.12 使用与管理 270
9.4 容量调度器 272
9.4.1 产生背景 272
9.4.2 主要功能 272
9.4.3 基本调度策略 274
9.4.4 CapacityScheduler实现分析 274
9.4.5 CapacityScheduler启停分析 275
9.4.6 作业监听控制 277
9.4.7 作业初始化分析 277
9.4.8 任务分配算法 278
9.4.9 内存匹配机制 279
9.4.10 配置与使用 280
9.5 调度器对比分析 283
9.5.1 调度策略对比 283
9.5.2 队列和优先级 283
9.5.3 资源分配保证 283
9.5.4 作业限制 284
9.5.5 配置管理 284
9.5.6 扩展性支持 284
9.5.7 资源抢占和延迟调度 284
9.5.8 优缺点分析 285
9.6 其他调度器 285
9.6.1 HOD调度器 285
9.6.2 LATE调度器 286
9.7 小结 288
实 战 篇
第10章 Hadoop集群搭建 290
10.1 Hadoop版本的选择 290
10.2 集群基础硬件需求 291
 10.2.1 内存 291
 10.2.2 CPU 292
 10.2.3 磁盘 292
 10.2.4 网卡 293
 10.2.5 网络拓扑 293
10.3 集群基础软件需求 294
 10.3.1 操作系统 294
 10.3.2 JVM和SSH 295
10.4 虚拟化需求 295
10.5 事前准备 296
 10.5.1 创建安装用户 296
 10.5.2 安装Java 297
 10.5.3 安装SSH并设置 297
 10.5.4 防火墙端口设置 298
10.6 安装Hadoop 298
 10.6.1 安装HDFS 299
 10.6.2 安装MapReduce 299
10.7 集群配置 300
 10.7.1 配置管理 300
 10.7.2 环境变量配置 301
 10.7.3 核心参数配置 302
 10.7.4 HDFS参数配置 303
 10.7.5 MapReduce参数配置 306
 10.7.6 masters和slaves配置 313
 10.7.7 客户端配置 313
10.8 启动和停止 314
 10.8.1 启动/停止HDFS 314
 10.8.2 启动/停止MapReduce 315
 10.8.3 启动验证 315
10.9 集群基准测试 316
 10.9.1 HDFS基准测试 316
 10.9.2 MapReduce基准测试 317
 10.9.3 综合性能测试 318
10.10 集群搭建实例 319
 10.10.1 部署策略 319
 10.10.2 软件和硬件环境 320
 10.10.3 Hadoop安装 321
 10.10.4 配置core-site.xml 321
 10.10.5 配置hdfs-site.xml 322
 10.10.6 配置mapred-site.xml 322
 10.10.7 SecondaryNameNode和Slave 324
 10.10.8 配置作业队列 324
 10.10.9 配置第三方调度器 325
 10.10.10 启动与验证 327
10.11 小结 327
第11章 Hadoop Streaming和Pipes编程实战 328
11.1 Streaming基础编程 328
 11.1.1 Streaming编程入门 328
 11.1.2 Map和Reduce数目 331
 11.1.3 队列、优先级及权限 332
 11.1.4 分发文件和压缩包 333
 11.1.5 压缩参数的使用 336
 11.1.6 本地作业的调试 338
11.2 Streaming高级应用 338
 11.2.1 参数与环境变量传递 339
 11.2.2 自定义分隔符 340
 11.2.3 自定义Partitioner 343
 11.2.4 自定义计数器 347
 11.2.5 处理二进制数据 347
 11.2.6 使用聚合函数 351
11.3 Pipes编程接口 352
 11.3.1 TaskContext 352
 11.3.2 Mapper 353
 11.3.3 Reducer 354
 11.3.4 Partitioner 354
 11.3.5 RecordReader 355
 11.3.6 RecordWriter 356
11.4 Pipes编程应用 357
11.5 小结 359
第12章 Hadoop MapReduce应用开发 360
12.1 开发环境准备 360
12.2 Eclipse集成环境开发 361
 12.2.1 构建MapReduce Eclipse IDE 361
 12.2.2 开发示例 363
12.3 MapReduce Java API编程 368
 12.3.1 Mapper编程接口 369
 12.3.2 Reducer编程接口 370
 12.3.3 驱动类编写 372
 12.3.4 编译运行 373
12.4 压缩功能使用 374
 12.4.1 Hadoop数据压缩 374
 12.4.2 压缩特征与性能 374
 12.4.3 本地压缩库 375
 12.4.4 使用压缩 376
12.5 排序应用 378
 12.5.1 Hadoop排序问题 378
 12.5.2 二次排序 378
 12.5.3 比较器和组合排序 380
 12.5.4 全局排序 381
12.6 多路输出 382
12.7 常见问题与处理方法 384
 12.7.1 常见的开发问题 384
 12.7.2 运行时错误问题 386
12.8 小结 387

教学资源推荐
作者: Alfred V. Aho;Monica S.Lam;Ravi Sethi;Jeffrey D. Ullman
作者: 严义 包健 周尉 编著
参考读物推荐
作者: 张鑫 辛洪郁 等编著
作者: 张良均 谭立云 刘名军 江建明 著