hadoop impala
随着Hadoop的发展,开发人员获得了具有更多功能的新抽象和发行版本。 Hadoop的新版本和新版本将提供改进的Hadoop,同时消除了早期版本的弊端。
Facebook引入了Apache Hive,以管理和处理存储在Hadoop分布式环境中的较大数据集。 Apache Hive具有自己的类似SQL的语言,称为HiveQL。 Cloudera引入了Impala,以消除Hadoop SQL低交互所带来的限制。 Cloudera Impala提供类似于SQL的高性能和低延迟查询,可用于分析和处理数据。 Impala处理的数据存储在Hadoop群集中。
本文讨论了Cloudera Impala的功能和体系结构,并将其与Apache Hive进行了比较。
Impala简介
Impala是大规模并行处理SQL引擎,可以为您提供一种处理大量数据的强大方法。 Impala的条件仅是要处理的数据应存储在Hadoop群集上。 由于这种情况,Hadoop在数据仓库中占主导地位。 Impera于2012年10月由Cloudera引入世界,其公共测试版已于2013年5月公开提供。
对于Hadoop程序员而言,Cloudera的Impala是在Apache HBase和HDFS上运行查询的绝佳选择,因为在Impala中,程序员无需在处理数据之前先转换或移动数据。 由于Cloudera Impala中使用了相似的数据和文件格式,因此可以轻松地将其与Hadoop生态系统集成。
除此元数据外,资源管理和安全框架也类似于Apache Hive,Apache Pig和MapReduce Hadoop软件所使用的框架。 Impala的体系结构充分利用了Hadoop的优势,传统数据库的多用户性能功能以及对SQL语法的熟悉。 以下是两种吸引其他处理语言的Impala技术:
1)柱状储存
Impala中的数据以列形式存储,因此用户可以实现高效存储和高压缩率。
2)树架构
为了将查询下推到树上,然后汇总树上叶子的结果,此体系结构有助于实现大规模并行的多级分布式查询处理。
以下是实施Impala的一些其他原因,除了它消除了迁移大量数据集并改善性能参数的需要,而且还消除了在分析数据之前转换数据格式的需要。
- Impala支持Apache HBase存储和HDFS
- 它可以识别Hadoop的所有文件格式,例如测试,LZO,Avro,RCFile,Parquet和SequenceFile
- 它支持名为Kerberos身份验证的Hadoop安全性
- 它通过Apache Sentry支持基于角色的粒度授权
- 它可以轻松地从Apache Hive读取ODBC驱动程序,元数据和SQL语法
在短短两年内,Impala赢得了极大的欢迎。 MapR和Apache Web Services中增加了对Impala的支持,证明了其成功。
Cloudera Impala的体系结构
Cloudera的Impala由三个关键组件组成,称为Impala,impala-shell和impala-state-store。 下图显示了SQL查询中涉及的各个组件之间的交互:
Impala shell是一个shell脚本,它用于启动用于运行查询的impala-shell-py python程序。
Impalad在Hadoop的每个节点上运行,它还用于计划和执行从impala-shell发送的查询。
Impala状态存储区用于存储impalad实例的状态和位置等信息
Impala和Apache Hive之间的区别
Impala被认为比Apache Hive更好。 在这里,您可以更深入地了解两者之间的区别:
Cloudera Impala是用于查询处理的本地语言,它有助于减少在基于MapReduce / Tez的作业中发现的启动程序的常见开销。 Impala随时准备处理程序,并且其守护进程在引导时启动,而Hive出现“冷启动”问题。
查询表达式是在Hive编译时生成的,而在impala中则是生成运行时代码的,尤其是对于“大循环”
对于交互式计算,Apache Hive并不理想,而Impala则特别是交互式计算
Impala就像MPP数据库一样,而Hive用于批处理
Impala不支持复杂类型,而Hive支持它们
Impala不支持容错,而Hive支持。 在Hive中,即使由于故障容错功能而导致DataNode发生故障,也将生成任何数据查询的结果,而在Impala中,在任何这种情况下都将重新启动完整的过程。
下图显示Impala比Apache Hive快得多。 与Hive相比,它具有一些与性能相关的优势。 如果要启动任何新项目,Impala可能是最好的选择,而对于可能存在兼容性的任何升级项目,Hive可能是更好的选择。
简而言之,无法将Apache Hive和Impala的优缺点进行比较,这取决于具体情况。 即使在某些情况下,两者也一起用于执行查询。 Impala具有用于查询执行的MapReduce基础。 有时为了获得最佳结果,您可以同时使用它们,这可能会带来更好的兼容性和性能。
进一步说
对于大型数据集,大数据领域需要付出更多努力,以支持快速查询,实时和即席数据处理。 Cloudera Impala还使用了与Google Big Query相同的概念,并支持更广泛的输入格式,并且它已作为开源技术提供。 由于它的性能,它还可以吸引外部开发人员。 程序员可以在Cloudera Impala的帮助下将他们的应用程序提升到一个新的水平,从而提高应用程序的性能并将其提升到一个新的水平,从而使其能够出色地工作。
hadoop impala