Kudu+Impala介绍
hbase主要用来储存什么数据概述
Kudu和Impala均是Cloudera贡献给Apache基金会的顶级项目。Kudu作为底层存储,在支持高并发低延迟kv查询的同时,还保持良好的Scan性能,该特性使得其理论上能够同时兼顾OLTP类和OLAP类查询。Impala作为老牌的SQL解析引擎,其面对即席查询(Ad-Hoc Query)类请求的稳定性和速度在工业界得到过广泛的验证,Impala并没有自己的存储引擎,其负责解析SQL,并连接其底层的存储引擎。在发布之初Impala主要支持HDFS,Kudu发布之后,Impala和Kudu更是做了深度集成。
在众多大数据框架中,Impala定位类似Hive,不过Impala更关注即席查询SQL的快速解析,对于执行时间过长的SQL,仍旧是Hive更合适。对于GroupBy等SQL查询,Impala进行的是内存计算,因而Impala对机器配置要求较高,官方建议内存128G以上,此类问题Hive底层对应的是传统的MapReduce计算框架,虽然执行效率低,但是稳定性好,对机器配置要求也低。
执行效率是Impala的最大优势,对于存储在HDFS中的数据,Impala的解析速度本来就远快于Hive,有了Kudu加成之后,更是如虎添翼,部分查询执行速度差别可达百倍。
值得注意的是,Kudu和Impala的英文原意是来自非洲的两个不同品种的羚羊,Cloudera这个公司非常喜欢用跑的快的动物来作为其产品的命名。
相关背景
OLTP与OLAP
OLTP(On-line Transaction Processing) 面向的是高并发低延时的增删改查(INSERT, DELETE, UPDATE, SELECT, etc..)。
OLAP(On-line Analytical Processing) 面向的是BI分析型数据请求,其对延时有较高的容忍度,处理数据量相较OLTP要大很多。
传统意义上与OLTP对应的是MySQL等关系型数据库,与OLAP相对应的则是数据仓库。OLTP与OLAP所面向的数据存储查询引擎是不同的,其处理的请求不一样,所需要的架构也大不相同。这个特点意味着数据需要储存在至少两个地方,需要定期或者实时的同步,同时还需要保持一致性,该特点对数据开发工程师造成了极大的困扰,浪费了同学们大量的时间在数据的同步和校验上。Kudu+Impala的出现,虽然不能完美的解决这个问题,但不可否认,
其缓解了这个矛盾。
在此需要注意的是OLTP并没有严格要求其事务处理满足ACID四个条件。事实上,OLTP是比ACID更早出现的概念。在本文中,OLTP和OLAP的概念关注在数据量、并发量、延时要求等方面,不关注事务。
Kudu 来由
Kudu最早是Cloudera公司开发,并与2015年12月3日贡献给Apache基金会,2016年7月25日正式宣布毕业,升级为 Apache 顶级项目。值得注意的是Kudu在开发之中得到了中国公司小米的大力支持,小米深度参与到了Kudu的开发之中,拥有一位Kudu的Committer。
从Kudu毕业时间可以看出,Kudu还很年轻,有不少细节需要完善,也有一些重大特性待开发(如事务)。不过Kudu+Impala的组合正在得到越来越多公司的实践,目前也是Cloudera公司主推的新式大数据解决方案。
其他名词解释
∙ HDFS是Hadoop生态圈最基础的存储引擎,请注意HDFS的设计主要为大文件存储,为高吞吐量的读取和写入服务,HDFS不适合存储小文件,也不支持大量的随机读写。
∙ MapReduce是分布式计算最基础的计算框架,通过把任务分解为多个Mapper和Reducer,该计算框架可以很好地处理常见的大数据任务。
∙ Hadoop最早由HDFS+MapReduce构成,随着Hadoop2.0以及3.0的发布,Hadoop正在被赋予更多的功能。
∙ Hbase启发于Google的Bigtable论文,项目最早开始于Powerset公司。Hbase建立在HDFS之上,拥有极高的随机读写性能,是典型的OLTP类请求处理引擎。与此同时,Hbase也拥有不错的Scan性能,可以处理部分类型的OLAP类请求。
∙ Spark集迭代式计算、流式计算于一身的新一代计算引擎,相比MapReduce,Spark提供了更丰富的分布式计算原语,可以更高效的完成分布式计算任务。
∙ Ad-Hoc Query通常翻译为即席查询,是数据仓库中的一个重要概念。数据探索和分析应用中通常会任意拼凑临时SQL,并且对查询速度有一定要求,该类查询统称为即席查询。
∙ 列式存储相比于行式存储,列式存储把相同列的数据放在一起。因为相同列的数据重复度更高,所以在存储上可以提供更高的压缩比。又因为大部分BI分析只读取部分列,相比行式存储,列式存储只需要扫描需要的列,读取的数据更少,因此可以提供更快速的查询。常见的列式存储协议有Parquet等。
Kudu介绍
Kudu是什么
Kudu是围绕Hadoop生态圈建立存储引擎,Kudu拥有和Hadoop生态圈共同的设计理念,它运行在普通的服务器上、可分布式规模化部署、并且满足工业界的高可用要求。其设计理念为fast analytics on fast data.。Kudu的大部分场景和Hbase类似,其设计降低了随机读写性能,提高了扫描性能,在大部分场景下,Kudu在拥有接近Hbase的随机读写性能的同时,还有远超Hbase的扫描性能。
区别于Hbase等存储引擎,Kudu有如下优势:
∙ 快速的OLAP类查询处理速度
∙ 与MapReduce、Spark等Hadoop生态圈常见系统高度兼容,其连接驱动由官方支持维护
∙ 与Impala深度集成,相比HDFS+Parquet+Impala的传统架构,Kudu+Impala在绝大多数场景下拥有更好的性能。
∙ 强大而灵活的一致性模型,允许用户对每个请求单独定义一致性模型,甚至包括强序列一致性。
∙ 能够同时支持OLTP和OLAP请求,并且拥有良好的性能。
∙ Kudu集成在ClouderaManager之中,对运维友好。
∙ 高可用。采用Raft Consensus算法来作为master失败后选举模型,即使选举失败,数据仍然是可读的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论