本文共 2621 字,大约阅读时间需要 8 分钟。
本节书摘来自华章计算机《深入理解Hadoop(原书第2版)》一书中的第2章,第2.1节,作者 [美]萨米尔·瓦德卡(Sameer Wadkar),马杜·西德林埃(Madhu Siddalingaiah),杰森·文纳(Jason Venner),译 于博,冯傲风,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
价格实惠的普通计算机经常满足不了应用程序的计算资源需求,很多企业的业务应用程序已经不再适合在单台廉价的计算机上运行。这时,一个简单昂贵的解决方案就是购买一些具有多CPU的高端服务器,这通常需要巨额资金。只要能买到最高端的服务器,这个解决方案就能够达到理想的效果,但预算往往是个大问题。另一个替代方案,就是搭建一个高可用的集群,这个集群经过专业的安装和精心的管理服务,使用起来就像一台计算机一样。很多高可用的集群都是企业专有的而且价格也十分贵。
为了获取所需的计算资源,一个更经济实惠的解决方案是云计算。面对大数据量的处理需求,一个常用的方法就是把它们分割成互不依赖的小份数据来分别计算处理,这就是所谓的单指令多数据流(single-instruation, multiple-data, SIMD)的数据计算模式。Hadoop为这样的云计算需求提供了一套开源的计算框架和一套分布式文件系统。
本书是一本利用Hadoop进行开发工作的实用指南。Hadoop项目由Apache Software Foundation来负责管理。本章会为大家讲解Hadoop的核心概念思想。为了后续章节更有效地学习,你需要安装并运行Hadoop。
Hadoop是以谷歌在2004年发表的一篇关于MapReduce的论文为基础开发的。Hadoop项目开始于2005年,那个时候,Hadoop项目是开源的网页搜索引擎Nutch项目下的一个子项目。后来,Hadoop从Nutch项目中分离出来,并最终成为了Apache基金会的顶级项目。
现在,MapReduce已经成为业内家喻户晓的Hadoop框架。同时,围绕Hadoop项目诞生了好几家公司来提供Hadoop系统的支持、咨询和培训。
就其自身来讲,Hadoop是一个基于Java语言的MapReduce框架。随着Hadoop平台被越来越多的企业采用,Hadoop需要加入对非Java语言的支持。下面列出了Hadoop的改进及其子项目,这些都促使Hadoop在企业中的应用越来越广:
我们刚刚粗略地介绍了Hadoop的由来和它的子项目。前面的例子也说明了Hadoop系统是因何发展而来。Hadoop系统最早是作为用于索引海量文本数据的MapReduce引擎而启动的项目。后来慢慢地发展成为一个通用的大数据处理模型。这个大数据模型可以支持标准的企业级用例,比如DW、BI、ELT或者实时缓存查询。MapReduce是一个非常有用的编程模型,它在前文刚刚提到的标准企业级用例(ETL、 DW)中得到了广泛应用,使其在大数据计算处理领域成为主流。同样重要的是,现在各个企业都在积极应对海量数据处理带来的挑战。
在很长的一段时间内,Hadoop系统只能做到用户提交任务后,以先进先出(FIFO)的模式在集群上执行任务。这样的话,一些运行耗时、重要性低的任务会占用大量的集群资源,而运行时间短、重要性高的任务迟迟无法运行。为了解决这样的问题,Hadoop中出现了更加复杂的任务调度器,比如公平调度器(Fair Scheduler)和计算能力调度器(Capacity Scheduler)。但是在Hadoop 1.x系列(版本号小于0.23)中,一些系统本身设计之初的决策导致了集群在可扩展性方面的限制。
Yahoo公司的工程师们发现,当Hadoop系统集群的计算节点数量达到数千台量级的时候,集群就会存在一些可扩展性问题(详细的情况请参见链接: )。当人们对Hadoop系统的这些可扩展性问题越来越清晰之后,Hadoop的工程师们讨论思考,并重新评估了Hadoop系统原型设计中的一些基础假设。最终,Hadoop系统平台的核心架构被重新设计。由此,Hadoop 2.x(版本号大于0.23的Hadoop系统)诞生了。
本书在全面介绍Hadoop 2.x的同时,也会适当地提到Hadoop 1.x。这样你会深刻地理解Hadoop 2.x发生这些变化的原因。
转载地址:http://usenx.baihongyu.com/