浅析大数据发展中的问题与挑战及其两大架构的对比分析.docx
- 文档编号:25083028
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:14
- 大小:772.07KB
浅析大数据发展中的问题与挑战及其两大架构的对比分析.docx
《浅析大数据发展中的问题与挑战及其两大架构的对比分析.docx》由会员分享,可在线阅读,更多相关《浅析大数据发展中的问题与挑战及其两大架构的对比分析.docx(14页珍藏版)》请在冰豆网上搜索。
浅析大数据发展中的问题与挑战及其两大架构的对比分析
研究生课程考核试卷
(适用于课程论文、提交报告)
科目:
软件体系结构教师:
吴映波
姓名:
杨子怡学号:
专业:
软件工程类别:
全日制学术型硕士
上课时间:
2014年04月至2014年6月
考生成绩:
卷面成绩
平时成绩
课程综合成绩
阅卷评语:
阅卷教师(签名)
重庆大学研究生院制
浅析大数据发展中的问题与挑战
及其两大架构的对比分析
姓名:
杨子怡学号:
摘要
大数据指的是数据容量为1018字节范围之内或之外的数据。
这样的数据容量大大超过了当前的在线存储系统和处理系统。
数据,数据容量只是关于大数据的一个方面,其他属性还包括数据类型、处理速度、价值密度和复杂性。
本文提到了大数据的分析和设计方面的问题和挑战。
本文介绍了大数据的两大架构Hadoop和MapReduce,并对其进行了分析和比较。
1引言
大数据的概念从早期计算开始的时候就没有统一的标准。
“大数据”最开始是指数据的容量大到无法用传统的数据库思想和工具高效的处理。
每当一个新型的存储媒体产生,可获取数据的数量都会爆发式地增长,是因为这些数据可以被轻易地获取。
原始定义的关注点为结构化数据,但是很多研究者和实践者开始意识到世界上大部分的信息都包含了大量的、非结构化的信息,其中的很多信息类型都是文本和图像。
但与此同时,却没有相对一致的新型存储媒体来满足数据的爆炸式增长。
我们定义“大数据”,仅仅是因为数据的数量超出了技术的有效存储、管理和处理能力。
这些人为的定义只是被一些强有力的分析发现的,这些发现与以下几个方面有关:
数据本身、明确的处理需求和用来分析的工具(硬件、软件和方法)能力。
正如任何一个新问题,针对如何进一步加深大数据的研究,我们得出一个结论:
新的工具需要产生来被赋予新的任务。
五年以前,我们只需要考虑成千数百的千兆字节来满足我们个人电脑的存储需求。
但如今,我们正在考虑用成千数百的兆兆字节。
因此,大数据是一个不断变化的目标。
换句话说,数据的容量是我们无法即时地捕捉的,例如,我们需要努力地去存储它,获取它,管理它,并且处理它。
同时,云计算作为与大数据密切相关的科技前沿技术,其主要架构可以用来处理大数据。
Hadoop是一个可以更容易支持开发和并行处理大规模数据的分布式计算平台,其主要优点是:
可扩展、低成本、高效、可靠。
它完全使用Java开发的开源软件,因而可以广泛运行在多种软硬件平台上。
本文分析和研究了Hadoop和MapReduce两大架构的主要特点,并对其工作原理进行了较为详细的分析和比较。
2大数据发展中的问题和挑战
2.1大数据的重要性
2010年八月,白宫、美国政府管理预算局(OMB)和科学技术政策局(OSTP)宣布大数据是国家性的挑战,它与医疗、国家安全一样需要被优先考虑。
2012年3月,美国国家科学基金会、国立卫生研究院、美国地质调查局、国防和能源部门、美国国防高级研究项目署宣布联合起来,投资超过2亿美元,自主研发大数据工具和技术。
他们的目标是在以下几方面促进我们对需要操控和挖掘海量信息技术的了解,和对其他科学领域知识的应用,这些科学领域也提到了在健康和能源防御、教育和研究范围内国家性的目标。
政府强调的是大数据怎样在学科领域创造价值。
价值来自于分析数据并挖掘有用信息的能力。
虽然政府似乎假设大数据用户将会变得更加成功、更加富有成效,并给很多行业带来不同的影响,但是对大数据,似乎依然存在,对工具、有素训练适合大数据工作人员的缺乏的隐隐担忧。
其他人则认为,对通用序列、社交媒体互动、健康档案、电话记录、政府记录的分析不仅没有创造更好的工具和服务,反而还增加了一系列的隐私侵犯、入侵和不需要的营销,对这些冲突的担忧驱使了关于如何处理大数据的竞争观念的产生。
2.2大数据发展中的问题
当前,数据量的增长速率是极其快速的。
对信息技术研究者和实践者来说,他们面临主要的挑战是数据量的增长速率已经达到超出我们能力的程度,这里的能力包括两方面:
(1)设计合理的系统来有效地处理数据;
(2)分析这些数据,来提取出对决策有重大意义的信息。
在此论文中,我们将这些问题与数据的存储、管理和处理联系起来。
2.2.1大数据存储和传输问题
每当一种新型存储媒体产生,数据的质量都会发生很大变革。
数据质量最新的改革很大程度归结于,在社交媒体产生之前一直没有新型存储媒体产生。
此外,现今的数据可以被每个人和每件事物创造,而不像在这以前,仅仅被科学家、记者和作家等创造。
当前的磁盘技术限制是每个磁盘最多4Terabytes(兆兆字节)。
所以,1艾字节需要25000张磁盘。
即使1艾字节可以在单个计算机系统上被处理,系统也不能直接附加必要数量的磁盘。
访问数据可能使当前通信堵塞。
假设1gigabyte(千兆字节)每秒的网络可达到80%的稳定传输效率。
因此,如果我们可以保持稳定的传输速率,传输1艾字节将要花费2800个小时。
然而,更多的时间将花费在从收集到存储点再到真正可以处理数据的处理点的数据传输过程中。
有两个方法可以解决这些问题。
第一种,在合适的地方处理数据,并只传输处理之后的结果信息。
换句话说,传统方式是将数据放入代码,而这种方式是将代码放进数据。
第二种,对数据进行分类,然后仅将对后面的处理至关重要的数据传输出去。
不管怎样,完整和原产的元数据必须随着实际数据传输出来。
2.2.2大数据管理问题
在提及大数据的时候,管理也许是最难解决的问题了。
这个问题是在十年前的英国科学倡议中首次被提出,倡议书说明数据被地理式分布并被很多实体拥有和管理。
解决关于数据访问、元数据、数据利用、更新、之力和参考数目(出版物)的问题已经被证明是最大的阻碍。
跟手工方法收集数据不同,数字数据的收集遵守了严格的协议,来确保准确性和有效性,相比之下轻松许多。
数据分类常常更关注缺失数据或异常值,而不是试图验证每一个项目。
数据通常是非常细粒度的,如点击流或计量数据。
考虑到数据的容量,验证每个数据项是不切实际的,所以需要一种新的途径来对数据进行确认和验证。
这个数据的来源是多种多样的——从数据格式上和收集方法来分,不仅有时间上的,还有空间上的。
单个媒介的数字数据是令人感到舒服的:
文档、图纸、图片、声音和视频记录、模型、软件行为、用户界面设计等,不论有或没有足够的元数据来描述何事、何时、何地、何人、为何,并且是如何收集它和它的出处的。
然而,所有这些数据都可通过检查和分析得知。
总的来说,暂时没有关于大数据管理完美的解决方案。
这代表了一个非常重要的空白,这个空白需要在大数据研究方面被填充。
2.2.3大数据处理问题
假设1艾字节的数据需要作为一个整体被处理。
为简单起见,假定数据被分成很多块,每块有8个字,那么1艾字节=1000拍字节。
假设一个处理器处理频率为5千兆赫,且对每块数据要耗费100条指令,那么端到端处理需要的时间将是20纳秒。
针对1000拍字节的数据,完整的端到端处理需要时间约为635年。
因此,针对艾字节数据有效的处理,需要广泛的并行处理机制和新的分析算法来提供及时可行的信息。
2.3动态设计的主要挑战
随着每次规模的增长和新型分析技术的发展,将会有很多未知的挑战。
利用现今的工具和技术,这些挑战将很难对付。
我们相信,当数据集达到泽字节规模时,这些挑战可能会被解决。
2.3.1数据的输入输出处理
在大数据设计中,输出过程是一个主要的问题。
Jacobs[1]言简意赅地总结了这个问题——“大数据的输入过程比输过程出更容易。
”他的工作表明,数据输入和存储可以通过当前使用的相关数据库来处理。
数据处理是一个添加、更新、搜寻和检索出由小到大量数据的过程,为处理这个过程,已设计出了一些工具,但是这些工具不能够提取大量数据并且不能在几秒或几分钟内完成。
如何存取非常大量的半结构化数据或非结构化数据,以及如何利用未知工具设计仍然不知道。
很明显,无论是通过维度建模和可能进展缓慢或功能有限在线分析处理(OLAP),还是简单地把所有数据读入内存中,这个问题都无法解决。
设计中应当考虑的技术因素包括连续磁盘的读取速度与随机存储器存取速度的比率。
当前的技术显示,随机存取内存比顺序存取慢150000倍。
如果加入表或要求将大量的分散的但不知何故相关数据联系起来,也许仅仅通过时间这个观察指标来看,都将产生巨大的操作成本(Jacob,2009)。
2.3.2大数据质量与数量
“数量和质量”是大数据用户一个新兴的挑战。
随着用户获得和能够获得更多的数据(数量),他们通常想要更多的数据。
对于某些用户来说,获取数据成为一种爱好。
也许,是因为他们相信拥有足够的数据,将能够很好地解释任何他们感兴趣的现象。
相反,一个大数据用户应当关注数据质量,这意味着不是拥有所有能得到的数据,而是拥有(非常)大量的高质量数据,这些高质量数据可以用来下一些精确的高价值的结论(见表3)。
另一种看待这个问题的方式是,用户需要的精确程度是多少?
例如,趋势分析可能不需要传统数据库系统所提供的精度。
但是趋势分析需要在大数据环境下对数据大量加工。
这个问题也体现在如下所讨论的“速度与规模”的挑战中。
表1关于大数据数量和质量的挑战
在所选择最可能相关的数据中,我们如何确定哪些数据是无关紧要的?
我们如何确保给定类型的所有数据是可靠和准确的,或者只是大致准确的吗?
在预测特定事件的概率或者评估给定事件的准确性时,多少数据是足够的。
我们如何评估数据对于做决策时的“价值”?
更多的数据就一定会有更好的决策吗?
2.3.3数据量增长和数据的扩张
大多数组织期望他们的数据增长速度能始终超过他们提高其服务、它们的业务和业务合作伙伴和客户、项目和设施,和它的员工增长的速率。
很少有企业充分考虑到数据的膨胀,这样的膨胀发生在数据记录急剧增长的情况下,随着时间的推移,新技术、流程和信息需求也在不断进化。
大部分数据是时刻变化的(相同的数据项目可在一个时间区间内作为不同的数据值被反复收集。
许多这样的数据需要回顾性的分析——尤其当它被用在估计和预测分析中。
2.3.4速度与规模
随着数据量的增长,“大”这个词语可能意味着从数据仓库的规模变化到可在一个给定间隔(比如说24小时)内被处理的数据规模。
仔细观察被分析的问题,往往比处理所有的数据更加重要。
考虑实时进程(产生接近连续数据)时,时间信息是关键的,比如无线电频率标识符(RFID通过无线(用于读取电子数据)传输,例如EZPass标记)和其他类型的传感器。
一个组织必须确定多少数量的数据足够用来设定它的处理区间,因为这将决定处理系统的结构、计算引擎的特征和算法结构以及实现。
据说,另一个主要的挑战是数据传播。
通信中间件是现今遇到的瓶颈。
然而,通信硬件新技术的产生速度一直在增加,消息处理速度只是缓慢地下降。
计算与通信的分歧没有通过大数据存储系统(如HDFS或Accumulo(针对艾字节数量级的数据集)彻底被解决。
2.3.5结构化和非结构化数据
适合分析的非结构化数据(比如,自由文体的文本,图表,多媒体等)与存储在关系型数据库的完好定义的数据(经常存在于数据表中)的转化,会降低端对端处理的性能。
非关系型、分布式、分析定向数据库(比如,NoSQL、MongoDB、SciDB和关联数据库)的出现,为表示和组织信息提供了动态的灵活性。
不像一个数据集,很多数据来源没有开始和结束。
设备开始收集之后,将一直收集,直到有足够的数据或耗尽了精力和财力。
数据流在速度、频率、容量和复杂性方面,都是不同的。
数据流在两个方面可以动态更改:
(1)数据格式的改变,按照分析处理数据的方式来改变数据格式
(2)数据本身的改变,满足不同分析处理数据的要求。
一个复杂的因素是一种隐式假设,假设数据流是符合我们预想的,并或多或少存在一定顺序。
在现实中,数据流不那么符合我们要求,并经常是中断的,混合在与主要数据兴趣不相关的数据中。
所以,我们需要重新考虑数据流的处理,也许,这种考虑更强调对不连续和分布式数据流做连续分析。
3大数据的两大架构
Hadoop是一个基于Java的分布式密集数据处理和数据分析的软件框架。
Hadoop在很大程度上是受Google在2004年白皮书中阐述的MapReduce技术的启发。
MapReduce工作原理是将任务分解为成百上千个小任务,然后发送到计算机集群中。
每台计算机再传送自己那部分信息,MapReduce则迅速整合这些反馈并形成答案。
简单来说,就是任务的分解和结果的合成。
Hadoop的扩展性非常优秀,Hadoop可处理分布在数以千计的低成本x86服务器计算节点中的大型数据。
这种高容量低成本的组合引人注目,但Hadoop吸引人的是其处理混合数据类型的能力。
Hadoop可以管理结构化数据,以及诸如服务器日志文件和Web点击流的数据。
同时还可以管理以非结构化文本为中心的数据,如Facebook和Twitter。
本文将对Hadoop和MapReduce两大架构进行比较分析。
3.1Hadoop架构介绍
Hadoop并不仅仅是一个用于存储的分布式文件系统,而是在由通用计算设备组成的大型集群上执行分布式应用的框架。
ApacheHadoop项目中包含了下列产品(见图1)。
Pig和Hive是Hadoop的两个解决方案,使得在Hadoop上的编程更加容易,编程人员不再需要直接使用JavaAPIs。
Pig可加载数据、转换数据格式以及存储最终结果等一系列过程,从而优化MapReduce运算。
Hive在Hadoop中扮演数据仓库的角色。
Hive可向HDFS添加数据,并允许使用类似SQL的语言进行数据查询。
Chukwa是基于Hadoop集群的监控系统,简单来说就是一个WatchDog。
HBase是一个面向列的分布式存储系统,用于在Hadoop中支持大型稀疏表的列存储数据环境。
MapReduce用于超大型数据集的并行运算。
HDFS可以支持千万级的大型分布式文件系统。
Zookeeper提供分布式应用程序的协调服务,支持的功能包括配置维护、名字服务、分布式同步、组服务等。
Avro是一个数据序列化系统,用于支持大批量数据交换的应用。
Hadoop主要由HDFS和MapReduce引擎两部分组成。
最底层是HDFS,它存储Hadoop集群中所有存储节点上的文件,HDFS的上一层是MapReduce引擎,该引擎由JobTracker和TaskTrackers组成。
Hadoop基本构成如图1。
3.2Hadoop与MapReduce对比浅析
最简单的MapReduce应用程序至少包含3个部分:
一个Map函数、一个Reduce函数和一个main函数。
main函数将作业控制和文件输入/输出结合起来。
在这点上,Hadoop提供了大量的接口和抽象类,从而为Hadoop应用程序开发人员提供许多工具,可用于调试和性能度量等。
MapReduce本身就是用于并行处理大数据的软件框架。
MapReduce的根源是函数性编程中的Map函数和Reduce函数。
它由2个可能包含许多事例(许多Map和Reduce)的操作组成。
Map函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。
Reduce函数接受Map函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。
可以在每个域上执行Map函数和Reduce函数,然后将输出的键/值对列表输入到另一个Reduce函数,就可得到与前面一样的结果。
换句话说,可以在输入域并行使用相同的操作,得到的结果是一样的,但速度更快。
MapReduce的并行功能可在任意数量的系统上使用。
MapReduce构思如图2。
图1Hadoop基本构成图
3.2.1JobTracker和TaskTracker
HadoopMapReduce引擎由JobTracker和TaskTracker组成。
图3示出的是Hadoop的结构。
JobTracker负责管理调度所有作业,它是整个系统分配任务的核心。
与HDFS的namenode类似,JobTracker也是唯一的。
它是Hadoop集群中唯一负责控制MapReduce应用程序的系统,在应用程序提交之后,将提供包含在HDFS中的输入和输出目录,JobTracker使用文件块信息(物理量和位置)确定如何创建其他TaskTracker从属任务,MapReduce应用程序被复制到每个出现文件块的节点,为特定节点上的每个文件块。
创建一个唯一的从属任务。
TaskTracker具体负责执行用户定义的操作,每个任务被分割为任务集,包含Map任务和Reduce任务。
任务是具体执行的基本单元,TaskTracker执行过程中需要向JobTracker发送心跳信息,汇报每个任务的执行状态,帮助JobTracker收集作业执行的整体情况,为下次任务的分配提供依据。
在Hadoop中,Client(任务的提交者)是一组API,用户需要自定义自己需要的内容,由Client将作业及其配置提交到JobTracker,并监控执行状况。
与HDFS的通信机制相同,HadoopMapReduce也使用协议接口来实现服务器间的通信。
Client与TaskTracker及TaskTracker之间没有直接通信。
由于集群各主机的通信比较复杂,点对点直接通信难以维持状态信息,所以由JobTracker收集整理统一转发。
3.2.2MapReduce的工作机制
JobClient.runJob(conf)这一行简短的代码后面隐藏着大量的处理细节。
整个过程如图4所示,包含如下4个独立的实体。
a)客户端:
提交MapReduce作业。
b)JobTracker:
协调作业的运行。
c)TaskTracker:
运行作业划分后的任务。
d)分布式文件系统(一般为HDFS):
用在其他实体间共享作业文件。
3.2.3作业的调度
早期版本的Hadoop使用一种非常简单的方法来调度用户的作业。
按照作业提交的顺序,即先进先出(FIFO)调度算法来运行作业。
典型情况下,每个作业都会使用整个集群,因此作业必须等待直到轮到自己运行。
虽然共享集群极有可能为多用户提供大量资源,但问题在于如何公平地在用户之间分配资源,这需要一个更好的调度器。
后来版本的Hadoop加入设置作业优先级的功能。
可以通过设置mapred.job.priority属性或JobClient的setJobPriority()方法来设置优先级。
在这2种方法中,可以选择VERY_HIGH、HIGH、NORMAL、LOW、VERY_LOW中的一个值作为优先级。
作业调度器会选择优先级最高的那个作业执行。
在Hadoop中,MapReduce的调度器可以选择。
默认的调度器是FIFO,还可选择FairScheduler和CapacityScheduler。
FairScheduler的目标是让每个用户公平地共享集群能力。
如果只有一个作业,它会得到集群的所有资源。
随着提交的作业越来越多,空闲的TaskTracker任务槽会以“让每个用户公平共享集群”这种方式进行分配。
即便一个用户的长时间作业正在运行而且还在进行过程中,另一个用户的一个短的作业会在合理的时间内完成。
作业都被放在作业池中,在默认情况下,每个用户都有自己的作业池。
FairScheduler支持抢占,如果一个池在特定一段时间内未得到公平的资源,它会中止运行池中使用过多资源的任务,以便把任务槽让给运行资源不足的池。
针对多作业调度,CapacityScheduler调度方式下,集群由很多队列组成,每个队列有一个分配能力。
这一点与FairScheduler类似,只不过在每个队列内部,作业根据FIFO方式调度。
即CapacityScheduler允许为每个用户模拟一个独立的使用FIFOScheduling的MapReduce集群。
图2MapReduce构思
图3Hadoop结构
图4MapReduce工作原理
4总结
总之,大数据是关于商业和社会科学的一个“新”的前沿。
可以被数字宇宙提取的信息和知识数量,将随着用户想出新的信息和过程数据而继续扩大。
此外,已经比较清楚的是,“更多的数据不仅仅是更多的数据”,但“更多的数据肯定是不同的”。
“大数据”只是问题的开始。
技术的改革和更替,可以保证在几年后,可以在一年的时间内,产生比从人类出现开始收集的数据量,更多的数据。
同时,云计算的伟大之处就在于在进行大数据处理时不必再像以往一样购买大量的服务器集群,租用服务器处理大数据更加利于控制成本。
Hadoop作为一个重量级的分布式处理开源框架已经在大数据处理领域有所作为,企业希望利用Hadoop来规划其自身未来数据处理的蓝图。
从EMC、Oracle到Microsoft,几乎所有高科技厂商都宣布了自己以Hadoop为基础的大数据战略。
现今Hadoop已经成为IT商场吸引客户的热点词汇。
参考文献
[1]Hadoop[EB/OL].[2012-03-19].http:
//hadoop.apache.org.
[2]White.Hadoop权威指南[M].2版.北京:
清华大学出版社,2011:
15-73,167-188.
[3]White.HadoopTheDefinitiveGuide2ndEdition[M].Oreilly,2010:
41-73,167-188.
[4]JasonVenner.ProHadoop[M].Apress,2009:
27-53.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浅析 数据 发展 中的 问题 挑战 及其 架构 对比 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)