英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料
使用Cloudera Impala管理MySQL集群数据
摘要:MySQL集群是一种广泛使用的群集数据库,用于存储和处理具有无共享集群的数据,为MySQL数据库管理系统提供高可用性和高吞吐量和低延迟。MySQL集群的问题是当数据规模的增长,处理数据需要的时间增加和可能需要额外的资源。用Hadoop和Impala,数据处理时间可以比MySQL集群更快,可能比Hive和Pig快。本文提供了初步的结果。评估结果表明,Impala相比于Hive,Pig和MySQL集群在一些数据的分析和处理的任务上甚至取得令人更满意的表现。
关键词:Hadoop,Impala,Hive,Pig;MySQL集群;大数据;元存储。
1.介绍
Hadoop是一个框架,它为使用简单单一的MapReduce接口的分布式计算和它自己的分布式文件系统提供开源库。它有利于可扩展性和照顾检测和处理故障。Hadoop的组件为我们照顾所有的复杂性,通过使用一个简单的MapReduce框架我们能够利用分布式计算的能力而不必担心复杂如容错,数据丢失。Hadoop可以用来存储大量的数据和处理数据,例如数据挖掘、报表生成、文件分析、网页索引,和生物信息学研究。
MySQL集群是一种技术,为MySQL数据库管理提系统提供了无共享集群和自动分片。MySQL集群没有单点故障。它的目的是提供高可用性和高吞吐量和低延迟,同时允许接近线性伸缩性。MySQL集群是一个完全分布式的多主数据库确保任何应用程序或SQL节点进行的更新立即可用于所有其他节点访问群集的实现,且每个数据节点可以接受写操作。MySQL集群的规模水平与自动切分为读写密集型工作负载的商品硬件,通过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集群。第3节讨论了一个建议的方法。第4节显示结果和解释。最后一节,第5节提供了一个结论。
2.Impala
Impala是业界第一个本地实时对Apache Hadoop的SQL查询引擎,它是CDH的最新组件。Impala完全改变组织的方式可以受益于Hadoop,Cloudera Impala是Cloudera的开源大规模并行处理(MPP)的SQL查询引擎对存储在计算机集群上的数据运行Apache Hadoop。使用Impala、数据处理工作量加速,数据管道将持续几秒而不是几分钟或几小时,以满足更严格的服务水平协议(SLA)的规格。它有一个互动的商业智能带有流行的工具。这就为组织中的每一位分析师打开了对大数据的实时访问,而不需要任何特别的培训,大大降低了大数据项目的使用风险,加快了投资回报率(ROI)。它降低了数据管理的总体成本,而不是复制大量的数据到一个关系数据库去得到SQL性能,Cloudera的客户可以获得相同的经验无需增加成本和复杂性。 Impala公认的在Hive不擅长的i.e快速响应查询这方面做的很好,而且在Hive擅长的方面同样也擅长。
Impala为 Hadoop带来了可扩展的并行数据库技术,使得用户能使用低延迟的SQL查询存储在HDFS和Apache HBase上无需移动或转换的数据。Impala是结合Hadoop使用相同的文件和数据格式、元数据、安全和被MapReduce,Apache Hive,Apache Pig和其他Hadoop软件使用的资源管理框架。Impala是由分析师和数据科学家通过对存储在SQL或商业智能工具Hadoop的数据进行分析。其结果是,大规模的数据处理和交互式查询可以在同一系统上使用相同的数据和元数据完成,不需要迁移数据集到专门的数据系统和/或专有格式上进行简单分析。
在Impala之前,如果你的关系数据库处在全部开工状态,你可能不得不扩展系统以保持你的期望性能。如果你是使用Hadoop来经济的分析任何数量或类型的数据,但是想要交互性能,你必须移动数据到一个快速的数据库。然后你不得不接受花费成本和重复存储和数据同步的努力;接受的刚性要求的固定模式;接受当你移动和转换数据不可避免地你会留下些什么;接受你的分析选项将在目标数据库有所限制。在Impala中你现在有一个选择。作为Hadoop生态系统的天然成分,Impala结合所有其他Hadoop框架的好处包括灵活性、可扩展性、和成本效益,提供性能、可用性、和SQL功能的企业级分析数据库的必要性。Impala是专门针对标准的商业智能环境的整合,并为此提供最相关的行业标准:客户可以通过ODBC或JDBC连接;身份认证用Kerberos或LDAP完成;授权随着标准SQL的角色和权限。为了查询HDFS居民的数据,用户通过熟悉的创建表语句创建表,其中,除了提供数据的逻辑模式外,还表示物理布局,如文件格式以及在HDFS目录结构布局。这些表可以查询使用标准的SQL语法。
Impala与Hive的工作:Impala利用Hadoop的生态系统中的许多熟悉的成分。Impala可以与其他Hadoop组件的数据交换,同为消费者和生产者,所以它能够适应灵活的方式进入你的ETL和ELT管道。
一个大体的Impala目标是使SQL-on-Hadoop操作快速高效足以吸引新的类别的用户和开发Hadoop新类型的使用案例。在可行的情况下,它利用现有的Apache Hive基础设施,许多Hadoop的用户已经在适当的执行长时间运行的、面向批处理SQL查询。特别是,Impala保持其表定义在一个传统的MySQL或PostgreSQL数据库称为元数据,相同的数据库在Hive保持这种类型的数据。因此,Impala可以访问定义或加载的Hive表,只要所有的列使用Impala支持的数据类型、文件格式、压缩编解码器,如图1中展示的。最初专注于查询功能和性能意味着Impala可以有更多读SELECT语句种类的数据相比写INSERT语句种类的数据。查询数据使用Avro,RCFile,或通过文件格式,你加载数据使用的Hive。
Impala的查询优化器也可以使用表统计和列统计。起初,你收集Hive的ANALYZE语句的信息;在Impala和更高,使用Impala 的COMPUTE STATS语句替代。 COMPUTE STATS需要更少的设置,更可靠,速度更快,而且不需要在impala-shell和Hive shell之间来回切换。
图1 Impala与Hive的关系
3.提出的系统
在本文中,我们有三个相同数据模型的数据集。第一个数据集标记为D1有一年航空公司数据存储在其中,然后接下来两个数据标记为D2、D3含2和3年各航空公司数据。每年航空公司数据有大约70-80万行的数据记录。不同的性能的因素将决定结果,即:1.数据集文件大小;2.查询报表;3.数据复制因子;4.HDFS块大小;5.查询平均时间;
- Hadoop环境
在Hadoop的环境中,有一个Hadoop名字节点、四个Hadoop数据节点,一个Sqoop,一个Hive,一个Pig和一个Impala如图2。Sqoop有助于从MySQL服务器获得数据和直接插入到Hadoop分布式文件系统(HDFS)。Sqoop是专为在Hadoop和关系数据库如MySQL数据复制因子在HDFS配置设置为3之间高效传输批量数据。
图2 Hadoop环境
- MySQL集群环境
MySQL集群有一个管理节点、四个数据节点和一个MySQL服务器作为应用节点如图3。每个节点部署一台机器。在MySQL集群的复制因子设置为2,即这将创建两个节点组。该图显示一个MySQL集群带有四个数据节点,安排在两个节点的两个节点组;节点1和2属于节点组0,节点3和4属于节点组1。注意只有数据(ndbd)节点展示在这;虽然一个工作集群需要一个ndb_mgm过程去集群管理和至少一个SQL节点访问由集群存储的数据。副本数设置为2,因为这是MySQL集群防止单点故障的最小要求[5]。
图3 MySQL集群环境
- 数据集
数据测试仪使用一个数据集来自ASA部分:统计计算统计图形数据09世博会 [11]。数据来源于RITA并每一个细节都被描述。这些文件都可剔除变量,封装在每年的块并且已经比原来的压缩更多。每个文件描述了一年的航空数据使用23种属性和包含约75-80万行数据记录。
- 查询语句
有十个查询执行在MySQL和Hive,Pig和Impala 在Hadoop上。每个查询运行三次得到平均响应时间。所执行的查询语句的列表显示在表1。
表1 查询语句
查询 |
描述 |
Q1 |
每年按月报告平均到达延误 |
Q2 |
每月平均航班取消 |
Q3 |
报告状态明晰的平均到达延迟 |
Q4 |
报告每年最大到达延迟 |
Q5 |
发现经常延误的机场 |
Q6 |
发现那些起点和目的地结合有更多的延迟 |
Q7 |
列出今年前十延误 |
Q8 |
查找每个机场的平均CRS通过时间 |
Q9 |
查找频繁到达延误的航班号 |
Q10 |
找到有更多到达延迟的距离范围 |
4.实验结果
实验是在Oracle VM VirtualBox上做的。每个系统运行在拥有2个处理器核心和4GB RAM的红帽操作系统上。
A . MySQL集群的结果
列在表1上的查询运行在MySQL集群在数据集D1,D2,D3中的结果展示在表2并且MySQL集群处理的平均结果如图4所示。
表2 D1,D2和D3在MySQL集群上使用的查询时间
数据集D1 |
数据集D2 |
||||||||
D1 |
测试1 |
测试2 |
测试3 |
均值 |
D2 |
测试1 |
测试2 |
测试3 |
均值 |
Q1 |
23.84 |
19.02 |
16.59 |
19.81 |
Q1 |
46.66 |
42.30 |
34.35 |
41.10 |
Q2 |
4.86 |
5.87 |
6.76 |
5.83 |
Q2 |
29.58 |
29.12 |
31.96 |
30.22 |
Q3 |
23.27 |
19.06 |
<p 剩余内容已隐藏,支付完成后下载完整资料
资料编号:[25074],资料为PDF文档或Word文档,PDF文档可免费转换为Word </p |
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。