基于MapReduce的连接查询算法

本文探讨了大数据时代背景下,基于MapReduce的连接查询算法。研究内容包括Hadoop平台、MapReduce计算模型、Hive数据仓库以及各种连接算法,如重分区连接、复制连接、半连接和多表连接。论文强调了数据倾斜情况下的连接算法设计,通过实验分析验证了算法的有效性。未来研究将关注算法在真实环境中的应用和优化。
摘要由CSDN通过智能技术生成

1        引言

1.1  研究背景

因为计算机科学的快速发展和飞速前进,计算机已经渗透到人们的生活和企业的生产当中。计算机带来的革命随处可见,因为有了物联网的存在,人们只需要在手机上触摸一下屏幕就可以买到自己想要购买的商品,因为有了微信、微博等社交网络的兴起,人与人之间的距离变得越来越小,人与人之间的交流越来越容易。但是,当计算机技术给我们带来了前所未有的用户体验和便捷的同时,这些网络传输所产生的信息量的增长也给计算机专业人员带来了前所未有的挑战。在文献[1]中可以了解到百度所产生的总数据量已经超过了1EB,每天需要处理的网页数据达到10PB~100PB;淘宝累计交易数据量高达100PB;Twitter每天发布超过两亿条信息,新浪微博每天发帖量达到8000万多条;中国移动一个省的电话通联记录数据每月可达0.5PB~1PB;一个省会城市公安局道路车辆监控数据三年可达200亿条、总量120TB。据世界权威IT信息咨询分析公司IDC研究报告预测:全世界数据量未来10年将从2009年的0.8ZB增长到2020年的35ZB(1ZB=1000EB=1000000PB),10年将增长44倍,年均增长40%。

动辄达到数百TB规模的数据量早已超出了传统的关系型数据库的存储与分析能力。单机的统计和可视化的工具也因此变得无法使用,它们的缺点主要表现在以下方面:灵活性差、扩展性差、性能差等等。在此背景下,出现了一些摒弃了传统DBMS设计思想的新存储系统---NoSQL,即“Not only SQL",也就是对关系型DBMS的补充。相比较于关系型数据库来讲,NoSQL具有大得多的吞吐量、拥有更强大的水平和垂直扩展能力,更重要的是,它使用的是低端硬件集群,这样就更好地避免了昂贵的OR-Mapping。Redis、MongoDB和HBase等就是在NoSQL思想下开发出的很受市场欢迎的数据库系统。

大数据之所以这么吸引众人的眼球,并不仅仅在于它的海量数据存储,更在于它能够从海量数据中得到有价值的信息。这说的就是大数据的第二个重要意义:对海量的数据信息进行信息处理和挖掘。其重要价值已被越来越多的公司所发现并加以利用。例如,很多社交网站,就是通过数据挖掘来找到潜在的用户需求,从而能够对用户的个人喜好进行分析处理,设计出新颖的网络应用模块,比如好友之间的广告推荐等应用模块;Google更是通过对海量数据进行page-rank信息的计算,对网页进行高效准确的排名。微软公司提出的Windows Azure Platform,用户可以通过客户端对云端资源访问、处理和分析。

在大数据风靡全球的同时,我国政府也加快了对大数据相关技术的攻关,工信部发布的《物联网十二五规划》里,把信息处理技术作为4项关键技术创新工程之一被提出来,其中包括了海量数据存储、数据挖掘、图像视频智能分析等大数据技术的重要组成部分。随着技术的日益成熟,市场逐步向前推进,受高科技的快速发展、互联网速度的进一步提高,海量数据的高效处理必然将对IT产业带来更大的推动作用。

1.2 研究现状

因为Web2.0技术在网络中的普遍应用,NoSQL得到了非常快速的发展。尽管在实际的应用系统中,已经存在了大量的NoSQL数据存储系统,但是,就其研究现状来说,许多挑战性问题还值得研究。例如:NoSQL并不具备类似关系型数据库所具有的强有力的理论;而且其并没有能考虑全局通用性的系列化的成果,并因此导致了其应用具有一定的局限性。

近年来,大数据如浪潮般席卷全球,并深度改变人们的生活、工作和思维方式。世界上越来越多的国家开始从战略层面认识大数据,在政府治理领域融入大数据可视化思维和技术。目前,大数据可视化分析产品也伴随着大数据的爆发而日渐兴起。国外的此类产品已慢慢走向成熟,例如Hadoop、IBM大数据平台和Splunk等。

其中,MapReduce作为一种海量数据处理的并行编程模型,自提出以来,受到了工业界和学术界的广泛关注。目前已经广泛应用在网页索引、数据挖掘等方面。

Hadoop作为实现了Map-Reduce模型的开源分布式并行编程框架,已经在一些领域取得了显著的成效。 Hadoop主要提供了一套名为HDFS的分布式文件系统以及支持MapReduce的计算框架。此外,还提供构建在HDFS和MapReduce之上的可扩展的数据仓库Hive,结构化数据库HBase,数据流高层语言Pig,高性能分布式协同服务ZooKeeper,以及 面向大规模分布式系统的数据收集软件Chukwa等。基于Hadoop的应用已经遍地开花,尤其是在互联网领域。Yahoo!通过集群运行Hadoop,以支持web搜索的研究;Facebook借助集群运行Hadoop,以支持其数据分析和机器学习;百度则使用Hadoop进行搜索日志的分析和网页数据的挖掘工作;淘宝的Hadoop系统用于存储并处理电子商务交易的相关数据;中国移动研究院基于Hadoop的BigCloud系统用于对数据进行分析和并对外提供服务。国内的高校和科研院所基于Hadoop在数据存储、资源管理、作业调度、 性能优化、系统高可用性和安全性方面进行研究,并将研究成果多以开源形式贡献给Hadoop社区。

Facebook使用Hive作为底层数据仓库,原始手机的全站数据都要经过Hive来进行加工和分析,然后把处理过的数据返回给前台或者关系型数据中。Hive是以Hadoop作为基础的,并把开发人员所需要的SQL接口暴露出来。所以大大降低了开发成本,程序员只需要写出SQL语句就可以自动转换为MapReduce程序。另外,MapReduce作为大数据处理的并行处理架构,还是有很多问题急需解决。例如:数据查询中,连接操作不能很高效的转换为MapReduce程序。

从上面的论述来看,大数据的时代,谁能占领这块新领地,谁就能够在这一场技术之争中获胜,并成为未来计算机领域的新龙头。

1.3 研究内容

本文的主要研究基于MapReduce框架的数据查询,主要的研究内容如下几个方面:

第一,如何基于大规模数据建立NoSQL的数据模型,大规模的原始数据的存储方式以及存储结构的建立与传统的SQL数据模型的不同及优点在什么地方。

第二,大规模数据存储之后,如何实现大规模的数据查询是本文研究的第二个重要内容。在此基础之上,介绍MapReduce是如何实现大规模数据查询的高效性,并了解Hive的SQL语言的易用性。

第三,对于查询扩展算法,在各种数据文件大小不同的情况下,如何选择高效的查询算法;以及在数据倾斜的状况下,如何规避reduce阶段的时间浪费。

第四,在实验环境中,就以上提出的各种算法,写出相应的实现代码,并记录各种算法的查询时间,以验证算法决策树的正确性。

1.4 论文结构

本文章节安排如下:

第一章 引言。介绍了大数据时代的背景,基于NoSQL的大数据研究现状,以及数据挖掘的并行处理框架MapReduce的介绍,最后介绍了论文的组织结构和内容安排。

第二章 Hadoop平台。介绍论文涉及的主要技术,主要介绍Hadoop平台的架构和工作原理。

第三章 查询算法思想。讲解连接的种类,查询的算法设计原则和针对各种查询算法而提出的算法决策树。

第四章 数据均匀情况下的查询算法。本章详细讲述在数据均匀情况下的重分区连接、复制连接和半连接的两表等值连接算法,以及多连接的算法。

第五章 数据倾斜情况下的查询算法。本章详细讲述了在数据倾斜的情况下的连接算法。

第六章 总结与展望。总结全文内容并展望未来。


2        Hadoop平台

2.1  Hadoop平台概述

Hadoop是一个开源的分布式计算平台。文献[2]详细讲述了Hadoop平台的架构和原理。Hadoop为用户提供了系统底层的细节透明的分布式基础架构。它的设计并不是依靠硬件技术来提高可用性,而是扩展大量的廉价机器来提供本地存储和计算,又依赖能够自动检测错误的软件库来提高正确率。Hadoop是基于Google MapReduce算法写的Java实现,有很强的移植性。它能够让Hadoop程序员不用考虑细节,直接根据其提供的接口来编写上层数据挖掘代码。

Hadoop是目前最流行的分布式开发框架。不仅有很好的扩容能力,并且能够自动检测失效的DataNode,并且将其失败的任务重新分配。Hadoop不仅能够保持非常快的处理速度,而且所花费的硬件资源都是廉价机器。这给了大数据处理“亲民”的形象。

作为流行的趋势,Hadoop的快速发展是有目共睹的。它的相关子项目也受到开发者的喜爱和青睐。如图2-1所示,Hadoop架构已越发完善,其相关子模块已经很多,如:可扩展的分布式数据库HBase、数据仓库Hive、计算引擎Spark、以及Zookeeper、Mahout等。

                            图2-1 Hadoop架构

2.2 HDFS

2.2.1           HDFS概述

HDFS是Hadoop的分布式文件系统,基于流数据访问和处理超大文件而设计开发的,能够运行在通用硬件之上。大体来讲,HDFS有以下几个优点:

(1)HDFS的错误检测和快速恢复使其独领风骚。因为,在实际生产环境中,硬件错误是常态,而不是说发生了异常情况,特别是当成千上百个服务器工作时,一个组件的失灵是不可避免的。

(2)HDFS上部署的应用程序主要是以流式读为主,大多是做批量处理;所以HDFS具有数据访问的高吞吐量来支持应用程序的执行。

(3)HDFS的存储能力已经达到了PB级的数据,并且有很强的集群扩展能力。

(4)由于HDFS自身所具有的容错率,使其只需运行在廉价的商用机器集群之上就可以。

2.2.2           HDFS架构

如图2-2所示,HDFS是依赖主从结构来管理文件系统的。它包含一个NameNode和多个DataNode。很显然,主节点是NameNode,管理整个文件系统的命名空间。集群中的DataNode负

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值