`
smartzhengyijun
  • 浏览: 3966 次
社区版块
存档分类
最新评论

大数据

阅读更多

摘要:大数据处理是云计算中非常重要的领域,自Google公司提出MapReduce分布式处理框架以来,以Hadoop为代表的开源软件受到越来越多公司的重视和青睐。本文将讲述Hadoop系统中的一个新成员:Impala。

Impala架构分析

Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。那么Impala如何实现大数据的快速查询呢?在回答这个问题前,需要先介绍Google的Dremel系统,因为Impala最开始是参照 Dremel系统进行设计的。

Dremel是Google的交互式数据分析系统,它构建于Google的GFS(Google File System)等系统之上,支撑了Google的数据分析服务BigQuery等诸多服务。Dremel的技术亮点主要有两个:一是实现了嵌套型数据的列存储;二是使用了多层查询树,使得任务可以在数千个节点上并行执行和聚合结果。列存储在关系型数据库中并不陌生,它可以减少查询时处理的数据量,有效提升 查询效率。Dremel的列存储的不同之处在于它针对的并不是传统的关系数据,而是嵌套结构的数据。Dremel可以将一条条的嵌套结构的记录转换成列存储形式,查询时根据查询条件读取需要的列,然后进行条件过滤,输出时再将列组装成嵌套结构的记录输出,记录的正向和反向转换都通过高效的状态机实现。另 外,Dremel的多层查询树则借鉴了分布式搜索引擎的设计,查询树的根节点负责接收查询,并将查询分发到下一层节点,底层节点负责具体的数据读取和查询执行,然后将结果返回上层节点。关于Dremel技术实现上的更多信息,可以参阅【注:Google Dremel原理:如何能3秒分析1PB,网址为http://www.yankay.com/google-dremel-rationale/】。



图1 Impala系统架构图

Impala其实就是Hadoop的Dremel,Impala使用的列存储格式是Parquet。Parquet实现了Dremel中的列存储,未来还将支持 Hive并添加字典编码、游程编码等功能。Impala的系统架构如图1所示。Impala使用了Hive的SQL接口(包括SELECT、 INSERT、Join等操作),但目前只实现了Hive的SQL语义的子集(例如尚未对UDF提供支持),表的元数据信息存储在Hive的 Metastore中。StateStore是Impala的一个子服务,用来监控集群中各个节点的健康状况,提供节点注册、错误检测等功能。 Impala在每个节点运行了一个后台服务Impalad,Impalad用来响应外部请求,并完成实际的查询处理。Impalad主要包含Query Planner、Query Coordinator和Query Exec Engine三个模块。QueryPalnner接收来自SQL APP和ODBC的查询,然后将查询转换为许多子查询,Query Coordinator将这些子查询分发到各个节点上,由各个节点上的Query Exec Engine负责子查询的执行,最后返回子查询的结果,这些中间结果经过聚集之后最终返回给用户。

在Cloudera的测试中,Impala的查询效率比Hive有数量级的提升。从技术角度上来看,Impala之所以能有好的性能,主要有以下几方面的原因。

    Impala不需要把中间结果写入磁盘,省掉了大量的I/O开销。
    省掉了MapReduce作业启动的开销。MapReduce启动task的速度很慢(默认每个心跳间隔是3秒钟),Impala直接通过相应的服务进程来进行作业调度,速度快了很多。
    Impala完全抛弃了MapReduce这个不太适合做SQL查询的范式,而是像Dremel一样借鉴了MPP并行数据库的思想另起炉灶,因此可做更多的查询优化,从而省掉不必要的shuffle、sort等开销。
    通过使用LLVM来统一编译运行时代码,避免了为支持通用编译而带来的不必要开销。
    用C++实现,做了很多有针对性的硬件优化,例如使用SSE指令。
    使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。

虽然Impala是参照Dremel来实现的,但它也有一些自己的特色,例如Impala不仅支持Parquet格式,同时也可以直接处理文本、 SequenceFile等Hadoop中常用的文件格式。另外一个更关键的地方在于,Impala是开源的,再加上Cloudera在Hadoop领域 的领导地位,其生态圈有很大可能会在将来快速成长。

可以预见,在不久的未来,Impala很可能像之前的Hadoop和Hive一样在大数 据处理领域大展拳脚。Cloudera自己也说期待未来Impala能完全取代Hive。当然,用户从Hive上迁移到Impala上来是需要时间的,而 且Impala也只是刚刚发布1.0版,虽然号称已经可以稳定地在生产环境上运行,但相信仍然有很多可改进的空间。需要说明的是,Impala并不是用来取代已有的MapReduce系统,而是作为MapReduce的一个强力补充。总的来说,Impala适合用来处理输出数据适中或比较小的查询,而对于 大数据量的批处理任务,MapReduce依然是更好的选择。另外一个消息是,Cloudera里负责Impala的架构师Marcel Komacker就曾在Google负责过F1系统的查询引擎开发,可见Google确实为大数据的流行出钱出力。

Impala与Shark、Drill等的比较

开源组织Apache也发起了名为Drill的项目来实现Hadoop上的Dremel,目前该项目正在开发中,相关的文档和代码还不多,暂时还未对 Impala构成足够的威胁【注:Isn't Cloudera Impala doing the same job as Apache Drill incubator project? ,网址为:http://www.quora.com/Cloudera-Impala/Isnt-Cloudera-Impala-doing- the-same-job-as-Apache-Drill-incubator-project】。

从Quora上的问答来 看,Cloudera有7~8名工程师全职在Impala项目上,而相比之下Drill目前的动作稍显迟钝。具体来说,截至2012年10月底,Drill的代码库里实现了query parser、plan parser及能对JSON格式的数据进行扫描的plan evaluator;而Impala同期已经有了一个比较完备的分布式query execution引擎,并对HDFS和HBase上的数据读入、错误检测、INSERT的数据修改、LLVM动态翻译等都提供了支持。当然,Drill 作为Apache的项目,从一开始就避免了某个vendor的一家独大,而且对所有Hadoop流行的发行版都会做相应的支持,不像Impala只支持 Cloudera自己的发行版CDH。从长远来看,谁会占据上风还真不一定。

除此之外,加州伯克利大学AMPLab也开发了名为Shark 的大数据分析系统。本刊7月期《Spark:大数据时代的“电光石火”》一文专门分析了与Shark相关的Spark系统,感兴趣的读者朋友可以参考。从 长远目标来看,Shark想成为一个既支持大数据SQL查询,又能支持高级数据分析任务的一体化数据处理系统。从技术实现的角度上来看,Shark基于 Scala语言的算子推导实现了良好的容错机制,因此对失败了的长任务和短任务都能从上一个“快照点”进行快速恢复。

相比之下,Impala由于缺失足够强大的容错机制,其上运行的任务一旦失败就必须“从头来过”,这样的设计必然会在性能上有所缺失。而且Shark是把内存当作第一类的存储介质来做的系统设计,所以在处理速度上也会有一些优势。


图2 Redshift、Impala、Shark与Hive的Aggregation Query性能对比

实际上,AMPLab最近对Hive、Impala、Shark及Amazon采用的商业MPP数据库Redshift进行了一次对比试验,在Scan Query、Aggregation Query和Join Query三种类型的任务中对它们进行了比较。图2就是AMPLab报告中Aggregation Query的性能对比。在图中我们可以看到,商业版本的Redshift的性能是最好的, Impala和Shark则各有胜负,且两者都比Hive的性能高出了一大截。更多相关的实验结果读者朋友可以参考【注:Big Data Benchmark: https://amplab.cs.berkeley.edu/benchmark/】。

其实对大数据分析的项目来说,技术往往不是最关键的。例如Hadoop中的MapReduce和HDFS都是源于Google,原创性较少。事实上,开源项目的生态圈、社区、发展速度等,往往在很大程度上会影响Impala和Shark等开源大数据分析系统的发展。就像Cloudera一开始就决定会把Impala开源,以期望利用开源社区的力量来推广这个产品;Shark也是一开始就开源了出来,更不用说Apache的Drill更是如此。说到底还是 谁的生态系统更强的问题。技术上一时的领先并不足以保证项目的最终成功。虽然最后哪一款产品会成为事实上的标准还很难说,但我们唯一可以确定并坚信的一点 是,大数据分析将随着新技术的不断推陈出新而不断普及开来,这对用户永远都是一件幸事。

举个例子,如果读者注意过下一代 Hadoop(YARN)的发展的话就会发现,其实YARN已经支持MapReduce之外的计算范式(例如Shark、Impala等),因此将来 Hadoop将可能作为一个兼容并包的大平台存在,在其上提供各种各样的数据处理技术,有应对秒量级查询的,有应对大数据批处理的,各种功能应有尽有,满 足用户各方面的需求。

未来展望

其实除了Impala、 Shark和Drill这样的开源方案外,像Oracle、EMC等传统厂商也没在坐以待毙等着自己的市场被开源软件侵吞。像EMC就推出了HAWQ系 统,并号称其性能比之Impala快上十几倍,而前面提到的Amazon的Redshift也提供了比Impala更好的性能。

虽然说开源软件因为其强大的成本优势而拥有极其强大的力量,但传统数据库厂商仍会尝试推出性能、稳定性、维护服务等指标上更加强大的产品与之进行差异化竞争,并同时参与开源社区、借力开源软件来丰富自己的产品线、提升自己的竞争力,并通过更多的高附加值服务来满足某些消费者需求。毕竟,这些厂商往往已在并行数据库等 传统领域积累了大量的技术和经验,底蕴非常深厚。甚至现在还有像NuoDB(一个创业公司)这样号称既支持ACID,又有Scalability的 NewSQL系统涌现出来。

总的来看,未来的大数据分析技术将会变得越来越成熟、越来越便宜、越来越易用。与此相应的,用户将会更容易、更方便地从自己的大数据中挖掘出有价值的商业信息。

作者耿益锋,清华大学计算机系博士研究生,主要研究方向包括大数据处理、云计算中的新应用和新场景下分布式系统的设计和优化。

作者陈冠诚,IBM中国研究院研究员,主要研究方向为并行计算、计算机体系结构及大规模分布式系统。个人博客为http://parallellabs.com。

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    大数据可视化PPT 大数据可视化PPT

    大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT大数据可视化PPT...

    清华大学精品大数据课程PPT课件 大数据导论 全套PPT 共7个章节.rar

    清华大学精品大数据课程PPT课件(35页) 第1章 大数据概念与应用.pptx 清华大学精品大数据课程PPT课件(40页) 第2章 大数据的架构.pptx 清华大学精品大数据课程PPT课件(48页) 第3章 大数据采集及预处理.pptx 清华...

    大数据技术与应用.pdf

    大数据技术与应用.大数据技术与应用.大数据技术与应用.大数据技术与应用.大数据技术与应用.大数据技术与应用.大数据技术与应用.大数据技术与应用.大数据技术与应用.大数据技术与应用.大数据技术与应用.大数据技术与...

    【大数据可视化大屏源码】公司大数据可视化平台.zip

    大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据...

    大数据平台的基础能力和性能测试

    简要地介绍了大数据技术发展的背景以及大数据技术标准的需求,综述了国际大数据平台标准化和评测的现状,详细介绍了数据中心联盟在大数据平台技术标准化和测评方面的实践,最后总结了当前工作的问题,并展望了下一步...

    【大数据可视化大屏源码】通用大数据可视化展示平台模板.zip

    大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据...

    阿里大数据之路:阿里巴巴大数据实践-339页.zip

    《阿里大数据之路:阿里巴巴大数据实践》是一本深入探讨阿里巴巴集团在大数据领域实践经验的书籍,共计339页,全面展示了阿里巴巴在大数据领域的技术积累和创新应用。这本书籍旨在分享阿里巴巴如何利用大数据技术来...

    大数据技术参考架构

    大数据参考架构围绕代表大数据价值链的信息价值链(水平轴)和IT价值链(垂直轴)两个维度组织展开。信息价值链表示大数据的应用理论作为一种数据科学方法,从数据到知识的处理过程中所实现的信息价值,其核心价值...

    【大数据可视化大屏源码】车联网大数据可视化平台后台管理模板.zip

    大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据...

    大数据认知实习报告

    ### 大数据认知实习报告知识点总结 #### 一、大数据的认知背景及意义 - **大数据的概念**:大数据是指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。它具有“4V”特征:Volume(大量)...

    【大数据可视化大屏源码】销售数据可视化页面设计.zip

    大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据...

    医疗大数据平台建设指南.pdf

    本指南旨在为医疗机构提供医疗大数据平台建设、应用和运维工作的参考方案,帮助医疗信息工作者面对医疗大数据发展建设挑战、解决当前医疗大数据建设中的问题,推广医疗大数据的建设和应用。 医疗大数据平台建设指南...

    阿里巴巴大数据实践之路.pdf

    阿里巴巴大数据实践之路.pdf 阿里巴巴大数据实践之路概述 阿里巴巴是一家数据公司,经过多年的发展,阿里巴巴大数据实践之路可以分为三个阶段:Data 1.0、Data 2.0 和 Data 3.0。Data 1.0阶段,阿里巴巴主要关注...

    大数据应用场景及相关技术

    大数据应用场景及相关技术 大数据预测是指基于大数据和预测模型来预测未来某件事情的概率。它的逻辑基础是,每一种非常规的变化事前一定有征兆,每一件事情都有迹可循,如果找到了征兆与变化之间的规律,就可以进行...

    企业大数据治理平台需求规格说明书.docx

    企业大数据治理平台需求规格说明书 大数据治理平台是企业实现大数据管理和分析的重要工具,本文档对企业大数据治理平台的需求规格进行了详细的说明。 概要 大数据治理平台是企业实现大数据管理和分析的重要工具,...

    第五届工业大数据比赛-风机-测试集_初赛

    第五届工业大数据比赛-风机-测试集_初赛 第五届工业大数据比赛-风机-测试集_初赛 第五届工业大数据比赛-风机-测试集_初赛 第五届工业大数据比赛-风机-测试集_初赛 第五届工业大数据比赛-风机-测试集_初赛 第五届工业...

    新华三大数据实训解决方案-大数据教学与实践管理系统.pptx

    国家十三五规划纲要中提出:“实施国家大数据战略,推进数据资源开放共享” 国发【2015】50号《促进大数据发展行动纲要》中明确提出“鼓励高校设立数据科学和数据工程相关专业,重点培养专业化数据工程师等大数据...

    阿里巴巴大数据实践之路-9.pdf

    阿里巴巴大数据实践之路 大数据是阿里巴巴的核心竞争力,阿里巴巴大数据实践之路是阿里巴巴数据事业部高级专家的经验总结。本文将从阿里巴巴的大数据发展历程、数据体系结构、公共技术平台、数据共享、算法共享、...

    《大数据与城市规划》 习题及期末答案

    《大数据与城市规划》是清华大学龙瀛教授开设的一门课程,该课程深入探讨了如何利用大数据技术进行城市规划和管理。大数据,作为一种新兴的技术手段,已经深刻地影响了各行各业,其中包括城市管理这一重要领域。本...

    厦门大学林子雨老师主讲大数据教程.rar

    Chapter1--大数据技术原理与应用-第1讲-大数据概述.pdf Chapter2--大数据技术原理与应用-第2讲-大数据处理架构Hadoop.pdf Chapter3--大数据技术原理与应用-第3讲-分布式文件系统HDFS.pdf Chapter4--大数据技术原理与...

Global site tag (gtag.js) - Google Analytics