当前位置:文档之家› 基于Hadoop的企业海量数据存储与计算平台的设计与实现

基于Hadoop的企业海量数据存储与计算平台的设计与实现

基于Hadoop的企业海量数据存储与计算平台的设计与实现
基于Hadoop的企业海量数据存储与计算平台的设计与实现

电子科技大学UNIVERSITYOFELECTRONICSCIENCEANDTECHNOLOGYOFCHINA

工程硕士学位论文ENGINEERINGMASTERDISSERTATION

论文题目:基于Hadoop的企业海量数据存储与计算平台

的设计与实现

工程领域:软件工程

指导教师:罗克露教授

作者姓名:张韶英

班学号:200792323035

电子科技大学硕士学位论文

分类号密级

UDC

学位论文

基于Hadoop的企业海量数据存储与计算平台的设计与实现

(题名和副题名)

张韶英

(作者姓名)

指导教师姓名

2010年月

注1:注明《国际十进分类法UDC》的类号

独创性声明

本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。

签名:日期:年月日

关于论文使用授权的说明

本学位论文作者完全了解电子科技大学有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。

(保密的学位论文在解密后应遵守此规定)

签名:导师签名:

日期:年月日

摘要

摘要

近年来,随着数据存储与分布式计算技术的发展,国内外掀起了研究海量数据存储与计算的新高潮,以Google、Amazon、IBM为代表的信息技术公司陆续推出了自己的海量数据存储与计算的构架,其中最引人注目的新理念就是“云计算”解决方案。

作者所在的企业为互联网数据服务公司,每天产生的数据是TB级别,数据的存储与管理成了公司面临一大难题。结合海量数据存储与计算的相关技术,吸纳业界领先公司的工作成果,设计一套符合公司业务要求、支持海量数据应用服务的数据存储与计算平台,寻求适合企业海量数据的存储和计算的“云计算”解决方案是本文的目标。

本文主要的工作是海量数据与计算平台设计、开发和测试。首先基于Hadoop 框架体系,设计了符合海量数据存储的平台架构以及海量数据处理的算法与机制;其次,根据平台的设计方案,给出了基于Hadoop的分布式存储与计算平台的实施方案,并针对支持海量大文件存储的GHFS和支持海量小文件存储的TGHFS给出了存取接口的实现,构建了海量数据查重和海量数据分布式索引和检索的的海量数据分布式计算应用;最后对平台的文件读写功能、存储性能和检索的速度进行了测试。测试表明,海量数据存储与计算平台完全达到设计总体目标,为公司的海量数据存储与计算提供了理想的解决方案。

关键词:Hadoop 海量数据存储与索引

Abstract

During these years, with the development of data storage and distributed computing technology, the research area of large-scale data storage and computing is coming to a new high tide. Information technology companies such as Google, Amazon and IBM publish their large-scale data storage and computing framework one after another, cloud computing solution is the most new concept among these framework which catches the world developer’s eyes.

The author’s company is an Internet data service company at TB-scale data increasing speed every day, so data storage and management becomes a difficult problem in our company. Combining large-scale data storage and computing technology with the outstanding companies achievement in this area, we design a suit of data storage and computing platform which is suitable for company’s business requirements and supporting large-scale data applications. And look forward to get a large-scale data storage and computing solution to apply to company.

The main job of this thesis is large-scale data and computing platform design,development and test. Firstly, the thesis designs a platform construction for large-scale data storage based on Hadoop, and gives a storage framework construction for large structural and unstructured data and large-scale data processing algorithms and mechanism. Secondly, According to the platform design proposal, the thesis expounds the implementation method for the distributed storage and Computing platform based on Hadoop,and gives the interface implementation of the big files storage format and small files format on large-scale data storage,applies the lager-scale data distributed computing to the application of large data duplication , indexing and retrieval. Finally, the thesis tests the platform file reading and writing function,storage efficiency and retrieval speed. According to the test result, large-scale data storage and computing platform has fully meet the overall requirements of design and provided a good large-scale data storage and computing solution to company.

Keywords:Hadoop, large-scale data storage, distributed computing.

目录

第一章绪论 (1)

1.1课题的研究背景 (1)

1.2国内外研究现状 (2)

1.3本文的主要工作 (5)

1.4本文的章节安排 (6)

第二章Hadoop平台关键技术 (7)

2.1Hadoop平台概述 (7)

2.1.1Hadoop技术背景 (7)

2.1.2Hadoop简介 (7)

2.2Hadoop分布式文件存储系统(HDFS)构架 (9)

2.2.1设计假定与目标 (9)

2.2.2HDFS的体系架构 (11)

2.2.3数据组织与副本策略 (12)

2.2.4数据操作 (14)

2.2.5数据存储安全 (16)

2.3Hadoop分布式并行计算框架------Map/Reduce (17)

2.3.1Map/Reduce概述 (17)

2.3.2Map/Reduce原理与过程 (18)

2.3.3Map/Reduce的输入与输出 (23)

2.4本章小结 (25)

第三章海量数据存储与计算平台的设计 (26)

3.1平台总体目标 (26)

3.2平台总体构架 (27)

3.3海量数据分布式存储设计 (28)

3.3.1海量大文件分布式存储结构设计 (28)

3.3.2海量小文件分布式存储结构设计 (30)

3.3.3海量结构化数据存取模型应用设计 (34)

3.4海量数据计算应用设计 (36)

3.4.1海量数据Map/Reduce查重设计 (36)

3.4.2 海量数据分布式索引设计 (38)

3.4.3 海量数据分布式检索设计 (40)

3.5 本章小结 (41)

第四章海量数据存储与计算平台的实现 (42)

4.1 平台的软硬件环境 (42)

4.1.1软件环境 (42)

4.1.2平台硬件环境 (42)

4.1.3 海量数据存储与计算平台硬件拓扑结构 (43)

4.2海量数据分布式存储平台的实现 (43)

4.2.1 基于Hadoop的分布式存储与计算环境的实现 (43)

4.2.2 GHFS的文件存取接口实现 (47)

4.2.3 TGHFS的文件读写接口实现 (50)

4.2.4 海量结构化数据存储模型的实现 (51)

4.3 海量数据计算应用的实现 (54)

4.3.1 海量数据查重计算实现 (54)

4.3.2海量数据分布式索引实现 (56)

4.3.3 海量数据分布式检索实现 (58)

4.4 本章小结 (61)

第五章海量数据存储与计算平台的测试 (62)

5.1 文件读写功能测试 (62)

5.1.1 Shell命令读写数据测试 (62)

5.1.2 通过程序读写文件测试 (62)

5.2海量结构化数据存储系统性能测试 (64)

5.3 海量数据分布式检索速度测试 (65)

5.3.1测试用例 (65)

5.3.2海量数据检索速度测试结果 (65)

5.3.3索引构建与合并速度测试结果 (66)

5.4 本章小结 (66)

第六章总结与展望 (67)

6.1 总结 (67)

6.2 展望 (67)

致谢 (69)

参考文献 (70)

电子科技大学硕士论文

第一章绪论

1.1课题的研究背景

从20世纪90年代中叶起,随着网络技术的突飞猛进,数据与信息出现了爆炸式增长。今天,1TB以上的数据库正变得愈来愈常见。美国NASA发射的用于地球观察的卫星每年就发回1000TB数据;美国劳伦斯国家实验室的一项粒子碰撞试验每年产生300TB数据;美国数字图书馆每年的增加1TB的数据;通信业的数据库要求千兆字节以上;电子商务、产业信息化等企业级应用,大数据量,大数据增长规模尤为常见,纽约证券交易所每天产生1TB的交易数据;著名社交网站Facebook的主机存储着约100亿张照片,占据PB级存储空间;https://www.doczj.com/doc/f26022928.html,,一个家谱网站,存储着 2.5PB数据;互联网档案馆(TheInternetArchive)存储着约2PB数据,并以每月至少20TB的速度增长;瑞士日内瓦附近的大型强子对撞机每年产生约15PB的数据。更常见的情况是,个人数据的产生量正在快速地增长。微软研究院的MyLifeBits项目(http://https://www.doczj.com/doc/f26022928.html,/en-us/projects/mylifebits/default.aspx)显示,在不久的将来,个人信息档案将可能成为普遍现象。MyLifeBits是这样的一个实验:一个人与外界的联系(电话、邮件和文件)被抓取和存储供以后访问。收集的数据包括每分钟拍摄的照片等,导致整个数据量达到每月1GB的大小。当存储成本下降到使其可以存储连续的音频和视频时,服务于未来MyLifeBits项目的数据量将是现在的许多倍。个人数据的增长的确是大势所趋,但更重要的是,计算机所产生的数据可能比人所产生的数据更大。机器日志、RFID读取器、传感器网络、车载GPS和零售交易数据等,这些都会促使“数据之山越来越高”。

然而,多年来硬盘存储容量快速增加的同时,访问速度------数据从硬盘读取的速度------却未能与时俱进。1990年,一个普通的硬盘驱动器可存储1370MB 的数据并拥有4.4MB/s的传输速度,所以,只需五分钟的时间就可以读取整个磁盘的数据。20年过去了,1TB级别的磁盘驱动器是很正常的,但是数据传输的速度却在100MB/s左右。所以它需要花两个半小时以上的时间读取整个驱动器的数据。数据增长的迅猛与数据访问速度增长的不匹配,使得企业在面对大数据量难以做到有效、及时的计算和处理,存储与计算成本的昂贵,让许多企业望而确保,海量数据中蕴含的宝贵资源得不到发掘,企业海量数据存储和计算成为信

第一章绪论

息时代数据挖掘与利用的技术瓶颈,是企业信息化亟待解决的重大课题之一。

磁盘读取速率的低效,使得某些人提出了这样的设想:从一个驱动器上读取所有的数据需要很长的时间,写甚至更慢。一个很简单的减少读取时间的办法是同时从多个磁盘上读取数据。试想一下,我们拥有100个磁盘,每个存储百分之一的数据。如果它们并行运行,那么不到两分钟我们就可以读完所有的数据。

然而,这种想法却带了新的问题:

第一个需要解决的问题是硬件故障。一旦开始使用多个硬件设施,其中一个会出故障的概率是非常高的。

第二个问题是大部分分析任务需要通过某种方式把数据合并起来,即从一个磁盘读取的数据可能需要和另外99个磁盘中读取的数据合并起来才能使用。各种不同的分布式系统能够组合多个来源的数据,但是如何保证正确性是一个非常难的挑战。

只使用一个磁盘的百分之一似乎很浪费。在一些实践中,技术人员尝试使用,存储100个数据集,每个1TB的方式来做到100TB数据的存储与计算,并让它们共享磁盘的访问。可以想像,此类系统的用户会很高兴看到共享访问可以缩短分析时间,并且,从统计角度来看,他们的分析工作会分散到不同的时间点,所以互相之间不会有太多干扰。然而,更可行的方式是,从多个磁盘并行读写数据进行并行处理与计算。

而Hadoop的出现,让海量数据存储、数据并行计算成为现实。Hadoop是一个被设计用来在由普通硬件设备组成的大型集群上执行分布式应用的框架(Framework)。Hadoop包含两个部分:一个分布式文件系统HDFS(Hadoop Distributed File System),和一个Map/Reduce实现。Hadoop通过保存数据的冗余副本,在故障发生时,可以使用数据的另一份副本。同时,Map/Reduce提供了一个编程模型,其抽象出上述磁盘读写的问题,将其转换为计算一个由成对键/值组成的数据集。简而言之,Hadoop提供了一个稳定的共享存储和分析系统。存储由HDFS实现,并行计算由Map/Reduce实现。纵然Hadoop还有其他功能,但这些功能是它的核心所在。

1.2国内外研究现状

近年来,随着数据存储与分布式计算技术的发展,国内外掀起了研究海量数据存储与计算的新高潮,以Google、Amazon、IBM为代表的信息技术公司陆续推出了自己的海量数据存储与计算的构架,其中最引人注目的新理念就是“云计算”解决方案。

2007年以来,Amazon使用弹性计算云(EC2)和简单存储服务(S3)为企

电子科技大学硕士论文

业提供计算和存储服务。收费的服务项目包括存储服务器、带宽、CPU资源以及月租费。月租费与电话月租费类似,存储服务器、带宽按容量收费,CPU根据时长(小时)运算量收费。有第三方统计机构提供的数据显示,Amazon与云计算相关的业务收入已达1亿美元。云计算是Amazon增长最快的业务之一。

Google是目前最大的云计算的使用者,同时也是该领域的研究者和应用者。Google搜索引擎就建立在分布在200多个地点、超过100万台服务器的支撑之上,这些设施的数量正在迅猛增长。Google地球、地图、Gmail、Docs等也同样使用了这些基础设施。采用GoogleDocs之类的应用,用户数据会保存在互联网上的某个位置,可以通过任何一个与互联网相连的系统十分便利地访问这些数据。目前,Google已经允许第三方在Google的云计算中通过GoogleAppEngine 运行大型并行应用程序。2007年以来,Google以发表学术论文的形式公开其云计算三大核心部件:GFS、MapReduce和BigTable,并在美国、中国等高校开设如何进行云计算编程的课程。

IBM在2007年11月推出了“改变游戏规则”的“蓝云”计算平台,为客户带来即买即用的云计算平台。它包括一系列的自动化、自我管理和自我修复的虚拟化云计算软件,使来自全球的应用可以访问分布式的大型服务器池。使得数据中心在类似于互联网的环境下运行计算。IBM正在与17个欧洲组织合作开展云计算项目。欧盟提供了1.7亿欧元做为部分资金。该计划名为RESERVOIR,以“无障碍的资源和服务虚拟化”为口号。2008年8月,IBM宣布将投资约4亿美元用于其设在北卡罗来纳州和日本东京的云计算数据中心改造。IBM计划在2009年在10个国家投资3亿美元建13个云计算中心。

微软紧跟云计算步伐,于2008年10月推出了WindowsAzure操作系统。Azure (译为“蓝天“)是继Windows取代DOS之后,微软的又一次颠覆性转型------通过在互联网架构上打造新云计算平台,让Windows真正由PC延伸到“蓝天”上。微软拥有全世界数以亿计的Windows用户桌面和浏览器,现在它将它们连接到“蓝天”上。Azure的底层是微软全球基础服务系统,由遍布全球的第四代数据中心构成。

2009年3月,由卡耐基梅隆大学卡塔尔分校、卡塔尔大学、德州农工大学卡塔尔分校这三所大学推动的“卡塔尔云计算计划(QatarCloudComputingInitiative)”将向当地工商业开放其云基础设施,用以测试应用程序并完成各种项目,其中包括地震建模和石油天然气勘探等。比勒陀利亚大学将利用云计算技术对药品的开发进行测试,以帮助减慢重症疾病的发展。此外,IBM还将与东非的健康领导力高等教育联盟(“健康联盟”)和日本福冈的九州大学一起合作云计算项目。

第一章绪论

近年来,国内的企业和相关学者,也纷纷对海量数据存储与计算的解决方案“云计算”进行了研究和探索,并取得了一定的进展。

2008年6月24日,IBM在北京IBM中国创新中心成立了第二家中国的云计算中心------IBM大中华区云计算中心;2008年11月28日,广东电子工业研究院与东莞松山湖科技产业园管委会签约,广东电子工业研究院将在东莞松山湖投资2亿元建立云计算平台;2008年12月30日,阿里巴巴集团旗下子公司阿里软件与江苏省南京市政府正式签订了2009年战略合作框架协议,计划于2009年初在南京建立国内首个“电子商务云计算中心”,首期投资额将达上亿元人民币;世纪互联推出了CloudEx产品线,包括完整的互联网主机服务“CloudExComputingService”,基于在线存储虚拟化的“Cloud ExStorage Service”,供个人及企业进行互联网云端备份的数据保全服务等等系列互联网云计算服务;中国移动研究院做云计算的探索起步较早,已经完成了云计算中心试验。中移动董事长兼CEO王建宙认为云计算和互联网的移动化是未来发展方向。另外,易度在线工作平台https://www.doczj.com/doc/f26022928.html,在云计算领域发展也很快,旗下的多款云计算产品,包括文档、项目、工作管理等,致力于解决中小企业的软件领域问题。

我国企业创造的“云安全”概念,在国际云计算领域独树一帜。云安全通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,推送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。云安全的策略构想是:使用者越多,每个使用者就越安全,因为如此庞大的用户群,足以覆盖互联网的每个角落,只要某个网站被挂马或某个新木马病毒出现,就会立刻被截获。云安全的发展像一阵风,瑞星、趋势、卡巴斯基、MCAFEE、SYMANTEC、江民科技、PANDA、金山、360安全卫士、卡卡上网安全助手等都推出了云安全解决方案。瑞星基于云安全策略开发的2009新品,每天拦截数百万次木马攻击,其中1月8日更是达到了765万余次。趋势科技云安全已经在全球建立了5大数据中心,几万部在线服务器。据悉,云安全可以支持平均每天55亿条点击查询,每天收集分析2.5亿个样本,资料库第一次命中率就可以达到99%。借助云安全,趋势科技现在每天阻断的病毒感染最高达1000万次。

值得一提的是,云安全的核心思想,与我国学者刘鹏教授早在2003年就提出的反垃圾邮件网格非常接近。刘鹏当时认为,垃圾邮件泛滥而无法用技术手段很好地自动过滤,是因为所依赖的人工智能方法不是成熟技术。垃圾邮件的最大的特征是:它会将相同的内容发送给数以百万计的接收者。为此,可以建立一个分布式统计和学习平台,以大规模用户的协同计算来过滤垃圾邮件:首先,用户安装客户端,为收到的每一封邮件计算出一个唯一的“指纹”,通过比对“指纹”可

电子科技大学硕士论文

以统计相似邮件的副本数,当副本数达到一定数量,就可以判定邮件是垃圾邮件;其次,由于互联网上多台计算机比一台计算机掌握的信息更多,因而可以采用分布式贝叶斯学习算法,在成百上千的客户端机器上实现协同学习过程,收集、分析并共享最新的信息。反垃圾邮件网格体现了真正的网格思想,每个加入系统的用户既是服务的对象,也是完成分布式统计功能的一个信息节点,随着系统规模的不断扩大,系统过滤垃圾邮件的准确性也会随之提高。用大规模统计方法来过滤垃圾邮件的做法比用人工智能的方法更成熟,不容易出现误判假阳性的情况,实用性很强。反垃圾邮件网格就是利用分布互联网里的千百万台主机的协同工作,来构建一道拦截垃圾邮件的“天网”。反垃圾邮件网格思想提出后,被IEEECluster2003国际会议选为杰出网格项目在香港作了现场演示,在2004年网格计算国际研讨会上作了专题报告和现场演示,引起较为广泛的关注,受到了中国最大邮件服务提供商网易公司创办人丁磊等的重视。既然垃圾邮件可以如此处理,病毒、木马等亦然,这与云安全的思想就相去不远了。

2008年11月25日,中国电子学会专门成立了云计算专家委员会,聘任中国工程院院士李德毅为主任委员,聘任IBM大中华区首席技术总裁叶天正、中国电子科技集团公司第十五研究所所长刘爱民、中国工程院院士张尧学、Google 全球前副总裁/中国区前总裁李开复、中国工程院院士倪光南、中国移动通信研究院院长黄晓庆六位专家为副主任委员,聘任国内外30多位知名专家学者为专家委员会委员。2009年5月22日,中国电子学会在北京中国大饭店隆重举办首届中国云计算大会。

综上所述的国内外学者们的研究和探索,总结起来,主要是在面向海量数据存储与计算的方面给出了一些可行的解决方案,这些方案主要围绕了如下几个核心的关键问题:

1、海量存储,研究能够提供具有巨大读写能力的海量存储系统。

2、并行数据处理,通过并行数据处理,缩短TB级别乃至PB级别数据的处理时间。

3、是分布式文件系统,文件的数量可以巨大,还有各种资源控制。

4、分布式锁服务。

5、集群管理和调度系统。

1.3本文的主要工作

作者所在的企业为互联网数据服务公司,每天产生的数据是TB级别,数据的存储与管理成了公司面临一大难题。本文的主要工作是结合海量数据存储与计算的相关技术,吸纳业界领先公司的工作成果,设计一套符合公司业务要求、支

第一章绪论

持海量数据应用服务的数据存储与计算平台,旨在寻求适合企业海量数据的存储和计算的解决方案。

归纳起来,本文的主要工作为如下几点:

1. 设计符合海量数据存储的企业数据存储平台架构;基于Hadoop对适应于公司需要的海量数据存储与计算平台的海量数据存储和计算平台进行了设计,设计了海量结构化的数据存储系统和非结构化的文件数据存储体系;

2. 研究海量数据处理的算法与机制,并进行了应用实现;给出了基于Hadoop的分布式存储与计算平台的实施方案,并针对支持海量大文件存储的GHFS和支持海量小文件存储的TGHFS给出了存取接口的实现,构建了海量数据查重和海量数据分布式索引和检索的的海量数据分布式计算应用;

3、对平台的性能进行了测试,并给出了测试结论。

1.4本文的章节安排

第一章为绪论。主要对课题的研究背景、国内外研究现状和本文的主要工作进行了论述,为全文的总起。

第二章为Hadoop平台关键技术。第一节主要是对海量数据存储与计算环境Hadoop进行了概述;第二节对Hadoop分布式文件存储系统进行了构架;第三节对分布式并行计算框架Map/Reduce进行了论述;

第三章为海量数据存储与检索平台的设计。提出平台的总体目标和总体构架,并给出基于平台的海量数据查重、分布式索引、分布式检索的实现;

第四章为海量数据存储与计算平台的实现。给出了平台实现的具体方法,包括软硬件的实施和存储与计算平台的实现。

第五章为海量数据存储与计算平台的测试。主要对海量数据存储与计算平台的文件读写功能、海量结构化数据存储系统的性能和海量数据分布式检索的速度进行了测试,并给出了测试结论。

第六章为总结与展望。为全文的总结,并对下一步工作进行展望。

电子科技大学硕士论文

第二章Hadoop平台关键技术

2.1Hadoop平台概述

2.1.1Hadoop技术背景

在摩尔定律的作用下,以前程序员根本不用考虑计算机的性能会跟不上软件的发展,因为约每隔18个月,CPU的主频就会增加一倍,性能也将提升一倍,软件根本不用做任何改变,就可以享受免费的性能提升。然而,由于晶体管电路已经逐渐接近其物理上的性能极限,摩尔定律在2005年左右开始失效了,人类再也不能期待单个CPU的速度每隔18个月就翻一倍,为我们提供越来越快的计算性能。Intel,AMD,IBM等芯片厂商开始从多核这个角度来挖掘CPU的性能潜力,多核时代以及互联网时代的到来,将使软件编程方式发生重大变革,基于多核的多线程并发编程以及基于大规模计算机集群的分布式并行编程是将来软件性能提升的主要途径。

许多人认为这种编程方式的重大变化将带来一次软件的并发危机,因为我们传统的软件方式基本上是单指令单数据流的顺序执行,这种顺序执行十分符合人类的思考习惯,却与并发并行编程格格不入。基于集群的分布式并行编程能够让软件与数据同时运行在连成一个网络的许多台计算机上,这里的每一台计算机均可以是一台普通的PC机。这样的分布式并行环境的最大优点是可以很容易的通过增加计算机来扩充新的计算结点,并由此获得不可思议的海量计算能力,同时又具有相当强的容错能力,一批计算结点失效也不会影响计算的正常进行以及结果的正确性。Google就是这么做的,他们使用了叫做Map/Reduce的并行编程模型进行分布式并行编程,运行在叫做GFS(GoogleFileSystem)的分布式文件系统上,为全球亿万用户提供搜索服务。

2.1.2Hadoop简介

Hadoop是一个开源的可运行于大规模集群上的分布式并行编程框架,由于分布式存储对于分布式编程来说是必不可少的,这个框架中还包含了一个分布式文件系统HDFS(HadoopDistributedFileSystem)。也许到目前为止,Hadoop还不是那么广为人知,其最新的版本号也仅仅是0.20,距离1.0似乎都还有很长的一段距离,但提及Hadoop一脉相承的另外两个开源项目Nutch和Lucene(三者的创

第二章Hadoop平台关键技术

始人都是DougCutting),那绝对是大名鼎鼎。Lucene是一个用Java开发的开源高性能全文检索工具包,它不是一个完整的应用程序,而是一套简单易用的API。在全世界范围内,已有无数的软件系统,Web网站基于Lucene实现了全文检索功能,后来DougCutting又开创了第一个开源的Web搜索引擎(http://https://www.doczj.com/doc/f26022928.html,)Nutch,它在Lucene的基础上增加了网络爬虫和一些和Web相关的功能,一些解析各类文档格式的插件等,此外,Nutch中还包含了一个分布式文件系统用于存储数据。从Nutch0.8.0版本之后,DougCutting把Nutch中的分布式文件系统以及实现Map/Reduce算法的代码独立出来形成了一个新的开源项Hadoop。Nutch也演化为基于Lucene全文检索以及Hadoop分布式计算平台的一个开源搜索引擎。

基于Hadoop程序员可以轻松地编写可处理海量数据的分布式并行程序,并将其运行于由成百上千个结点组成的大规模计算机集群上。从目前的情况来看,Hadoop注定会有一个辉煌的未来:“云计算”是目前灸手可热的技术名词,全球各大IT公司都在投资和推广这种新一代的计算模式,而Hadoop又被其中几家主要的公司用作其“云计算”环境中的重要基础软件,雅虎正在借助Hadoop开源平台的力量对抗Google,除了资助Hadoop开发团队外,还在开发基于Hadoop 的开源项目Pig,这是一个专注于海量数据集分析的分布式计算程序。Amazon 公司基于Hadoop推出了AmazonS3(AmazonSimpleStorageService),提供可靠,快速,可扩展的网络存储服务,以及一个商用的云计算平台AmazonEC2(AmazonElasticComputeCloud)。在IBM公司的云计算项目------“蓝云计划”中,Hadoop也是其中重要的基础软件。Google正在跟IBM合作,共同推广基于Hadoop的云计算。

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(Commodityhardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为ApacheNutch搜索引擎项目的基础架构而开发的。HDFS是ApacheHadoopCore项目的一部分。

Hadoop实现了Google的Map/Reduce编程模型,提供了简单易用的编程接口,也提供了它自己的分布式文件系统HDFS,与Google不同的是,Hadoop是开源的,任何人都可以使用这个框架来进行并行编程。Hadoop作为一个开源的软件平台使得编写和运行用于处理海量数据的应用程序更加容易。Hadoop是Map/Reduce的实现,它使用了Hadoop分布式文件系统(HDFS)。Map/Reduce将

电子科技大学硕士论文

应用切分为许多小任务块去执行。出于保证可靠性的考虑,HDFS会为数据块创建多个副本,并放置在群的计算节点中,MapReduce就在数据副本存放的地方进行处理。

Hadoop是由Java编写的,该项目己到得Yahoo的全面支持,项目的领袖Dougcutting从2006年一月开始己经被Yahoo全职雇用于此项目中。作为一个分布式系统平台,Hadoop具有以下一些优势:

●可扩展性:Hadoop可以可靠的存储和处理Petabytes级别的数据。

●经济性:Hadoop将数据分布到由廉价Pc机组成的集群中进行处理,这些集

群可以由成千上万个节点组成。

●有效性:通过数据分发,Hadoop可以在不同的节点上并行处理数据。这使

得数据处理过程大大提速。

●可靠性:Hadoop自动维护一份数据的多个拷贝并自动将失败的计算任务进

行重新部署

2.2Hadoop分布式文件存储系统(HDFS)构架

Hadoop文件系统(HDFS)是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。

2.2.1设计假定与目标

Hadoop文件系统(HDFS)与过去的分布式文件系统有很多相同的目标,但HDFS的设计受到了当前及预期的应用方面的工作量及技术环境的驱动,这反映了它与早期的文件系统明显不同的设想。这就需要对传统的选择进行重新检验并进行完全不同的设计观点的探索。

HDFS的设计假定与目标如下:

1、部件错误不再被当作异常,而是将其作为常见的情况加以处理。因为文件系统由成百上千个用于存储的机器构成,HDFS可能由成百上千的服务器所构成,每个服务器上存储着文件系统的部分数据。构成系统的组件数目是巨大的,而且任一组件都有可能失效,这意味着总是有一部分HDFS的组件是不工作的。而这些机器是由廉价的普通部件组成并被大量的客户机访问。部件的数量和质量使得一些机器随时都有可能无法工作并且有一部分还可能无法恢复。所以实时地监控、错误检测、容错、自动恢复对系统来说必不可少。因此错误检测和快速、自动的恢复是HDFS最核心的架构目标。

2、按照传统的标准,文件都非常大,运行在HDFS上的应用具有很大的数

第二章Hadoop平台关键技术

据集。HDFS上的一个典型文件大小一般都在G字节至T字节。长度达几个GB 的文件是很平常的。每个文件通常包含很多应用对象。当经常要处理快速增长的、包含数以万计的对象、长度达TB的数据集时,我们很难管理成千上万的KB规模的文件块,即使底层文件系统提供支持。因此,设计中操作的参数、块的大小必须要重新考虑。对大型的文件的管理一定要能做到高效,对小型的文件也必须支持,但不必优化。因此,HDFS被调节以支持大文件存储。它应该能提供整体上高的数据传输带宽,能在一个集群里扩展到数百个节点。一个单一的HDFS 实例应该能支撑数以千万计的文件。

3、大部分文件的更新是通过添加新数据完成的,而不是改变已存在的数据。在一个文件中随机的操作在实践中几乎不存在。运行在HDFS上的应用和普通的应用不同,需要流式访问它们的数据集。HDFS的设计中更多的考虑到了数据批处理,而不是用户交互处理。一旦写完,文件就只可读,很多数据都有这些特性。一些数据可能组成一个大仓库以供数据分析程序扫描。有些是运行中的程序连续产生的数据流。有些是档案性质的数据,有些是在某个机器上产生、在另外一个机器上处理的中间数据。由于这些对大型文件的访问方式,添加操作成为性能优化和原子性保证的焦点。而在客户机中缓存数据块则失去了吸引力。

4、工作量主要由两种读操作构成:对大量数据的流方式的读操作和对少量数据的随机方式的读操作。在前一种读操作中,可能要读几百KB,通常达1MB 和更多。来自同一个客户的连续操作通常会读文件的一个连续的区域。随机的读操作通常在一个随机的偏移处读几个KB。性能敏感的应用程序通常将对少量数据的读操作进行分类并进行批处理以使得读操作稳定地向前推进,而不要让它来来回回的读,数据访问高吞吐量。

5、HDFS应用需要一个“一次写入多次读取”的文件访问模型。一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。工作量还包含许多对大量数据进行的、连续的、向文件添加数据的写操作。所写的数据的规模和读相似。一旦写完,文件很少改动。在随机位置对少量数据的写操作也支持,但不必非常高效。

6、异构软硬件平台间的可移植性。HDFS在设计的时候就考虑到平台的可移植性。这种特性方便了HDFS作为大规模数据应用平台的推广。

7、系统必须高效地实现定义完好的大量客户同时向同一个文件的添加操作的语义。

8、一个应用请求的计算,离它操作的数据越近就越高效,在数据达到海量级别的时候更是如此。因为这样就能降低网络阻塞的影响,提高系统数据的吞吐量。将计算移动到数据附近,比之将数据移动到应用所在显然更好。HDFS为应

电子科技大学硕士论文

用提供了将它们自己移动到数据附近的接口,实现“移动计算比移动数据更划算”。

2.2.2HDFS的体系架构

一个HDFS集群由一个Master和大量的Slave构成,一个Master对应于Namenode,Slave对应于Datanode,如图2-1所示。Namenode是一个中心服务器,负责管理文件系统的名字空间(Namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。

图2-1HDFS构架

文件被分成固定大小的块。每个块由一个不变的、全局唯一的64位的Block_id标识,Block_id是在块创建时由Master分配的。Datanode将块当作Linux 文件存储在本地磁盘并可以读和写由Block_id和位区间指定的数据。出于可靠性考虑,每一个块被复制到多个Datanode上。默认情况下,保存3个副本,但这可以由用户指定。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。

Master维护文件系统所以的元数据(Metadata),包括名字空间、访问控制信息、从文件到块的映射以及块的当前位置。它也控制系统范围的活动,如块租约(lease)管理,孤儿块的垃圾收集,Datanode间的块迁移。Master定期通过HeartBeat消息与每一个Datanode通信,给Datanode传递指令并收集它的状态。

第二章Hadoop平台关键技术

与每个应用相联的GFSHDFS客户代码实现了文件系统的API并与Master 和Datanode通信以代表应用程序读和写数据。客户与Master的交换只限于对元数据(Metadata)的操作,所有数据方面的通信都直接和Datanode联系。

客户和Datanode都不缓存文件数据。因为用户缓存的益处微乎其微,这是由于数据太多或工作集太大而无法缓存。不缓存数据简化了客户程序和整个系统,因为不必考虑缓存的一致性问题。但用户缓存元数据(Metadata)。Datanode 也不必缓存文件,因为块时作为本地文件存储的。

Namenode和Datanode被设计成可以在普通的商用机器上运行。这些机器一般运行着GNU/Linux操作系统(OS)。HDFS采用Java语言开发,因此任何支持Java的机器都可以部署Namenode或Datanode。由于采用了可移植性极强的Java 语言,使得HDFS可以部署到多种类型的机器上。一个典型的部署场景是一台机器上只运行一个Namenode实例,而集群中的其它机器分别运行一个Datanode 实例。这种架构并不排斥在一台机器上运行多个Datanode,只不过这样的情况比较少见。

集群中单一Namenode的结构大大简化了系统的架构。Namenode是所有HDFS元数据的仲裁者和管理者,这样,用户数据永远不会流过Namenode。

2.2.3数据组织与副本策略

HDFS被设计成支持大文件,适用HDFS的是那些需要处理大规模的数据集的应用。这些应用都是只写入数据一次,但却读取一次或多次,并且读取速度应能满足流式读取的需要。HDFS支持文件的“一次写入多次读取”语义。一个典型的数据块大小是64MB。因而,HDFS中的文件总是按照64M被切分成不同的块,每个块尽可能地存储于不同的Datanode中。

HDFS支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动或重命名文件。当前,HDFS不支持用户磁盘配额和访问权限控制,也不支持硬链接和软链接。但是HDFS架构并不妨碍实现这些特性。

Namenode负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被Namenode记录下来。应用程序可以设置HDFS保存的文件的副本数目。文件副本的数目称为文件的副本系数,这个信息也是由Namenode保存的。

HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。它将每个文件存储成一系列的数据块,除了最后一个,所有的数据块都是同样大小的。为了容错,文件的所有数据块都会有副本。每个文件的数据块大小和副本系数都是

基于Hadoop平台的并行数据挖掘算法工具箱与数据挖掘云

基于Hadoop平台的并行数据挖掘算法工具 箱与数据挖掘云 来源:南京大学计算机科学与技术系作者:高阳,杨育彬,商琳时间:2011-06-27 浏览次数:60 一基于云计算的海量数据挖掘 2008年7 月,《Communications of the ACM》杂志发表了关于云计算的专辑,云计算因其清晰的商业模式而受到广泛关注,并得到工业和学术界的普遍认可。目前工业界推出的云计算平台有Amazon公司的EC2和S3,Google公司的Google Apps Engine, IBM公司的Blue Cloud,Microsoft公司的Windows Azure, Salesforce公司的Sales Force, VMware公司的vCloud,Apache软件开源组织的Hadoop等。在国内,IBM与无锡市共建了云计算中心,中石化集团成功应用IBM的云计算方案建立起一个企业云计算平台。阿里巴巴集团于2009年初在南京建立电子商务云计算中心。 严格的讲,云计算是一种新颖的商业计算模型,它可以将计算任务分布在大量互连的计算机上,使各种应用系统能够根据需要获取计算资源、存储资源和其他服务资源。Google公司的云平台是最具代表性的云计算技术之一,包括四个方面的主要技术:Google文件系统GFS、并行计算模型MapReduce、结构化数据表BigTable和分布式的锁管理Chubby。基于以上技术,云计算可以为海量数据处理和分析提供一种高效的计算平台。简单来说,将海量数据分解为相同大小、分布存储,然后采用MapReduce模型进行并行化编程,这种技术使Google公司在搜索引擎应用中得到了极大的成功。 然而MapReduce计算模型适合结构一致的海量数据,且要求计算简单。对于大量的数据密集型应用(如数据挖掘任务),往往涉及到数据降维、程序迭代、

基于Hadoop平台的海量数据高效抽取方法及应用

基于Hadoop 平台的海量数据高效抽取方法及应用 徐金玲1,金 璐1,李昆明2,熊 政2,仲春林2,方 超2 (1.江苏省南京供电公司,江苏南京,210008;2.江苏方天电力技术有限公司,江苏南京,211102) 摘要:本文从数据抽取过程的本质出发,论述了传统数据抽取过程与大数据平台数据抽取过程的异同,以基于Hadoop 的大数据平台为例,结合传统的关系型数据库和非关系型数据库(NoSQL)的特点,提出了一种从关系型数据库到大数据平台的高效数据抽取方法,实现了对数据源系统资源占用的最小化,并在电力公司用电大数据抽取中得到广泛应用。关键词:海量数据;数据抽取;NoSQL;大数据平台 Method and application of efficient extraction of mass data based on Hadoop platform Xu Jinling 1,Jin Lu 1,Li Kunming 2,Xiong Zheng 2,Zhong Chunlin 2,Fang Chao 2 (1.Jiangsu Nanjing power supply company,Jiangsu Nanjing,210008;2.Jiangsu Fangtian Power Technology Co. Ltd.,Jiangsu Nanjing,211102) Abstract :This article from the essence of data extraction process,discusses the similarities and differences between traditional data extraction process and the data platform,data extraction process, the data platform based on Hadoop as an example,combining the traditional relational database and non relational database(NoSQL)characteristics,proposes a from relational database to efficient data extraction method of data platform,thereby minimizing the occupancy of the data source of the system resources, and the power companies in large data extraction has been widely applied in. Keywords :data;data extraction;NoSQL;data platform 0 引言 对于大数据的抽取,一般通过使用Sqoop 来实现。但是Sqoop 组件自身的局限性导致其对于特定的场景并不适用(例如,进行TB 级大数据量数据抽取时效率较低,进行增量数据抽取需改变源数据库表结构,对源数据库性能也有较大影响)。因此,本文提出了基于大数据平台的一种海量数据抽取的高效方法,该方法可以快速、高效、可靠地将海量数据从关系型数据库抽取到大数据平台中。同时,由于通过对数据源日志文件的分析实现对增量数据的抽取,因此该方法在抽取数据时对源数据库的影响非常小。 1 系统开发环境 系统开发环境采用CentOS 6.5操作系统,以Cloudera CDH 5.0为大数据平台框架,并结合Tomcat 作为Web Server。集群由20台服务器组成,划分为2个机架,每台服务器配置32核CPU、64GB 内存和10块磁盘。Cloudera 是全球领先的Hadoop 服务提供商,其CDH 5.0是最新的Hadoop 发行版,提供了高度的稳 定性和使用便捷性。数据源采用Oracle 数据库,抽取工具采用Golden Gate。 2 系统结构和处理流程 2.1 技术架构 系统以Oracle 为数据源,以CDH 5.0为大数据平台框架,结合Tomcat 作为Web Server 提供Web 层的访问服务。在大数据平台中,以MapReduce 作为大数据的计算引擎,以HDFS 分布式文件系统存储非结构化和半结构化的数据,以HBase 分布式数据库存 图1. 系统技术架构

基于hadoop平台海量数据的快速查询与实现

龙源期刊网 https://www.doczj.com/doc/f26022928.html, 基于hadoop平台海量数据的快速查询与实现 作者:褚福银张林何坤鹏 来源:《电脑知识与技术》2016年第21期 摘要:随着互联网技术的发展,人类产生的数据量正在呈指数级增长,Hadoop作为大数据领域的常用工具,在现代生活中发挥着至关重要的作用。Hive是基于Hadoop的一个数据仓库工具,在做查询统计分析时最终翻译成Hadoop平台上的MapReduce程序运行,当数据量不断增大时,就会使得查询效率[5]下降。该文就此提出了一种Hive与Spark结合的方案,将Hive的查询作为Spark的任务提交到Spark集群上进行计算,利用Spark的特性提高Hive 查询性能。该研究首先理论阐述了Hive与Spark各自的工作机制,然后介绍Hive_Spark原理,最后通过做实验,对实验结果进行对比,分析,从而验证Hive_Spark提高了查询效率,对大规 模数据处理具有一定参考意义。 关键词:Hadoop;Hive;Spark;查询;海量数据 中图分类号:TP31 文献标识码:A 文章编号:1009-3044(2016)21-0003-03 Abstract: With the development of Internet technology, The amount of data generated by humans is growing exponentially. Hadoop as a common tool in the field of big data, play a vital role in modern life. Hive is a data warehouse tools based on Hadoop, when doing statistical analysis queries eventually translated into Hadoop program running on the platform, when increasing amounts of data, it makes the query efficiency will be reduced. In this paper, we propose a Hive and Spark combination of the program, the Hive query as the task of Spark to submit to the Spark cluster computing, using the characteristics of Spark to improve the performance of Hive query. This research firstly theory elaborated the Hive and Spark their working mechanism, and then this paper introduces the principle of Hive_Spark finally by doing experiment, compared with the result of the experiment and analysis, to validate Hive_Spark improve the query efficiency, for large-scale data processing has a certain reference significance. Key words: Hadoop; Hive; Spark; Data query; Mass data 1 引言 随着大数据时代的到来,数据量的急速增长以及对数据实时查询的迫切需求使得传统的数据仓库引擎难以满足企业对大数据存储与分析的需求。Hadoop[3-4] 作为一种开源的架构凭借其低成本、可伸缩性和高容错性等优点开始取代传统数据仓库[8],采用 MapReduce 编程模型可以对海量数据进行有效分割和合理分配。hive是基于Hadoop的一个数据仓库工具,提供了

相关主题
文本预览
相关文档 最新文档