注:Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。
Hadoop上的SQL引擎Impala是一种新型查询系统基准,发现Spark和Hive在BI的工作负载中有自己的优势与弱势。
根据***的基准,三个主要的SQL-on-Hadoop引擎,Apache Impala 2.3, Apache Spark 1.6 和Apache Hive 1.2,都有各自独特的优势和劣势,这令他们能很好的适应一些BI用例,而不是其他智能。
“一个引擎是无法满足所有需求的”,Dave Mariani,大规模AtScale的CEO和创始人,AtScale是一个专门在hadoop上实现BI的创新企业。“我们已经完成了布置,对于我们的客户而言这是多个引擎的补充。”
关于在Hadoop基础上的商业智能,AtScale帮助技术评估者选择***的SQL –on-Hadoop技术,以帮助他们完成BI用例。AtScale测试团队使用星型架构基准(SSB)数据集,基于广泛使用的TPC-H数据(TPC- H是事务处理性能委员会公布的一套针对数据库决策支持能力的测试基准),将其进行修改使之更加 精确的表现一个面向BI的数据布局。数据集允许数据团队测试大型表的查询:在线订购表含有接近6百万行,大型客户表含有超过十亿行。
SQL-on-Hadoop引擎有不同的“甜区”工作负载
Mariani解释AtScale根据三个关键要求评价SQL-on-Hadoop引擎,以及它们的适应度是否能满足BI工作负载。
在大数据上执行。SQL-on-Hadoop引擎必须能够连续不断的分析十亿百亿行数据,并且没有生成错误,对命令的反应时间是10s或者是100s。
在小数据上速度快。引擎需要传递相互表现到已知查询模式,因此,
SQL-on-Hadoop引擎在处理小数据时,不超过几秒钟就能将结果返回。(小数据是指有着成千上百万的命令行的数据)。
对用户来说是稳定的。企业级BI用户的基础是由成百上千的数据工作人员组成。SQL-on-Hadoop引擎必须在高度并行分析的工作负载中运行可靠。
Mariani领导团队为雅虎的BI创建了可能是世界上***的在线分层分析!他相信这三个标准是基本要求的代表,是企业在Hadoop上实现BI时都会遇到的。这个标准,是测试团队和大量行业企业合作得出的,包括金融服务,医疗,零售,电信等。
“我们使用了真实世界的的经验去形成文档,每一个技术评估者可以将其作为是评估流程的一部分”。Josh Klahr补充,AtScale.生产部门副总裁。
测试团队发现三个引擎都通过了测试,足够稳定去支持BI工作负载,但是一个引擎不能满足所有需求。每个引擎都有自己的“甜区”,企业有可能去寻找所有引擎的混合用法,他们相信这有可能最适合他们的目标。
当Hive在逐渐思考SQL-on-Hadoop的默认值时,它将基准中引擎运行最慢的情况放置一边,令其不能很好的配合相互查询。
“如果你使用Hive Tez作为你的相互查询引擎,你能做到的***是2.4秒”。Mariani 说。
但是它可能缓慢,Hive也是三个引擎中最稳定的,在多个查询类型中有着***的连贯性。
“Hive Tez就像乌龟。”. Mariani 说,“它总是能完成竞赛,但是不是在壮观,迅速的时尚下。但是它是最可靠的。”
Impala和Spark,从利益方面来说,在处理小数据集时,他们是***的。Impala会在大量的工作负载中覆盖了Spark,但是 Mariani提到Spark1.6相比Spark1.5有了巨大的性能改变,他希望Spark能继续保持这样的发展趋势,因为Spark已经划出一块大的开源社区,关注着它的发展。数据管理公司云纪元公司(Cloudera)最近计划捐赠Impala给Apache软件基金会,这可以为其发展增加势头。
现在,Impala是用例的王者,它需要大量的用户
“Impala在并发上真的很棒,” Mariani 说,“如果你打算拥有一大堆用户,让他们去使用小的快速的查询,Impala相比Spark是更好的选择。”
“如果速度不是最重要的,但是稳定性和可靠性很重要,我会选择使用Hive Tez作为我的数据管线引擎”,他补充道,“对于那些需要大批处理的工作负载,我会选择Hive Tez。如果我想要我的BI用户接入我的数据仓库,我会使用Spark或者Impala。”
Mariani 提到,虽然团队不能把其他引擎作为基准,如Apache Drill或者 Apache Presto,但是他们会在下次尝试。
他说,“你永远不知道引擎与引擎之间,谁将是可以作为赌注的更好的马。”