Hadoop综述
2018-05-28李元亨邹学玉
李元亨 邹学玉
摘要:新数据源的出现,如非结构化数据,导致许多组织推论,单一的数据仓库方案现在无法处理日益增长的分析工作量。如今的数据量在复杂性、多样性、体积和速度上都在迅速增长。作为大型数据分析的平台,Hadoop现在已经成为数据仓库环境的一个必要的条件,它在其中起到重要的作用。这样,企业将能够快速理解数据并探讨数据的价值,让分析师更快的询问和解决他们的业务问题。为了允许面向批处理的分布式数据处理,Hadoop很容易融入同化过程。但是,它建立在基本原理上,严重限制了它作为分析数据库的能力。
关键词:非结构化数据;Hadoop;分布式
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)09-0008-02
1 引言
全球的每一个行业都必须面对同样的挑战,即他们的数据增长速度比目前的数据仓库要快得多,他们必须快速获取并分析这些数据。意外的点击流数据和事务量转移到在线通道。他们驱动数据仓库的成本、分析、处理和ELT(提取、转换和加载)。
大多数的企业现在要分析像社交媒体数据,多结构化数据和非建模数据等这些非常复杂和高价值的数据类型以获得的新的信息。但是主要的问题是这些数据类型并不适合于为数据仓库的结构化数据设计的现有并行处理模型[ 1 ]。扩大传统数据仓库技术的价格是非常昂贵的,最终会变得不受欢迎。但是,如果成本比较合理,而性能就不得不适应当前的速度、数据的多样性和增长量。目前需要两种主要方式,即成本效益和可伸缩性。只有Hadoop满足这两个需求。
Hadoop是一个完整的开源生态系统,用于处理不同的数据源,可视化、分析、共享、搜索、排序和组织[2]。这种架构提供了几乎无限的可伸缩性和可用性。 这种框架通常提供上千台服务器,每个服务器都能够进行计算和本地存储。Hadoop具有并行分析和存储大数据集的能力。所有这一切都是在大量的计算机上进行的,这些计算机产生了非凡的性能。同时使用商品硬件可以带来显著的低成本。Hadoop集群的价格往往每TB比数据仓库系统低50到100倍。随着Hadoop性能的提高和价格比率的降低,毫无疑问,Hadoop正在改变数据仓库的形式。
1.1 Hadoop的背景
1)一个开源项目的课题Hadoop,来源于Dough Cutting在2006年将谷歌MapReduce编程框架应用于分布式系统。它主要由两个部分组成,第一是MapReduce(一种编程和作业管理框架)和Hadoop分布式文件系统(HDFS)。这一切都是因为Hadoop为分布式处理提供了一个可执行的框架。许多开源项目正在迅速涌现,它们正利用Hadoop来解决许多具体问题[ 3 ]。
2)Hadoop包括Zookeeper, Impala, Chukwa, Avro, Pig, Ambari, YARN, Cassandra, Mahout, Hbase, Hive ,MapReduce和Hadoop分布式文件系统(HDFS)。但需要注意的是,MapReduce可以不需要HDFS,可以运行在关系型数据库管理系统DBMS [ 4 ]。通用执行引擎处理大量的手工代码逻辑和包括分析在内的许多其他应用程序的并行编程的复杂性[5]。这个开源框架具有处理大量数据的能力,分别提供了计算能力和分布式存储。Hadoop两个最主要的两个功能是:
3)分布式存储:它有一个分布式文件系统HDFS提供存储能力。
4)计算:使用了一个称为MapReduce的重要框架。
分布式计算的几个主要特性证明Hadoop是非常合理和独特的:
1)可访问性:Hadoop的工作是在云计算服务上完成的,因此可以在不同的节点上访问数据。
2)健壮性:Hadoop的设计是在机器上运行的,数据会在不同的机器上做备份,当一台机器发生故障时,存有备份的机器会繼续工作[ 6 ]。
3)可伸缩性:通过向集群添加更多节点,Hadoop对处理数据的线性度更高。
4)简单:它允许用户立即编写有效的并行代。,Hadoop的简单性和可访问性运行使运行和重写大规模的分布式程序变得可能。
1.2 新的数据仓库形式中Hadoop的作用
1)数据分级:Hadoop在数据仓库中的作用正在迅速增加。在加载数据,转换数据和提取数据方面,Hadoop经常被用来离线数据仓库中的转换和处理。而ELT必需要在数据仓库中加载数据实现大规模和复杂的转换,因此它可以代替ELT,即抽取、加载和转换。而对于Hadoop,数据可以被提取并加载到Hadoop集群中,在该集群中可以轻松地实时转换数据,并将加载的结果放入数据仓库中以供将来分析。在所有的精灵,英语教学过程是一个利用并行查询处理位于数据仓库平台的方法。
2)数据归档:在“前端”,Hadoop可以发挥重要作用。它在执行转换处理过程中起着重要作用。在“后端”,它把数据从数据仓库迁移到集群中。在兆字节的速率的虚拟扩展的帮助下,它比传统的数据仓库快50倍。Hadoop还具有良好的数据归档功能,因为Hadoop可以对归档数据进行分析。Hadoop对数据仓库未来分析的特定结果集也是必需的[ 2 ]。一般来说,在归档数据时,企业有三种选择。一是留在关系数据库中,二是把它移到磁带上,或者被删除。Hadoop的可扩展性和低成本功能,使用户可以在一个易于管理的在线环境中永久保存所有数据。
3)模式灵活性:对于稳定的半结构化数据(JSON和XML)和高度结构化的数据(CRM和ERP),关系型数据库管理系统DBMS可以良好的支持。而Hadoop可以轻松快速地摄取任何类型的数据格式,包括无模式数据(图像、视频和音频)和不断变化的模式的数据(如在网站上的B/B和多变量测试)。
4)处理灵活性:Hadoop的NoSQL数据库是使非传统的数据类型的操作更自然的框架。它也可以支持处理有价值的程序用例,如差距识别和时间序列分析。Hadoop还支持许多编程语言,它比SQL具有更多的能力。随着Hadoop的不断发展,Hadoop也使“后期绑定”的部分不断增加,除了将数据转化为它所摄取的数据之外,也可以应用于运行时[ 4 ]。
2 Hadoop和RDBMS的区别
SQL(结构化查询语言)是针对结构化数据的,但是大多数Hadoop的初始应用程序是用来处理非结构化数据的。Hadoop与SQL数据库的详细比较如下:
1)扩展规模而不是非扩展规模:组织关系数据库的扩展是昂贵的,因为为了维护一个更大的数据库,你需要更大的系统。Hadoop被认为在一系列硬件上运行的扩展架构,添加更多资源意味着向集群中添加更多的机器。标准的情况是一个有十到几百台机器的集群。
2)键/值对数据库设计而不是关系表:在RDBMS中,数据存储在具有由模式定义的关系结构的表中。Hadoop使用键/值对作为基本数据单元,它可以更适用于非结构化数据类型。在Hadoop中,数据可以是任何形式的,但它最终转换成(键/值)对使处理函数可以工作[ 6 ]。
3)函数式编程(MapReduce)代替声明式查询(SQL):SQL有查询语句,而在MapReduce脚本和代码下。MapReduce允许以更一般的方式处理数据,而不是SQL查询。例如,Hadoop可以从中构建复杂的统计模型,数据或重新格式化的图像数据。而SQL不能处理这样的任务。
4)脱机批量处理而不是在线事务:Hadoop是专为离线处理和分析大规模数据而设计的。它不执行随机读取和写入几个记录,这是联机事务处理中的负载类型。Hadoop最好用作一次写入,多次读取数据存儲类型。这样,它类似于SQL中的数据仓库设计[ 7 ]。
3 Hadoop平台的优点和缺点
下面是Hadoop应用比较普遍的领域列表:
1)Hadoop提供分布式存储和计算功能[ 8 ]。
2)Hadoop是一个高度可扩展的存储平台,它通过数百个并行运行的服务器存储和分配非常大的数据集。而(RDBMS)不具有扩展能力处理大量数据[9]。
3)高性能计算(HPC)系统允许程序在大型计算机上运行,但它们通常需要强大的编程配置,数据需要存储在单独的存储区域网络系统中。由于程序执行对节点故障敏感性,对HPC集群上的调度程序需要仔细的管理,因此管理Hadoop集群要容易得多[ 10 ]。
4)HDFS采用大尺寸的处理单元,具有很强的扩展性。它最适合处理大文件(字节,字节…)。
5)可扩展性和可用性是HDFS的重要特征,可以帮助实现数据复制和容错系统。
6)HDFS可以复制指定的次数的文件(默认是3个),它可以容忍硬件和软件故障,并能自动恢复没有节点的数据块[ 11 ]。
7)Hadoop使用MapReduce,一个面向批处理的分布式计算框架,允许并行处理大数据。
8)在MapReduce中,开发人员只用专注于处理业务需求,而不用去考虑复杂的分布式系统。
9)为了更快地执行作业,MapReduce将作业分割为map和reduce任务,并将它们调度到集群的从节点进行远程执行[ 7 ]。
以下是Hadoop框架中常见的缺点:
1)Hadoop使用HDFS和MapReduce,虽然服务器模型具有高可用性,但这些主节点有单点故障[ 12 ]。
2)安全性也是主要关注的问题之一,因为Hadoop确实提供了一个安全模型,但默认情况下,由于其高度复杂性而被禁用。一旦对Hadoop集群进行验证,用户就拥有该集群中的所有数据[ 13 ]。
3)Hadoop不提供存储加密和网络级加密,政府部门对这方面很是关注[ 14 ]。
4)HDFS是无效的处理小文件。它缺乏作为HDFS的透明压缩不计划与随机读取小文件的工作由于其长期的吞吐量优化。
5)MapReduce是一种无共享的体系结构,因此需要全局同步或共享可变数据的任务不适合这种结构,对一些算法也具有一些挑战[ 7 ]。
6)备份也是困难的。Hadoop是容错的,但是企业仍然需要一个恢复方案,或者回到某个时间点上来备份一些人为错误会导致的损坏的数据。
7)Hadoop不支持实时查询。虽然它已经创建了一套新的基于SQL的语言和缓存层,但Hadoop仍然不适合实时计算[ 8 ]。
这些问题都没有影响Hadoop,但不承认这些限制可能会导致一些Hadoop可能不能完成一些事情。
4 结论
大数据种类多、数量大且更新速度快,单一的平台很难满足企业对大数据的要求。Hadoop并没有取代关系数据库,但它具有更好的价格/性能比将使企业降低成本,同时维护其现有的应用程序和基础设施。或者通过将现有技术与Hadoop的并行处理能力结合起来,用于结构化数据和非结构化数据,具体取决于用户的需求。 那些目前仍不愿意投资的人,可以考虑云的形式,Hadoop现在可以作为“按需”服务。因此,如果想成立一个企业,就准备成为新的多平台数据仓库范型的支持者,并将Hadoop作为一个潜在的强大的企业数据管理中心。
参考文献:
[1] Rizzi S, Trujillo J. Research in data warehouse modeling and design:dead or alive[C],DBLP, 2006:3-10.
[2] 陈吉荣,乐嘉锦.基于Hadoop生态系统的大数据解决方案综述[J].计算机工程与科学,2013,35(10):25-35.
[3] ParAccel.Hadoop's Limitation for Big Data Analytics [J].2012.
[4] P. Russom.Where Hadoop Fits in Your Data Warehouse Architecture, TDWI, 2013.
[5] P. Russom, Integrating Hadoop into Business Intelligence and Data Warehousing [J].2013.
[6] C. Lam, Hadoop in Action, Manning, 2010: 7-8.
[7] Hadoop Introduction, Guruzon, 2014. [Online]. Available:http://guruzon.com/6/introduction/hadoop/what-is-hadoop-apache-cluster-bigdata-use-limitation. [Accessed February 2014]
[8] 許丞,刘洪,谭良.Hadoop云平台的一种新的任务调度和监控机制[J].计算机科学,2013,40(01):112-117.
[9] 崔杰,李陶深,兰红星.基于Hadoop的海量数据存储平台设计与开发[J].计算机研究与发展,2012,49(S1):12-18
[10] Apache Hadoop. http://apache.Hadoop.org.
[11] Hadoop advantanges and disadvantages, java J2EE Tutorials, [Online]. Available: http://www.j2eebrain.com/java-J2ee-hadoop-advantages-and-disadvantages.html.Accessed February 2014.
[12] 周丹.基于paxos算法的Hadoop分布式文件系统高可用性探究[J].电子测试,2014(S1):24-26.
[13] Jason C. Cohen,Dr. Subrata Acharya, Incorporating Hardware Trust Mechanism in Apache Hadoop C].IEEE , 2012:12.
[14] Lin H Y, Shen S T, Tzeng W G, et al. Toward Data Confidentiality via Integrating Hybrid Encryption Schemes and Hadoop Distributed File System[C].IEEE, International Conference on Advanced Information NETWORKING and Applications. IEEE, 2012:740-747.