《Hadoop与大数据挖掘》一2.1 Hadoop概述

本节书摘来华章计算机《Hadoop与大数据挖掘》一书中的第1章 ,第1.1节,张良均 樊 哲 位文超 刘名军 许国杰 周 龙 焦正升 著 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.1 Hadoop概述

2.1.1 Hadoop简介
随着现代社会的发展,各种信息数据存量与增量都非常大,很多情况下需要我们能够对TB级,甚至PB级数据集进行存储和快速分析,然而单机的计算机,无论是硬盘存储、网络IO、计算CPU还是内存都是非常有限的。针对这种情况,Hadoop应运而生。
那么,Hadoop是什么呢?我们可以很容易在一些比较权威的网站上找到它的定义,例如:Hadoop是一个由Apache基金会所开发的分布式系统基础架构,它可以使用户在不了解分布式底层细节的情况下开发分布式程序,充分利用集群的威力进行高速运算和存储。
从其定义就可以发现,它解决了两大问题:大数据存储、大数据分析。也就是Hadoop的两大核心:HDFS和MapReduce。
HDFS(Hadoop Distributed File System)是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储。
MapReduce为分布式计算框架,主要包含map(映射)和reduce(归约)过程,负责在HDFS上进行计算。
要深入学习Hadoop,就不得不提到Google的3篇相关论文,也就是Hadoop的基础理论。

  • 2003年发表的《The Google File System》,奠定了“首个商用的超大型分布式文件系统”,从而验证这种分布式文件系统架构是可行的。
  • 2004年发表的《MapReduce: Simplifed Data Processing on Large Clusters》,汲取了函数式编程设计思想,倡导把计算移动到数据思想,该思想的应用大大加快了数据的处理分析。
  • 2006年发表的《Bigtable: A Distributed Storage System for Structured Data》,这一论文同样也是告诉大家,这种分布式数据库的架构是可行的。
    说到这里,我们来简单了解下Hadoop的发展历史,如图2-1所示。


《Hadoop与大数据挖掘》一2.1 Hadoop概述

2002~2004年,第一轮互联网泡沫刚刚破灭,很多互联网从业人员都失业了。我们的“主角”Doug Cutting也不例外,他只能写点技术文章赚点稿费来养家糊口。但是Doug Cutting不甘寂寞,怀着对梦想和未来的渴望,与他的好朋友Mike Cafarella一起开发出一个开源的搜索引擎Nutch,并历时一年把这个系统做到能支持亿级网页的搜索。但是当时的网页数量远远不止这个规模,所以两人不断改进,想让支持的网页量再多一个数量级。
在2003年和2004年,Google分别公布了GFS和MapReduce两篇论文。Doug Cutting 和Mike Cafarella发现这与他们的想法不尽相同,且更加完美,完全脱离了人工运维的状态,实现了自动化。
在经过一系列周密考虑和详细总结后,2006年,Dog Cutting放弃创业,随后几经周折加入了Yahoo公司(Nutch的一部分也被正式引入),机缘巧合下,他以自己儿子的一个玩具大象的名字Hadoop命名了该项目。
当系统进入Yahoo以后,项目逐渐发展并成熟了起来。首先是集群规模,从最开始几十台机器的规模发展到能支持上千个节点的机器,中间做了很多工程性质的工作; 然后是除搜索以外的业务开发,Yahoo逐步将自己广告系统的数据挖掘相关工作也迁移到了Hadoop上,使Hadoop系统进一步成熟化了。
2007年,纽约时报在100个亚马逊的虚拟机服务器上使用Hadoop转换了4TB的图片数据,更加加深了人们对Hadoop的印象。
在2008年的时候,一位Google的工程师发现要把当时的Hadoop放到任意一个集群中去运行是一件很困难的事情,所以就与几个好朋友成立了一个专门商业化Hadoop的公司Cloudera。同年,Facebook团队发现他们很多人不会写Hadoop的程序,而对SQL的一套东西很熟,所以他们就在Hadoop上构建了一个叫作Hive的软件,专门用于把SQL转换为Hadoop的MapReduce程序。
2011年,Yahoo将Hadoop团队独立出来,成立了一个子公司Hortonworks,专门提供Hadoop相关的服务。
说了这么多,那Hadoop有哪些优点呢?
Hadoop是一个能够让用户轻松架构和使用的分布式计算的平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。其优点主要有以下几个。

  • 高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖。
  • 高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
  • 高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
  • 高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
  • 低成本:与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,Hadoop是开源的,项目的软件成本因此会大大降低。
  • Hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上是非常理想的,Hadoop 上的应用程序也可以使用其他语言编写,比如C++。
上一篇:linux系统之rpm打包


下一篇:《Hadoop与大数据挖掘》一第2章