英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料
使用Cloudera Impala管理Mysql集群数据
Sahithi Tummalapallia , Venkata rao Machavarapub
a Department of C.S.E,VFSTR University,Guntur,Andhra Pradesh
b Department of C.S.E, Chirala Engineering College,Chirala,Andhra Pradesh
摘要
MySQL Cluster是一个广泛使用的集群数据库,用于存储和处理数据,该数据库具有MySql数据库管理系统的无共享集群,可提供高可用性和高吞吐量,且延迟低。 MySQL Cluster的问题在于,随着数据的增长,处理数据所需的时间会增加,并且可能需要额外的资源。使用Hadoop和Impala时,数据处理时间可能比MySql集群快,并且可能比Hive和Pig快。 本文提供了初步的结果。评估结果表明,与Hive,Pig和MySql相比,Impala在某些数据分析和处理任务方面也达到了可接受的性能。
关键词:Hadoop, Impala, Hive, Pig; MySql cluster; Big data, Metastore.
1.引言
Hadoop是一个框架,该框架使用简单的单个map-reduce接口及其自己的分布式文件系统为分布式计算提供开源库,从而促进了可伸缩性并注重检测和处理故障。Hadoop的组件可以为我们解决所有复杂性,并且通过使用简单的map reduce框架,我们能够利用分布式计算的功能,而不必担心诸如容错,数据丢失之类的复杂性。Hadoop可用于存储大数据和处理数据,例如数据挖掘、报告生成、文件分析、Web索引和生物信息学研究。
MySQL Cluster是一项为MySQL数据库管理系统提供无共享群集和自动分片的技术。MySQL Cluster没有单点故障,旨在提供高可用性,高吞吐量和低延迟,同时允许近乎线性的可扩展性。MySQL Cluster被实现为一个完全分布式的多主数据库,可确保任何应用程序或SQL节点进行的更新可立即用于访问该群集的所有其他节点,并且每个数据节点都可以接受写操作。MySQL Cluster具有自动分片功能,可在商用硬件上水平扩展,以处理通过SQL和NoSQL接口访问的读写密集型工作负载。它支持内存中和基于磁盘的数据,具有负载平衡功能的自动数据分区以及能够以零停机时间向运行中的群集添加节点的能力,从而使线性数据库可伸缩性地处理最不可预测的工作负载。它由多个节点组成,这些节点跨机器分布,以确保系统可以正常工作,即使某个节点出现网络故障等问题[1]。
Apache Hive和Apache Pig是用于以高级语言分析大型数据集的开源程序。Pig是高级数据流系统以及简单的查询代数,可让用户声明对文件或文件组的数据转换。Hive是数据仓库软件,可简化查询并管理分布式存储中的大数据集。 Hive允许用户使用自己的类型和功能扩展系统。 它的查询语言与SQL非常相似,因此任何熟悉SQL的人都可以轻松理解。Hive和Pig在Hadoop之上运行。[2] [3]
Cloudera Impala是Apache许可的用于存储在HDFS中的数据的实时查询引擎。Impala非常适合需要实时查询和速度的用例。尽管许多开发人员会很熟悉Hive和Pig,但Impala会使用自己的分布在整个集群中实时进行查询的守护程序。此外,Impala不利用MapReduce,同时允许Impala实时返回结果。[4]
在MySQL群集上查询大型数据集时,可能需要几秒钟的时间。随着数据变大,处理数据所需的时间也增加。使用Hive和Pig的Hadoop进行处理查询可以比MySql集群更快。但是因为Cloudera Impala的Hadoop在集群中分布有自己的守护程序可以进行查询,所以它的处理查询最快。
本论文介绍了在简单的数据模型上Impala,Hive,Pig和MySQL Cluster在数据增长时的处理时间。 第三部分讨论了一种建议的方法,第四部分展示了结果和说明。 最后一部分,即第五部分阐释结论。
2.Impala
Impala是业界第一个针对Apache Hadoop的本地实时SQL查询引擎,它是CDH的最新组件。Impala完全改变了组织可以从Hadoop中受益的方式。 Cloudera Impala是Cloudera的开源大规模并行处理(MPP)SQL查询引擎,用于存储运行Apache Hadoop的计算机集群中的数据。使用Impala,数据管道的数据处理工作负载加速将持续几秒钟而不是几分钟或几小时,以满足更严格的服务级别协议(SLA)规范。它具有使用流行工具的交互式商业智能。这为组织中的每个分析师提供了对大数据的实时访问,而无需进行任何特殊培训,从而大大降低了大数据项目的采用风险,并加快了投资回报(ROI)。它降低了数据管理的总体成本,Cloudera客户无需将大量数据复制到关系数据库以获取交互式SQL性能,而无需增加成本或复杂性即可获得相同的体验。即快速响应查询,这也意味着要impala擅长hive不擅长的快速响应查询,同时擅长hive擅长的所有功能。
Impala将可扩展的并行数据库技术引入Hadoop,使用户能够对存储在HDFS和Apache HBase中的数据发出低延迟的SQL查询,而无需进行数据移动或转换。 Impala与Hadoop集成在一起,以使用MapReduce、Apache Hive、Apache Pig和其他Hadoop软件所使用的相同文件和数据格式、元数据、安全性和资源管理框架。分析师和数据科学家通过SQL或商业智能工具使用Impala对存储在Hadoop中的数据进行分析。结果是,可以使用相同的数据和元数据在同一系统上进行大规模数据处理和交互式查询,从而无需将数据集迁移到专用系统或专有格式中即可进行分析。
在使用Impala之前,如果你的关系数据库已达到极限,那么你可能别无选择,只能扩展该系统以保持对性能的期望。如果你使用Hadoop负担得起分析任何数量或种类的数据,但要获得交互式性能,就必须将这些数据移至快速的关系数据库中。然后,你必须接受重复存储和数据同步的成本和精力;接受要求固定模式的严格性;当你移动和转换数据时,接受你将会不可避免地丢失一些东西; 接受你的分析选项将在该目标数据库中受到限制。有了Impala,你现在多了个选择。作为Hadoop生态系统的本机组件,Impala将其他Hadoop框架的所有优点(包括灵活性,可伸缩性和成本效益)与企业级分析数据库所需的性能,可用性和SQL功能结合在一起。Impala专门用于与标准商业智能环境集成,因此支持大多数相关的行业标准:客户端可以通过ODBC或JDBC进行连接;身份验证通过Kerberos或LDAP完成;授权遵循标准的SQL角色和特权。为了查询驻留在HDFS上的数据,用户通过熟悉的CREATE TABLE语句创建表,该表除了提供数据的逻辑模式外,还指示物理布局,例如文件格式以及在HDFS目录结构中的位置,然后可以使用标准SQL语法查询这些表。
将IMPALA与HIVE结合使用:Impala利用了Hadoop生态系统中许多熟悉的组件。Impala可以将数据与其他Hadoop组件(同时作为使用者和生产者)互换,因此可以灵活地将其放入ETL和ELT管道中。
Impala的主要目标是使SQL-on-Hadoop操作足够快速高效,以吸引新的用户类别,并为Hadoop开放新的用例类型。 在可行的情况下,它利用许多Hadoop用户已经拥有的现有Apache Hive基础结构来执行长时间运行的,面向批处理的SQL查询。尤其是,Impala将其表定义保存在称为元存储的传统MySQL或者PostgreSQL数据库中,而Hive保留了这种类型的数据库。因此,Impala可以访问Hive定义或加载的表,只要所有列都使用Impala支持的数据类型,文件格式和压缩编解码器即可,如图1所示。最初侧重于查询功能和性能说明着Impala与INSERT语句相比,可以使用SELECT语句读取更多类型的数据。要使用Avro,RCFile或者SequenceFile文件格式查询数据,要使用Hive加载数据。
Impala查询优化器还可以使用表和列的统计信息。最初,是使用Hive中的ANALYZE TABLE语句收集此信息的。在Impala及更高版本中,反而改为使用Impala COMPUTE STATS语句。COMPUTE STATS所需的设置更少,更快更可靠,并且不需要在impala-shell和Hive shell之间来回切换。
3.拟定系统
在本论文中,我们有三个具有相同数据模型的数据集。第一个标记为D1的数据集存储有1年的航空公司数据,接下来的两个标记为D2、D3的数据集分别包含2年和3年的航空公司数据。 一年的航空公司数据有大约70-800,000万行数据记录。
有不同的性能因素将决定结果,即:
1.数据设置文件大小;2.query语句;3.数据复制系数;4.HDFS块大小;5.查询平均时间;
A.Hadoop Environment
在Hadoop环境中,如图2所示,有一个hadoop名称节点、四个hadoop数据节点、一个Sqoop、一个Hive、一个Pig和一个Impala。Sqoop有助于从MYSQL Server获取数据并将其直接导入到Hadoop分布式文件系统(HDFS)中,将Sqoop设计成用于在hadoop和关系数据库(例如MYSQL)之间高效地传输批量数据。HDFS配置中的数据复制因子设置为3。
B.MySQL Cluster环境
MySQL群集具有一个管理节点、四个数据节点和一个MySQL服务器作为应用程序节点,如图3所示,每个节点都部署一台计算机。MySQL群集中的复制因子设置为2,即它将创建两个节点组。该图说明了一个MySQL群集,该群集具有四个数据节点,并以两个节点组的形式排列,每个节点组包含两个节点。节点1和2属于节点组0,节点3和4属于节点组1。请注意,此处仅显示数据(ndbd)节点; 尽管工作群集需要一个ndb_mgm进程来进行群集管理,并且至少有一个SQL节点才能访问该群集存储的数据。因为使MySQl群集防止出现单点故障的最低要求,所以副本数设置为2[5]。
C.数据集
数据测试人员使用以下ASA部分中的数据集:统计计算统计图形数据博览会09 [11]。该数据最初来自RITA,并进行了详细描述。这些文件已删除了可导出变量,并被包装在年度块中,与原始文件相比,压缩文件的压缩程度更高。每个文件使用23个属性描述一年的航空公司数据,并包含大约75-800万行数据记录。
D.查询语句
在MySQL上以及Hadoop上的Hive、Pig和Impala执行十个查询,为了获取平均执行时间每个查询运行三次。已执行的查询语句列表如表I所示。
4.实验结果
实验是在Oracle VM VirtualBox上完成的。每个系统都在具有2个处理器核心和4GB RAM的Red Hat操作系统上运行。
A.MYSQL Cluster结果
表I中列出的查询是在数据集D1、D2、D3的MySQL Cluster上运行的,结果如表II所示,MySQL Cluster处理的平均结果如图4所示。
随着数据的增大,MySQL Cluster中的查询处理时间分别增加。MySQLCluster是分布式的且共享的数据,该数据具有一组计算机,每个计算机运行一个或多个进程,并且这些节点都通过网络连接。但是,这会产生成本。 在MySQL服务器之间访问数据时的网络访问和分布在数据节点上的表。要执行查询,必须从所有数据节点检索数据,这可能会导致延迟[6]。由于顺序访问存储引擎而导致查询性能问题,并且如果将NULL用作键的一部分,则使用USING HASH创建的唯一哈希索引不能用于访问表。
B. Hive Result
下面的结果是对数据集D1、D2和D3的Hive查询,如表III所示,平均结果如图5所示,在Hadoop上的Hive使数据处理变得直接且可扩展。Hive是用于对大型数据集执行查询的强大工具,精心设计的表和查询可以大大提高查询速度并降低处理成本。
Hive数据以Sqoop导入的格式存储在HDFS的CSV纯文本文件中。Hive使用索引机制来更快地读取文件。如果查询具有任何聚合,联接或排序功能,Hive将立即启动Map Reduce作业[7]。Hadoop可以并行执行MapReduce作业,并且在Hive上执行的多个查询会自动使用此并行性。但是,单个复杂的Hive查询通常会转换为默认情况下顺序执行的许多MapReduce作业。尽管某些查询的Map- Reduce阶段不是相互依赖的,但可以并行执行。然后,他们可以利用群集上的备用容量并提高群集利用率,同时减少总体查询执行时间。
C. Pig Result
以下结果是对D1,D2和D3数据集的Pig查询,如表IV所示,平均结果如图6所示。Pig是用于查询大型半结构化数据集的高级过程语言,因此Pig无法与这些高度结构化的数据集配合使用。Pig执行程序员定义的分步方法,但不适用于查询由于采用逐步方法,Pig花费了更多的时间来处理这些数据集[8]。
<p
剩余内容已隐藏,支付完成后下载完整资料</p
资料编号:[236355],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。