描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787111494683丛书名: 大数据技术丛书
从使用、原理、运维和开发4个方面深度讲解Hadoop*核心的技术
基础篇
第1章 认识Hadoop
第2章 Hadoop使用之初体验
第3章 Hadoop存储系统
第4章 HDFS的使用
第5章 MapReduce计算框架
第6章 Hadoop命令系统
高级篇
第7章 MapReduce深度分析
第8章 Hadoop Streaming和Pipes原理与实现
第9章 Hadoop作业调度系统
实战篇
第10章 Hadoop集群搭建
第11章 Hadoop Streaming和Pipes编程实战
第12章 Hadoop MapReduce应用开发
如今是一个数据爆炸的时代,个人的图片、视频、文档等数据很容易就可达到数百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开发应用的工程师阅读和学习。
勘误和支持
由于作者的水平有限且编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,特意创建一个在线支持与应急方案的二级网站。读者可以将书中的错误发布在Bug勘误表页面中,此外如果你遇到任何问题,也可以访问Q&A页面,我将尽量在线上为读者提供满意的解答。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱,期待能够得到你们的真挚反馈。
致谢
感谢北京邮电大学吕玉琴教授、刘刚博士、侯斌博士、李威海博士等老师,是他们在我读研的时候悉心指导我进入大数据以及统计挖掘领域,并使我能在2009年就开始学习并使用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是什么;第二,Hadoop可以用来做什么。首先,Hadoop是一个分布式基础架构系统,是Google的云计算基础架构系统的开源实现,Google底层基础设施核心的组件包括Google FileSystem和MapReduce计算框架,相应的Hadoop核心的设计就是HDFS和MapReduce,这个系统就像一个集群操作系统一样,可以使廉价的通用硬件形成资源池从而组成威力强大的分布式集群系统,用户可以在不了解分布式底层细节的情况下开发分布式程序。那么Hadoop可以用来做什么呢,Hadoop既然是Google基础设施的开源实现,自然可以做支撑搜索引擎的基础架构,由于又是一个通用的分布式框架,因此可以处理很多和大数据相关的分布式应用。
本章将从整体上介绍Hadoop,包括Hadoop的发展渊源、基本思想架构,以及Hadoop的发展应用现状,从而使读者对Hadoop有一个基本的认识,为进一步深入学习夯实基础。
1.1 缘于搜索的小象
追本溯源,Hadoop起源于Nutch,因此学习Hadoop就有必要了解一下这种渊源及Hadoop的发展简史。
1.1.1 Hadoop的身世
首先我们介绍一下Nutch的发展情况,Nutch是一个以Lucene为基础实现的搜索引擎系统,Lucene为Nutch提供了文本检索和索引的API,Nutch不仅仅有检索的功能,还有网页数据采集的功能。Mike Cafarella和Doug Cutting在2002年开始研发Nutch系统,然而他们很快发现他们的架构很难扩展到数十亿级别的网页规模,因为这样规模的搜索引擎系统要涉及网页的分布式存储问题及分布式建立索引的问题。恰在此时,Google公布了支撑其搜索引擎服务的文件系统架构设计——Google’s Distributed Filesystem,这种被称为GFS的基础架构很快引起了他们的注意,并被成功引入Nutch系统中,在Nutch中被命名为Nutch分布式文件系统——NDFS,正是NDFS解决了Nutch搜索引擎系统中网页等海量数据的存储问题。2004年,Google又公布了一种并行计算模型MapReduce的设计论文,紧接着在2005年Nutch就已经实现了这种高效的并行计算模型来解决数十亿级别以上网页的分布式采集及索引构建。很快他们就发现这种NDFS和MapReduce模型不仅可以用来解决搜索引擎中的海量网页问题,同时还具有通用性,可以用来构建一种分布式的集群系统,然后在2006年这两个模块就从Nutch中独立出来,并被命名为Hadoop,因此在Nutch-0.8.0版本之前,Hadoop其实还属于Nutch的一部分,而从Nutch-0.8.0开始,将其实现的NDFS和MapReduce剥离出来成立一个新的开源项目,这就是我们目前所熟知的Hadoop平台。
1.1.2 Hadoop简介
上一节讲述了Hadoop和Nutch的关系,从这种渊源上来讲,Hadoop本质上起源于Google的集群系统,Google的数据中心使用廉价的Linux PC机组成集群,用其运行各种应用。即使是分布式开发的新手也可以迅速使用Google的基础设施。Google采集系统的核心的组件有两个:个就是GFS(Google FileSystem),一个分布式文件系统,隐藏下层负载均衡,冗余复制等细节,对上层程序提供一个统一的文件系统API接口;第二个是MapReduce计算模型,Google发现大多数分布式运算可以抽象为MapReduce操作。Map是把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成终输出Output。这两个函数由程序员提供给系统,下层设施把Map和Reduce操作分布在集群上运行,并把结果存储在GFS上。
而Hadoop就是Google集群系统的一个Java开源实现,是一个项目的总称,主要是由HDFS、MapReduce组成。其中HDFS是Google File System(GFS)的开源实现;MapReduce是Google MapReduce的开源实现。这个分布式框架很有创造性,而且有极大的扩展性,使Google在系统吞吐量上有很大的竞争力。在2006年时Hadoop就受到了Yahoo的支持,目前Yahoo内部已经使用Hadoop代替了原来的分布式系统并拥有了世界上的Hadoop集群。
Hadoop实现了HDFS文件系统和MapReduce,使Hadoop成为一个分布式的计算平台。用户只要分别实现Map和Reduce,并注册Job即可自动分布式运行。因此,Hadoop并不仅仅是一个用于存储的分布式文件系统,而是用于由通用计算设备组成的大型集群上执行分布式应用的框架。一般来讲,狭义的Hadoop就是指HDFS和MapReduce,是一种典型的Master-Slave架构,如图1-1所示。
评论
还没有评论。