Apache Kudu是开源Apache Hadoop生态系统的新成员,它完善了Hadoop的存储层,可以快速分析快速数据。
Apache Impala是CDH的集成部分,通过Cloudera Enterprise订阅支持,是Apache Hadoop的开源分析MPP数据库,可以提供最快的洞察时间。
在Kudu出现之前,Hadoop生态环境中的储存主要依赖HDFS和HBase,追求高吞吐批处理的用例中使用HDFS,追求低延时随机读取用例下用HBase,而Kudu正好能兼顾这两者:
• Kudu的设计使它与众不同:
o 快速处理OLAP(Online Analytical Processing)任务
o 集成MapReduce、Spark和其他Hadoop环境组件
o 与Impala高度集成,使得这成为一种高效访问交互HDFS的方法
o 强大而灵活的统一性模型
o 在执行同时连续随机访问时表现优异
o 通过Cloudera Manager可以轻松管理控制
o 高可用性,tablet server和master利用Raft Consensus算法保证节点的可用
o 结构数据模型
• 常见的应用场景:
o 刚刚到达的数据就马上要被终端用户使用访问到
o 同时支持在大量历史数据中做访问查询和某些特定实体中需要非常快响应的颗粒查询
o 基于历史数据使用预测模型来做实时的决定和刷新
o 要求几乎实时的流输入处理
• Kudu+Impala集成功能:
o CREATE/ALTER/DROP TABLE
Impala支持使用Kudu作为持久层创建,更改和删除表。这些表遵循与Impala中其他表相同的内部/外部方法,允许灵活的数据提取和查询。
o INSERT
可以使用与任何其他Impala表相同的语法将数据插入Impala中的Kudu表,例如使用HDFS或HBase进行持久化的表。
o UPDATE / DELETE
Impala支持UPDATE和DELETESQL命令逐行或批量修改Kudu表中的现有数据。选择SQL命令的语法与现有标准尽可能兼容。除了simple DELETE 或UPDATE命令之外,还可以使用FROM子查询中的子句指定复杂连接。
o 灵活的分区
与Hive中的表分区类似,Kudu允许通过散列或范围动态地将表预分割为预定义数量的节点,以便在集群中均匀分配写入和查询。可以按任意数量的主键列,任意数量的哈希值和可选的拆分行列表进行分区。
o 并行扫描
为了在现代硬件上实现最高性能,Impala使用的Kudu客户端课在多台节点上并行扫描。
o 高效查询
在可能的情况下,Impala将谓词评估推送到Kudu,以便尽可能接近数据评估谓词。在许多工作负载中,查询性能与Parquet相当。