Hbase、Kudu和ClickHouse横向对比V2.0 前言 Hadoop生态圈的技术繁多。HDFS一直用来保存底层数据,地位牢固。...分别弥补HDFS静态存储和Hbase Nosql的不足。 既然可选的技术路线有这么多,本文将从安装部署、架构组成、基本操作等方面横向对比一下Hbase、Kudu和Clickhouse。...基本操作对比 数据读写操作 •Hbase读流程 ? •Hbase写流程 ? •Kudu ? •Clickhouse Clickhouse是个分析型数据库。...首先说一下Hbase与Kudu,可以说是Kudu师承Hbase,架构是类似的master-slave结构。...最后从下面几个维度来对比一下Hbase、Kudu和Clickhouse。 ?
Kudu分区策略Kudu表分为多个tablet,理想情况下,tablets应该相对平等地拆分表的数据,Kudu目前没有自动拆分预先存在的 tablets 的机制。所以在创建Kudu表时必须指定分区。...Kudu表的分区分为范围分区、hash分区、高级分区三种,分区字段必须来自于主键字段。使用Impala创建表时,可以使用 PARTITION BY 子句指定分区。...kuduClient.createTable("t_range_partition", schema, options);//关闭kuduClient对象kuduClient.close();以上代码执行完成后,可以通过Kudu...Arrays.asList("id"),10 );//创建表kuduClient.createTable("t_hash_partition", schema, options);以上代码创建完成后,可以通过Kudu...lower,upper );}//创建表kuduClient.createTable("t_hash_range_partition", schema, options);以上代码创建完成后,可以通过Kudu
动态数据:一些数据处理场景下,需要低延迟、高效的读取特定数据,我们可以将数据存储在HBase中,HBase支持数据的低延迟随机读写(HBase数据存储在HDFS中,本质上还是追加写。...HBase中以Rowkey为索引,对于需要大批量读取数据分析的场景,吞吐量不如HDFS。...一、Kudu概念Kudu是Cloudera在2015年9月开源的分布式数据存储引擎,其结合了HDFS和HBase的优势,可以同时提供高效的随机访问以及数据扫描能力。...Kudu的随机读写速度和HBase相似,但是达不到HBase随机读写性能,Kudu批量查询数据性能媲美HDFS parquet,但是比HDFS批量查询慢,所以kudu更像是HDFS与HBase的一个折中选择...二、Kudu 适用场景Kudu适用于以下场景:对数据既支持扫描(scan)又支持随机访问(random access)同时具有高性能,简化用户复杂的混合架构场景。数据需要更新,避免额外的数据迁移。
Kudu架构一、Kudu存储模型及概念Kudu有自己的数据存储模型,不依赖于HDFS、Hive、HBase其他大数据组件。...Kudu有自己的集群,数据存储在Kudu自己的集群Tablet Server中。Kudu的存储模型是有结构的表,表中有主键,并且主键唯一,不能重复。事务支持上与HBase类似,只支持行级ACID事务。...Kudu是列式存储,支持数据压缩。Kudu不支持标准SQL,支持Nosql样式的API,例如:put,get,delete,scan。...一般企业中kudu与impala进行整合使用,可以使用SQL对数据进行实时OLAP分析。Table:table是数据存储在Kudu的位置,具有schema和全局有序的 primary key。...二、Kudu table存储原理对于一张特定的Kudu表,存储结构如下:Kudu数据存储实现如下:一个table根据hash或者range分区分成多个tablet,每个tablet
Kudu Java Api操作Kudu没有提供标准SQL操作,支持Nosql样式的API,这里使用Java 操作Kudu ,包括创建表、插入数据、修改删除数据、删除表等操作,值得注意的是,Java...api直接操作Kudu在开发中不是常用的方式,常用方式是Spark操作Kudu、Kudu与Impala整合写SQL操作Kudu。...一、添加Maven依赖Java操作Kudu需要在创建好的Maven项目中导入kudu-client依赖,此外我们这里使用的是CDH版本的kudu依赖包,maven默认不支持CHD相关依赖,...-- 添加kudu-client依赖 --> org.apache.kudu kudu-client</...*/kuduClient.close();执行完成以上命令可以登录Kudu查看到对应的表。 三、插入数据向Kudu表中插入数据经过以下步骤:创建KuduClient对象,连接Kudu集群。
Kudu集群搭建一、kudu 安装包Kudu官网没有提供好编译好的Kudu安装包,我们可以下载源码进行编译获取安装包,这里为了方便我们直接使用Cloudera 提供的CDH版本kudu安装包:centos7...下载地址:http://archive.cloudera.com/kudu/redhat/7/x86_64/kudu/5/RPMS/x86_64/下载对应如下几个rpm安装包即可:kudu-1.4.0+...:service kudu-tserver start2、检查kudu是否启动成功在每台节点可以执行“ps aux|grep kudu”来查看对应的Kudu进程。...如果启动Kudu出错或者没有对应的Kudu进程,可以在/var/log/kudu目录下查看日志。...3、访问Kudu WebUI页面Kudu启动成功后,可以通过访问http://Master Server IP:8051来访问Kudu WebUI。
Spark操作Kudu一、添加Maven依赖使用SparkSQL操作Kudu,这里需要导入Kudu与SparkSQL整合的包和SparkSQL的包,在Maven中导入如下依赖...--添加kudu-spark 依赖--> org.apache.kudu kudu-spark2_2.11...,KUDU_TABLE) /** * 查询Kudu表数据 */// queryData(kuduContext,sc,KUDU_TABLE) /** *...向Kudu表更新数据 */// updateData(session,kuduContext,KUDU_TABLE) /** * 删除Kudu表中的数据 */...).mode(SaveMode.Append).format("kudu").save()//再次查询Kudu表 t_spark_kudu 数据session.read.options(kuduOptionMap
Flink操作KuduFlink主要应用场景是流式数据处理上,有些公司针对流式数据使用Flink实时分析后将结果存入Kudu,例如快手公司。...这里将实时计算的结果存入Kudu需要自定义Flink Kudu Sink。...场景:Flink实时读取Socket数据,将结果存入Kudu表t_flink_result,为了方便操作不再创建Kudu外表,这里在Impala中创建Kudu内表t_flink_result:create...对象 var kuduClient :KuduClient = _ //Kudu 表对象 var kuduTable :KuduTable = _ //创建KuduSession 客户端会话...var session: KuduSession = _ //初始化时调用一次,这里初始化连接Kudu的对象 override def open(parameters: Configuration)
ClickHouse与Kudu对比kudu 2015年9月28号出现第一个测试版本0.5.0,2016年2月26第一个正式版0.7.发布。clickhouse 2018年3月开源正式版出现。...元数据管理Kudu使用Master Server管理元数据。ClickHouse使用Zookeeper管理元数据。...SQL支持Kudu不支持标准SQL,有put,get等api代码操作;与Impala整合后支持SQL操作。ClickHouse对于标准SQL的支持相对完好。...Kudu对数据快速读取和快速插入数据的场景支持比较好,原子数据查询延迟低,与Impala整合可以做OLAP操作。...扩展性Kudu由于Tablet Server的特殊结构,扩展性差,支持300个节点。ClickHouse集群节点无上限。
kudu Kudu是为Apache Hadoop平台开发的列式数据库。Kudu拥有Hadoop生态系统应用程序的常见技术属性:它可以商用硬件上运行,可横向扩展,并支持高可用性操作。...kudu-plus是什么 kudu-plus是可视化管理kudu的工具,由于kudu虽然是列式数据库,但是可以表达成关系数据库类似的表和字段等信息,某种情况下通过可视化管理更加轻松。...java操作分区: 查看测试用例部分代码 kudu主键设计: 每个Kudu表必须声明由一列或多列组成的主键。与RDBMS主键一样,Kudu主键强制执行唯一性约束。...v0.0.1(当前) 查看kudu集群所有表 创建kudu表 删除kudu表 重命名kudu表 更新kudu表结构:修改非主键列名、修改非主键列默认值、修改非主键列的是否允许为空、新增非主键字段、删除非主键字段...查看kudu表分区信息 预览kudu表数据 编辑kudu表非主键列数据 删除kudu表数据行 新增kudu表数据行 检索kudu表数据添加筛选条件 v0.0.2功能(预期) 创建kudu表可以添加hash
Kudu读写数据过程一、写入数据当 Client 请求写数据时,先根据主键从 Mater Server 中获取要访问的目标 Tablets,然后到对应的 Tablet 获取数据。...因为 KUDU 表存在主键约束,所以需要进行主键是否已经存在的判断。一个 Tablet 中存在很多个 RowSets,为了提升性能,我们要尽可能地减少要扫描的 RowSets 数量。
Kudu不支持标准SQL操作,可以将Kudu与Apache Impala紧密集成,impala天然就支持兼容kudu,允许开发人员使用Impala的SQL语法从Kudu的tablets 插入,查询,更新和删除数据...,Kudu与Impala整合本质上就是为了可以使用Hive表来操作Kudu,主要支持SQL操作。...一、Kudu与Impala整合配置先安装Impala后安装Kudu,Impala默认与Kudu没有形成依赖,这里需要首先在Impala中开启Kudu依赖支持,打开Impala->“配置”->“Kudu服务...内部表由impala管理,当创建表时,'kudu.master_address'指定Kudu集群,在ClouderaManager中impala配置了支持Kudu,也可以不指定;不能设置属性'kudu.table_name...('kudu.table_name'='personInfo1');注意:使用 “show create table t_kudu_map”查看表 t_kudu_map的建表语句,发现底层映射的Kudu
开源大数据组件组合方案 2.1 常用框架简介 常用OLAP MPP框架优劣势 [hm2daa13g1.png] 业界常用组合方案 Hbase+Phoenix 、Kudu+impala、 clickhouse...[93it3cpvhm.png]2 2.2.1 对比 区别于Hbase等存储引擎,Kudu有如下优势: 快速的OLAP类查询处理速度 与MapReduce、Spark等Hadoop生态圈常见系统高度兼容...Kudu是一个纯粹的列式存储引擎,相比Hbase只是按列存放数据,Kudu的列式存储更接近于Parquet,在支持更高效Scan操作的同时,还占用更小的存储空间。...数据按列放一起一般意义来讲会拥有更高的压缩比,这是因为列相同的数据往往拥有更高的相似 Kudu和Hbase有如下两点本质不同 Kudu的数据模型更像是传统的关系型数据库,Hbase是完全的no-sql...Kudu的磁盘存储模型是真正的列式存储,Kudu的存储结构设计和Hbase区别很大。 综合而言,纯粹的OLTP请求比较适合Hbase,OLTP与OLAP结合的请求适合Kudu。
5)Kudu不及HDFS批处理快,也不及HBase随机读写能力强,但是反过来它比HBase批处理快(适用于OLAP的分析场景),而且比HDFS随机读写能力强(适用于实时写入或者更新的场景),这就是Kudu...(2)为什么不能想办法改进HBase呢? Kudu 的很多特性跟 HBase 很像,它支持索引键的查询和修改。...相比HBase而言,Kudu的架构可以轻松应对随机写的场景。...Kudu随机读压力场景最佳实践 对于随机读压力比较大的业务场景并不是很建议使用Kudu,通常情况下HBase是一个更好的选择,不过Kudu也拥有不错的随机读性能。...Kudu官方的性能测试,在读压力分布符合齐夫定律时,HBase有读性能优势,随机分布下,Kudu和HBase的的随机读性能相当。
[oqfg7jhvg1.png] hdfs不支持批量更新操作,kudu支持 hdfs适用于离线sql分析,kudu适用于实时sql分析 hbase不支持sql操作,kudu支持(hbase-hive...;kudu核心模块用的. c++来实现,没有full gc的风险 hbase的timestamp是暴露的,kudu没有暴露 hbase的插入和更新操作都是当作一条数据进行处理的,而kudu...基于rowkey查询和kudu基于主键查询是很快的; Kudu结构看上去跟HBase差别并不大,主要的区别包括: Kudu将HBase中zookeeper的功能放进了TMaster内,Kudu中TMaster...Kudu在写的性能上相对HBase有一定的劣势。...总结 Kudu通过要求完整的表结构设置,主键的设定,以列式存储作为数据在磁盘上的组织方式,更新和数据分开等技巧, 使得Kudu能够实现像HBase一样实现数据的随机读写之外,在HBase
事务与数据一致性 Kudu支持单行事务,但不支持多行事务(Kudu中对多行操作不满足ACID原则中的原子性),也不支持事务回滚,这点与HBase是相同的。...使用TPC-H中的lineitem表(原始数据大小约62GB)进行Impala on Kudu与Phoenix on HBase的对比测试,包括数据的载入与4种查询。...Phoenix on HBase的表划分为100个哈希分区,Kudu表划分为100个Tablet。 ? 测试结果如下。 ?...可见,Phoenix on HBase的方案只有在基于RowKey的查询时有性能优势,并且领先幅度不大。而Impala on Kudu在执行基于列的查询和全表扫描时,效率远远高于HBase。...当然,这与HBase偏OLTP的设计思想有关,并不能说明Kudu可以完全取代HBase。 另外,论文中还用了雅虎的YCSB数据集测试随机读写能力。 ?
Kudu基于Cloudera Manager安装及配置使用Kudu一般都会和impala进行整合,impala与Hive是强依赖关系,需要安装Hive,安装Hive需要安装HDFS等,以上各个技术组件的版本都需要对应匹配...,由于Kudu没有直接的安装包,为了方便我们可以选择基于Cloudera Manager进行安装Kudu及相关大数据组件。...start cloudera-scm-agent#登录Cloudera Manager user:admin pwd:adminhttp://cm1:7180二、登录ClouderaManager平台安装Kudu...三、选择Master Server 两台节点和Tablet Server 3台节点四、配置Kudu WAL目录和数据目录等待安装完成即可,可以通过Cloudera Manager 界面来访问Kudu。
如果这些数据之前已经从HBase导出到HDFS,新到的变更数据就难以处理了,一个方案是把原有数据应用上新的变更后重写一遍,但这代价又很高。 为了解决上述架构的这些问题,Kudu应运而生。...从上图可以看出,KUDU 是一个折中的产品,在 HDFS 和 HBase 这两个偏科生中平衡了随机读写和批量分析的性能。...HBase、HDFS由于年代久远,已经很难从基本架构上进行修改,而Kudu是基于全新的设计,因此可以更充分地利用RAM、I/O资源,并优化CPU利用率。...四、Kudu的应用场景 Kudu的很多特性跟HBase很像,它支持索引键的查询和修改。...Cloudera曾经想过基于Hbase进行修改,然而结论是对HBase的改动非常大,Kudu的数据模型和磁盘存储都与Hbase不同。
二 性能调优篇 1 kudu性能调优和报错方案解决 报错一:tablet初始化时长很久 解决方案: 升级版本到kudu1.6.0以上版本 .参考:https://kudu.apache.org/...Minitump可以通过电子邮件发送给Kudu开发人员或附加到JIRA,以帮助Kudu开发人员调试崩溃。...报错六:impala操作kudu超时 解决方案:kudu_operation_timeout_ms = 1800000 添加描述 报错七:CDH安装kudu设置master 解决方案: --master_addresses...kudu表如果不新建的情况下,在表中增加字段,对数据是没有影响的,kudu中增加一个字段user_id,之前impala已经和kudu进行关联操作了, impala读取kudu的数据按照之前的所定义的字段读取的...; import org.apache.kudu.Schema; import org.apache.kudu.Type; import org.apache.kudu.client.*; import
,类似HBase数据库,由Cloudera公司开发,目的取代HDFS和HBase框架, HDFS文件系统:批量加载分析,尤其parquet列式存储 HBase数据库:对海量数据随机读写,速度比较快...Kudu诞生之初(设计目标)就是为取代HDFS文件系统和HBase数据库,既能够实现随机读写,又能够批量加载分析,所以Kudu属于HBase和HDFS折中产品。...HBase,能不能一个框架存储引擎实现2个功能:Kudu。 ...从上图可以看出,KUDU 是一个折中的产品,在 HDFS 和 HBase 这两个偏科生中平衡了随机读写和批量分析的性能。...1)、范围分区:Range Partitioning,类似HBase表划分 按照字段值范围进行分区,HBase 就采用了这种方式。
领取专属 10元无门槛券
手把手带您无忧上云