||
什么是Hadoop?
Hadoop是由ASF(Apache SoftwareFoundation)源于Lucene的子项目Nutch所开发的开源分布式计算平台,可以构建具有高容错性、可伸缩性、低成本、和良好扩展的高效分布式系统,允许用户将Hadoop部署在大量廉价硬件设备所组成的集群上,为应用程序提供一组稳定可靠的接口,充分利用集群的存储和计算能力,完成海量数据的处理。
由于Hadoop优势突出,得到了众多企业和个人的青睐,尤其是在互联网领域。Yahoo!通过Hadoop集群支持广告系统和Web搜索研究;Facebook借助Hadoop集群支持数据分析和机器学习;Baidu使用Hadoop进行搜索日志的分析和网页数据的挖掘;TaobaoHadoop系统用于存储并处理电子商务交易的相关数据;中国移动研究院基于Hadoop的“Big Cloud”系统用于对数据进行分析和对外提供服务等。
PS:Hadoop之父Doug Cutting解释Hadoop的得名:“这个名字是我孩子给一个棕黄色的大象玩具命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子恰恰是这方面的高手。”
Hadoop的技术背景——与Google云计算的渊源
说到Hadoop,不得不从云计算说起,主流互联网公司为了抢占云计算的市场份额,纷纷提出各自的云计算思路以及解决方案。Google、Yahoo、Amazon、Salesforce与Microsoft等公司作为行业领军者,它们的云计算平台解决方案的详情如下表所示:
表1-1 主流云计算平台详情
从上表可以看出Google和Yahoo云计算平台的关键技术非常相似,的确,Hadoop是Google云计算的开源实现。
作为一个开源项目,Hadoop受到最先由Google Lab开发的Google分布式文件系统GFS(Google File System)以及Google的Map/Reduce编程模式的启发,将 NDFS(Nutch Distributed File System)和Map/Reduce分别纳入Hadoop项目中,现已发展成包括Hadoop common、HDFS、MapReduce、HBase、Hive、ZooKeeper、Avro、Pig、Ambari、Sqoop等在内的多个子项目。
Hadoop Common:Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。
HDFS:Hadoop分布式文件系统(Hadoop Distributed File System) ,前身是NDFS (Nutch Distributed File System)。类似Google File System。
MapReduce:实现了MapReduce编程框架。
HBase: 基于HDFS,是一个开源的、基于列存储模型的分布式数据库。类似Google BigTable的分布式NoSQL列数据库。
Hive:数据仓库工具,由Facebook贡献。使得存储在hadoop里面的海量数据的汇总,即席查询简单化。
Zookeeper:分布式锁设施,一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。类似Google Chubby,由Facebook贡献。
Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
Pig:大数据分析平台,为用户提供多种接口。
Ambari:Hadoop管理工具,可以快捷的监控、部署、管理集群。
Sqoop:用于在Hadoop与传统的数据库间进行数据的传递。
Hadoop两大核心技术
Hadoop是一个集成了分布式文件系统HDFS和大规模并行计算模型MapReduce 的开源框架。HDFS和MapReduce是Hadoop的两大核心,而整个Hadoop的体系架构主要是通过HDFS来实现对分布式存储的底层支持,并通过MapReduce来实现对分布式并行任务处理的程序支持。
1、分布式文件系统HDFS
Hadoop的分布式文件系统(Hadoop Distributed File System,HDFS)由1个NameNode(管理节点)和N个DataNode (数据节点)组成,这2类节点采用Master/Slave(管理者/工作者)模式运行。其中,NameNode充当Master节点(主节点),维护集群内的元数据(Metadata),对外提供创建、打开、删除和重命名文件或目录的功能;DataNode充当Slave节点(从节点),存储数据,负责处理数据的读写请求,定期向NameNode 上报心跳(heartbeat)消息,NameNode 通过响应心跳来控制DataNode。HDFS体系结构如下图所示:
HDFS的底层实现原理是当有输入文件提交到Master节点后,Master将输入文件切割成多个Block(通常为64M)并为每个Block拷贝数份副本,然后将这些Block分散地存储在不同的Slave节点上。如果DataNode不能发送心跳消息,NameNode将采取修复措施,重新复制在该节点上丢失的块,从而实现容错处理。NameNode是整个文件管理系统的核心,负责维护文件系统的NameSpace(名字空间),NameSpace上记录着输入文件的分割情况、每个Block的存储位置以及每个Block所在节点的状态信息。HDFS内部的所有通信都基于标准的TCP/IP协议。
2、并行计算模型MapReduce
MapReduce并行计算模型以一种高容错的方式并行处理大量的数据集,实现Hadoop的并行任务处理功能。它也采用了Master/Slave结构,其中Master称为JobTracker,负责调度构成一个作业的所有任务,这些任务分布在不同的Slave上,同时监控它们的执行情况,并重新执行之前失败的任务;Slave称为TaskTracker,仅负责由主节点指派的任务,并向JobTracker汇报自身运行的任务执行情况。用户提交的计算称为Job,每一个Job会被划分成若干个Tasks。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。其执行流程如下图所示:
MapReduce并行计算模式对任务的处理分为两个阶段:Map(映射)和Reduce(规约)。最简单的MapReduce应用程序至少包含3个部分:一个Map函数、一个Reduce函数和一个 main函数。main函数将作业控制和文件输入/输出结合起来。在这点上,Hadoop 提供了大量的接口和抽象类,从而为Hadoop应用程序开发人员提供许多工具,可用于调试和性能度量等。Map函数对输入的<key,value>集合进行处理,生成中间结果<key',value'>集合。MapReduce底层自动将具有相同key'值的键值对中相应的value'进行合并,生成<key',List[value']>集合,并将其作为Reduce函数的输入。Reduce函数再进一步处理生成新的<key'',value''>集合作为输出文件。
简单地说,Map 函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。Reduce 函数接受 Map 函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。下图以图形计数为例形象地说明了这两个过程:
HDFS与MapReduce之间关系
MapReduce是依赖于HDFS实现的。通常MapReduce会将被计算的数据分为很多小块,HDFS会将每个块复制若干份以确保系统的可靠性,同时它按照一定的规则将数据块放置在集群中的不同机器上,以便MapReduce在数据宿主机器上进行最便捷的计算。
Hadoop的最新发展及其在GIS领域的应用
Hadoop实时查询
Cloudera公司的两个新项目:Impala和Trevni使得Hadoop有望在今年实现实时查询。Impala是开源版的Dremel(Google大数据查询解决方案,“交互式”数据分析系统,可以组建成规模上千的集群,PB级别数据处理时间缩短到秒级),允许用户在Hadoop的HDFS、 Hbase和Hive之上运行实时查询。不必迁移。Trevni是一种新的列式(columnar)数据存储格式,可保证读取大型列式存储数据集有极好性能。Impala+Trevni已经完全实现了Dremel的查询性能,而且在SQL功能上还超过了它。
Esri空间大数据处理环境
GISTools for Hadoop是Esri推出的基于Hadoop的一套完整的空间大数据量处理的环境,包含有一套工具(Geoprocessing Tools for Hadoop)、一套API(Esri Geometry API for Java)和一系列的框架(Spatial Framework for Hadoop)。此环境的推出,扩展在Hadoop上geomtry的类型和对空间数据的操作,让开发人员能够方便的在空间数据上构建MapReduce应用程序。同时,GISTools for Hadoop扩展了Hive在Esri Geometry API上的应用,使用户可以通过hive进行空间数据的处理。
总结
Hadoop具有如下优势:(1)可伸缩性,能够处理PB级数据,并可以无限扩充存储和计算能力。(2)可靠性,可以维护同一份数据的多份副本并自动对失败的节点重新分布处理。(3)高效性,Hadoop能并行地处理数据。同时,Hadoop也是低成本的,因为它对硬件的要求不高,所以可以运行在普通的微机集群上。
Hadoop 从单一应用(Web数据抓取)发展到现在庞大的Hadoop生态系统(Hadoop Ecosystem),自成一派的技术架构体系,叩开了大数据时代的海量数据处理的大门,开辟了海量数据存储、处理与应用的新领地。
1.这一切,都起源自Web数据爆炸时代的来临
2.数据抓取系统—Nutch
3.海量数据怎么存,当然是用分布式文件系统- HDFS
4.数据怎么用呢?分析,处理
5.MapReduce框架,让你编写代码来实现对大数据的分析工作
6.非结构化数据(日志)收集处理- fuse,webdav, chukwa, flume,Scribe
7.数据导入到HDFS中,至此RDBSM也可以加入HDFS的狂欢了- Hiho, sqoop
8.MapReduce太麻烦,好吧,让你用熟悉的方式来操作Hadoop里的数据– Pig, Hive, Jaql
9.让你的数据可见- drilldown, Intellicus
10.用高级语言管理你的任务流– oozie, Cascading
11.Hadoop当然也有自己的监控管理工具– Hue, karmasphere, eclipseplugin, cacti, ganglia
12.数据序列化处理与任务调度– Avro, Zookeeper
13.更多构建在Hadoop上层的服务–Mahout, Elastic map Reduce
14.OLTP存储系统– Hbase
参考资料:
[1] 杨来,史忠植,梁帆,等.基于Hadoop云平台的并行数据挖掘方法[J].系统仿真学报,2013,25(5):936-944.
[2] 朱剑.基于虚拟云计算架构的GIS服务资源弹性调度应用研究[J].测绘通报,2013(5):92-95+107.
[3] 赵卫中,马慧芳,傅燕翔,等.基于云计算平台Hadoop的并行k-means聚类算法设计研究[J].计算机科学,2011,38(10):168-176.
[4] 杨宸铸.基于HADOOP的数据挖掘研究[D].重庆:重庆大学,2010.
[5] 张良将.基于Hadoop云平台的海量数字图像数据挖掘的研究[D].上海:上海交通大学,2010.
[6] 夏大文,荣卓波.Hadoop关键技术的研究与应用[J].计算机与现代化,2013(5):138-141+148.
[7] 周诗慧,殷建.Hadoop平台下的并行Web日志挖掘算法[J].计算机工程,2013,39(6):43-46.
[8] 薛胜军,刘寅.基于Hadoop的气象信息数据仓库建立与测试[J].计算机测量与控制,2012,20(4):926-928+932.
[9] 余永红,向晓军,高阳,等.面向服务的云数据挖掘引擎的研究[J].计算机科学与探索,2012,6(1):46-57.
[10]SanjayGhemawat,Howard Gobioff,Shun-Tak Leung.The Google file system[J].OperatingSystems Review, 2003,37(5):29-43.
[11]JeffreyDean,Sanjay Ghemawat.MapReduce:SimplifiedData Processing on Large Clusters [J].Communications of the Association forComputing Machinery, 2008,51(1):107-113.
[12]Pang-NingTan,MichaelSteinbach,VipinKumar.数据挖掘导论(完整版)[M].范明,范宏建,等译.北京:人民邮电出版社,2011.
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-6 17:18
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社