热门标签:写本科论文 写作发表 工程师论文 写一篇论文多少钱

当前位置: 论文多少钱 > 计算机论文 > 大数据处理平台Hadoop的应用不足和解决方案

大数据处理平台Hadoop的应用不足和解决方案

时间:2021-09-29作者:石方夏 高屹
本文导读:这是一篇关于大数据处理平台Hadoop的应用不足和解决方案的文章,随着各项技术的成熟与发展,以及科研机构对Hadoop在各个领域中应用的深度研究,Hadoop会更加方便业界各种类型用户使用,尤其是那些中小企业,在提供高可靠性和高性能服务的同时,可为其节省了很大的人力物力方面的开

  摘    要: Hadoop等一些大数据处理平台的出现在一定程度上为人们处理大数据提供了可能与方便,但也存在一些不足。文中利用个例应用和归纳总结相结合的方法,从底层应用入手对Hadoop的主要构件HDFS、MapReduce及其生态环境进行介绍,阐述了其运行机制及原理。对目前Hadoop的应用场景作了详细的论述,并对其在使用过程中存在的问题进行了总结,最后给出这些问题目前的研究状况及部分解决方案。后期的使用证明,该方案可在一定程度上解决使用Hadoop过程中所遇到的问题。

  关键词:      Hadoop大数据技术;应用分析;数据存储;数据处理;分布式文件系统;数据分析;

  Abstract: Some big data platforms like Hadoop,to a certain extent,provide possibility and convenience for people′ s big data processing. However,they still have some shortcomings. The main components of Hadoop are introduced with the method combining case application and summary from the bottom application,such as HDFS(Hadoop distributed file system),MapReduce and their ecological environment,and their operating mechanisms and principles are expounded. The application scenarios of Hadoop at present are discussed in detail and the problems existing in its application are summarized. In the end,the current research status of these problems and some solutions are given. Later application effect proves that these solutions,to some extent,can solve the problems encountered in the application of Hadoop.

  Keyword: Hadoop big data technology; applied analysis; data storage; data processing; HDFS; data analysis;

  0 、引言

  IDC(Internet Data Center)的一项估测显示,人类在最近两年产生的数据量是之前所产生的全部数据量之和[1],这个结果被称为数据的“摩尔定律”。基于人类产生的数据爆炸式的增长,对大数据的存储和处理就显得十分必要。

  目前,Hadoop、Spark、Storm都是可以处理大数据的架构平台,但各有侧重点。Hadoop作为出现较早的典型开源分布式计算平台,因其可以运行在Linux平台上,且具有可靠性高、可扩展性、容错性好、低成本并且支持多种编程语言等优点,被广泛应用于各种大数据处理的场景中,如百度、网易、华为、中国移动、淘宝等企业都用Hadoop处理大量的数据信息。以淘宝为例,淘宝使用Hadoop组建的机群共有2 860多个节点,总存储容量在50 PB左右,使用的容量[1]已超过40 PB。

  Hadoop是基于Java语言开发的,跨平台性较好,可以部署在廉价的计算机机群中。Hadoop的核心是HDFS和Map Reduce。

  HDFS(分布式文件系统)是针对GFS(Google File System)文件系统开源实现,是一种面向普通硬件的分布式文件系统。HDFS读写速度快,伸缩性和容错性都比较好,可以支持大规模数据的分布式存储,因其采用冗余数据存储模式,能够较好地保证数据的安全性[1]。

  Map Reduce是对大数据进行并行处理的计算平台和框架。即使用户并不十分了解分布式系统的底层细节,也能比较容易地开发出并行的应用程序,并将其应用在各类廉价的计算机机群上,用于大规模数据(1 TB以上)的并行计算,完成海量数据的处理任务[2]。

  在进行数据处理时,一些较复杂或者是在大规模集群上运行的并行计算,Map Reduce会将它们抽象到Map和Reduce两个函数上。其中,Map完成指定数据集上独立元素的操作,生成中间结果“键值”对;Reduce则完成“规约”中间结果中相同“键”的所有“值”的操作,最终生成运算结果。
 

大数据处理平台Hadoop的应用不足和解决方案
 

  1 、Hadoop的原理、运行机制与生态

  1.1、 Hadoop的原理及运行机制

  Hadoop是典型的主从(Master/Slave)结构。其构成包括一个Name Node(名称节点)和多个Data Node(数据节点)。

  主服务器是由Name Node构成的[3],它的主要作用是管理HDFS(分布式文件系统)的Name Space(命名空间),其中保存了Fs Image和Edit Log两个核心的数据结构。前者用来对文件系统树和文件树中所有文件的元数据进行维护;后者则用来进行创建文件、删除文件、重命名文件等一系列操作,并执行Client提出的文件访问命令。名称节点的数据结构[1]如图1所示。

  图1 名称节点的数据结构
图1 名称节点的数据结构

  Data Node是HDFS的工作节点,数据的存储和读取都由Data Node负责。它根据Name Node或Client的调度进行数据的读取以及检索。本地的Linux文件系统是存储和保存数据节点数据的实际存放地,每个Data Node会定期向Name Node发送“心跳”信息,Name Node会根据发送的“心跳”信息判断各个Data Node的运行状况。未按时发送“心跳”信息的数据节点会被标记为宕机,不会再给它分配任何I/O请求[1]。当用户在Client上发出指令要访问一个文件时,HDFS的实际工作流程是先把文件名发送给Name Node,Name Node根据文件名找到对应的数据块信息及每个数据块所在的Data Node位置,然后把这些信息发送给客户端。客户端接收到上述信息后会与这些Data Node直接进行通信以获取数据。这种设计方式实现了并发访问,减小了寻址开销[4],大大提高了数据的访问速度。HDFS的体系结构[5]如图2所示。

  图2 HDFS的体系结构
图2 HDFS的体系结构

  1.2、 Map Reduce的运行机制

  在Hadoop架构中,Map Reduce的主要任务就是将输入数据分割成不同的逻辑块,这些逻辑块通过各自的Map任务进行单独处理。之后,Reduce会将这些单独处理的结果放到不同的集合中去,再进行存储[5]。其工作流程可分为分片格式化数据源、执行Map Task、执行Shuffle、执行Reduce Task、写入文件五个阶段[6],如图3所示。

  图3 Map Reduce的工作过程
图3 Map Reduce的工作过程

  1.2.1 、Map Task的工作流程

  在整个的数据处理过程中,可以把Map Reduce的工作流程分为前后两个部分。它的前半部分工作流程就是Map Task。在这部分,流程可分为Read、Map、Collect、Spill和Combine五个步骤。

  1)Read:是解析键值对的过程。在这个过程中,用户首先编写一个Record Reader,然后Map Task通过它在输入的Input Split中进行解析,得到一个一个的key/value。

  2)Map:是产生一系列新的key/value的过程。这个过程中用户编写一个map()函数,然后用这个函数处理解析出来的key/value值,其结果就是产生出新的一系列的key/value。

  3)Collect:数据处理完成后,map()函数通常会调用output Collector.Collect()输出结果。在该函数内部,通过调用partitioner将key/value进行分片,随后写入到一个环形的内存缓冲区中。

  4)Spill:随着key/value分片不断地被写入到环形的内存缓冲区中,该缓冲区会出现溢出现象,这个时候,Map Reduce会对缓冲区中的数据进行一次本地整理(包括排序、压缩、合并),然后将这些经过整理的数据写入到本地的磁盘中,同时生成一个临时文件。

  5)Combine:在处理完所有的数据后,Map Task会进行一次对所有临时文件的合并操作,将这些在Spill阶段生成的临时文件合并成一个文件[6],以确保最终生成的数据文件只有一个。

  1.2.2、 Reduce Task的工作流程

  Map Reduce后半部分工作流程就是Reduce Task,这部分流程可分为Copy、Merge、Sort、Reduce、Write五个步骤。

  1)Copy:这一步Reduce会拷贝各个Map Task上的一个分片数据,并对该数据进行分析、判断,视其大小情况将其放在内存中或写入到本地磁盘中。

  2)Merge:这一步是防止磁盘文件过多或者是内存过度使用。Reduce Task在第一步进行数据拷贝的同时,会启动两个后台线程,分别用来合并磁盘上和内存中的文件,以确保磁盘存储的文件不会太多、内存不会被占用过多。

  3)Sort:在数据处理过程中,Hadoop采用基于排序的策略,对用户用Reduce()方法输入的按key聚集产生的数据进行处理,将数据中key相同的数据聚集在一起。在Sort阶段,各Map Task对各自的处理结果进行排序的基础上,Reduce Task要做的只是对所有数据进行归并排序即可。

  4)Reduce:将输出的键值对写入HDFS。对排序后的键值对调用Reduce()方法,把那些“键”相等的键值对调用一次Reduce()方法,每次调用后,都会产生0个或多个键值对。这些键值对会被写入HDFS。

  5)Write阶段:计算结果输出。Reduce()将计算结果写到HDFS上[6]。

  1.3 、Hadoop生态系统

  除了上面讲到的HDFS和Map Reduce外,Hadoop生态圈主要还包括HBase、Hive、Pig、Mahout、Zoo Keeper、Flume、Sqoop和Ambari等。

  HBase是一个分布式的列式数据库,它以HDFS作为其底层数据存储,采用基于列的存储方式,横向扩展能力强,可以不断增加廉价的商用服务器来提高存储能力,从而实现强大的结构化、半结构化、非结构化数据存储[1]。

  Hive是基于Hadoop的分布式数据仓库技术,用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储。因为在处理过程中,数据不会发生快速变化且对处理结果的实时响应要求不高,因此适合处理相对静态的海量数据集。同时,它提供的Hive QL语句可快速实现简单的Map Reduce统计,比较适合数据仓库的统计分析[3]。

  Pig是用来查询大型半结构化数据集的数据流语言和运行环境。它创建了更为简单的过程语言抽象,在从大型数据集中搜索满足某个特定搜索条件的记录时,有明显的优势,只要编写一个简单的脚本在集群中自动并行处理与分发即可[1]。

  Mahout是一个开源项目,可提供一些可扩展的机器学习领域经典算法的实现,方便开发人员更好地创建智能应用程序。

  Zoo Keeper是一个协同工作系统,用于构建分布式应用,减轻分布式应用程序所承担的协调任务。

  Flume用于收集日志数据。支持日志系统中定制各类数据发送方,将数据进行简单处理并写到各种数据接收方。

  Sqoop是一个将Hadoop和关系数据库中的数据进行相互交换的工具。它可以方便地将诸如My SQL、Oracle关系数据库中的数据导入到Hadoop中,也可以将Hadoop中的数据导出到关系数据库中,使得数据的迁移变得方便快捷[1]。

  Ambari是一种支持Hadoop集群安装、部署、配置和管理的工具,目前它对大多数的Hadoop组件都提供支持,包括上面提到的各种组件。

  2 、Hadoop的应用领域及存在的不足

  2.1 、Hadoop的应用领域

  Hadoop是当前使用较多的大数据管理平台,它可以实现从单一服务器到大规模集群的扩展,而且每个服务器都提供本地计算和存储,从而轻松地集成结构化、半结构化甚至非结构化数据集。

  目前很多企业或组织都在应用Hadoop商业应用系统。其应用领域包括互联网、生物医学、物流、城市管理、金融、汽车、餐饮、电信、能源、体育和娱乐、制造业、安全领域和个人生活等。可以说是涉及到了人类生活的各个方面。

  互联网行业:借助于大数据技术,可以分析客户行为,进行商品推荐和针对性广告投放,可以帮助企业或组织及时调整生产或管理战略,这在各大购物平台显得尤为突出。

  生物医学:大数据能帮助研究者实现流行病预测、健康管理、智慧医疗,并加强对人类自身的研究,了解更多的生命奥秘,服务于人类。

  物流行业:利用大数据管理,可以很好地优化物流网络平台,提高物流效率及服务,降低物流成本。

  城市管理:智能交通、环保监测、城市规划和智能安防等都依赖于对大数据的海量存储与及时处理,从而使上述活动变得高效快捷,富有成效。

  金融行业:大数据在高频交易、社交情绪分析和信贷风险分析三大金融创新领域发挥着重大作用。

  汽车行业:利用大数据分析用户的用车需求,划分不同群体的购车意愿,掌握用户的消费水平及购车能力,及时调整汽车层次设计,以满足市场的不同需求。同时,利用大数据和物联网技术研发、生产无人驾驶汽车,使汽车能够更好地向智能化、自动化的方向迈进。

  餐饮行业:餐饮O2O(Online To Office),可以无缝整合线上线下资源,形成以数据驱动的O2O闭环运营模式。

  电信行业:利用大数据技术实现客户离网分析及服务需求,及时掌握客户离网倾向,满足客户多样需求,以改善服务手段,调整服务策略,出台挽留客户措施,提高行业竞争力。

  能源行业:在大数据技术的支持下,智能电网的发展已具规模,电力公司可以利用大数据技术分析、掌握海量用户的用电信息、用电模式及服务需求。从而合理设计电力需求响应系统,改进电网运行机制,方便用户购电,及时维护电网运行安全。

  体育娱乐:在体育方面可以基于大数据和科学的分析结果制定有针对性的训练计划,预测比赛结果,从而改变战略战术,赢得比赛的胜利。娱乐方面,在制作影视作品前,可以利用大数据分析观众当前的关注热点及关注题材,分析观众的兴趣走向,及时投拍适合观众要求题材的影视作品,并可以及时地分析观众对影视作品的反映与评价。

  制造业:利用大数据可以分析工艺流程,改进生产工艺,优化生产计划。

  安全领域:通过大数据分析构建国家安全保障体系,及时分析各种突发事件、收集社会舆情状况,及时调整应对策略,维护社会稳定与安宁,服务国家大政方针及社会发展需要。

  个人生活:利用个人大数据分析个人生活习惯及需求,及时为其提供个性化服务[7]。

  2.2、 Hadoop目前在应用方面存在的不足

  尽管Hadoop作为一个开源的大数据并行处理平台已被各行各业充分利用,但目前的Hadoop还不能完全解决大数据的所有问题,这与其自身的技术特点有较大的关系。

  1)在其设计中,Name Node可能就是发挥其性能的一个瓶颈,因为所有的Metadata操作都要通过它来进行,当访问数据过大时,就会给其带来巨大的压力,这种设计也使它成为系统中明显的单点故障源。在很大程度上制约了整个Hadoop的可扩展性和可靠性[8]。

  2)Hadoop不适用于低延迟数据访问,如实时系统。因为它是一个批处理系统,在执行任务时必须等到其计算结果出来后才能停止,对于低延迟的动态数据不能及时处理。

  3) Hadoop不能高效存储、处理大量小文件(比HDFS数据块默认的64 MB小得多的文件)。因为其在任务配置时花销很大,对于小数据在处理的过程中,会出现配置任务时间比运行计算的时间还长。

  而且,在HDFS中存储文件,每一个文件都会对应一个数据块,如果在其中存储大量的小文件,那么系统会消耗Name Node大量的内存来保存这些数据块信息。

  4)Hadoop不支持多用户写入并任意修改文件[9]。

  5)在基于虚拟技术的云计算平台中,利用HDFS架构进行数据存储,将带来数据可靠性的下降。因为,在同构环境的物理集群中,HDFS的默认数据块存储策略可以使所存数据的可靠性得到保障,但在去计算平台中,也许一个物理机器或机架中会同时存在多个虚拟机,如果把这些虚拟节点当作HDFS的物理节点存储数据,那么其可靠性将会大大降低[10]。

  3、 Hadoop问题研究及部分解决方案

  3.1、 对小文件存储问题的研究

  目前,较常用的小文件存储方案是将小文件合并为大文件存储,利用特定的索引信息对小文件在合并文件中的位置进行定位。但这种方法仍不能实现包含多维元信息的海量小文件在HDFS上的高效存储与处理。针对这个问题,目前有学者提出了一种多维列索引方案,利用三层存储结构实现HDFS下海量小文件的合并存储、自动管理和自由检索。

  第一层为小文件存储层,在HDFS上直接写入需上传的小文件,然后进行追加并将其合并到大文件中进行存储,以实现动态增加数据文件目标。

  第二层为文件元信息存储层,为了使检索、下载和查询小文件能够顺利进行,将所有的关于小文件的完整元信息和合并后其在数据文件中的位置信息统一进行序列化并写入HDFS。

  第三层为多维列索引层,为海量文件的元信息按列存储建立多维度索引,方便进行不同维度信息的高效查询[11]。这种方法在一定程度上可以解决HDFS中存储小文件时所遇到的问题。

  3.2、 云存储问题的研究

  针对Hadoop中同构环境的数据存储与云计算环境的异构存储不太适应从而导致数据可靠性下降的问题,国内外学者均进行了广泛深入的研究。

  为了提高数据存储的备份成功率,Zaharia等人利用对集群计算框架中异常任务的优化检测,实现在云端计算环境中存储数据高可靠性的目标。

  在进行虚拟环境中数据分配问题的理论分析后,Geng等人设计了一种文件块分配策略,可以较好地实现数据的负载平衡与冗余,使应用程序的执行能力大大加强。

  文献[10]提出了一种拓扑感知的启发式算法,建立最优数据放置问题,构造了抽象树结构的副本平衡分布树和细节树结构的副本相似度分布树,有效地降低了全局数据访问成本,减少了意外的远程数据访问,提高了Map Reduce在云数据中心的性能。

  国内学者在研究中也提出一种充分考虑云环境中虚拟机存储位置的数据块存储策略,避免了多个数据块副本存储在同一台物理机器上。实验结果证明,该方法均衡了数据块在物理节点中的存储,提高了系统的可靠性。为了避免虚拟机共存对数据可靠性的影响,可以充分利用虚拟节点在物理宿主机中的位置信息实现更好的数据块分配[10]。

  3.3、 HDFS随机访问的功能实现

  对HDFS不能满足特殊场景下数据随机写入的问题,国内学者作了深入的研究。从HDFS的数据读写流程出发,提出了一种面向HDFS的数据随机访问方法。通过直接访问Data Node本地文件系统的方式实现文件随机访问,避免了通过FUSE读取数据和以临时文件的方式写入数据。

  在高能物理数据处理应用场景中的测试表明,支持随机读写的HDFS数据访问机制可以取得较好的效果[12],对Hadoop在需要随机访问数据的应用场景中的使用与推广意义深远。

  4 、结语

  随着各项技术的成熟与发展,以及科研机构对Hadoop在各个领域中应用的深度研究,Hadoop会更加方便业界各种类型用户使用,尤其是那些中小企业,在提供高可靠性和高性能服务的同时,可为其节省了很大的人力物力方面的开支[13]。

  参考文献

  [1]林子雨大数据技术原理与应用[M].2版北京:人民邮电出版社, 2017.
  [2]佚名. MapReduce的数据处理机制[EB/OL].[2020-02-107].
  [3]孙丽常见大数据处理框架比较研究[J]电脑知识与技术, 2020,16(2):3-5.
  [4]佚名.HDFS-HDFS体系架构[EB/OL].[2019-02-08].
  [5]翟永东. Hadoop分布式文件系统( HDFS )可靠性的研究与优化[D].武汉:华中科技大学, 2011.
  [6]黑马程序员. Hadoop大数据技术原理与应用[M].北京:清华大学出版社,2019.
  [7]佚名.大数据技术和应用场景[EB/OL].[2019-02-19] .
  [8] HK大数据联合创始人. Hadoop有哪些优点和缺点? [EB/OL].[2020-07-081.
  [9]蔡静.Hadoop平台的研究及其改进[J].计算机光盘软件与应用,2014(5)-:146-147.
  [10]袁爱平,陶志勇,邓河,等.云计算环境中HDF S数据块存储策略研究[J]电脑知识与技术,2020,16(2)-:33-35.
  [11]肖玉泽HDFS下海量小文件高效存储与索引方法[J]小型微型计算机系统, 2015,36(10):2218-2223.
  [12]李强,孙震宇,孙功星.-种面向HDF S的数据随机访问方法[J].计算机工程与应用, 2017,53(10):1-7.
  [13]张丽媛. -种分布式文件系统: HDFS[J].电脑编程技巧与维护, 2016(21):11-13.

关联标签:
联系我们
  • 写作QQ:3008635931
  • 发表QQ:3008635930
  • 服务电话:13701839868
  • 售后电话:18930493766
  • 邮箱:shlunwen@163.com
网站地图 | 网站介绍 | 联系我们 | 服务承诺| 服务报价| 论文要求 | 期刊发表 | 服务流程

将微信二维码保存到相册

打开微信扫一扫从相册识别

1.点击下面按钮复制QQ号

3008546108

2.打开QQ→添加好友/群

粘贴QQ号,加我为好友