个人GitHub地址 :https://github.com/LinMingQiang
Kudu的背景
Hadoop中有很多组件,为了实现复杂的功能通常都是使用混合架构,
- Hbase:实现快速插入和修改,对大量的小规模查询也很迅速
- HDFS/Parquet + Impala/Hive:对超大的数据集进行查询分析,对于这类场景, Parquet这种列式存储文件格式具有极大的优势。
- HDFS/Parquet + Hbase:这种混合架构需要每隔一段时间将数据从hbase导出成Parquet文件,然后用impala来实现复杂的查询分析
以上的架构没办法把复杂的实时查询集成在Hbase上
Kudu的设计
- Kudu是对HDFS和HBase功能上的补充,能提供快速的分析和实时计算能力,并且充分利用CPU和I/O资源,支持数据原地修改,支持简单的、可扩展
的数据模型。 - Kudu的定位是提供”fast analytics on fast data”,kudu期望自己既能够满足分析的需求(快速的数据scan),也能够满足查询的需求(快速的随机访问)。它定位OLAP和少量的OLTP工作流,如果有大量的random accesses,官方建议还是使用HBase最为合适
Kudu的结构
其实跟Hbase是有点像的
Kudu的使用
1:支持主键(类似 关系型数据库)
2:支持事务操作,可对数据增删改查数据
3:支持各种数据类型
4:支持 alter table。可删除列(非主键)
5:支持 INSERT, UPDATE, DELETE, UPSERT
6:支持Hash,Range分区
进入Impala-shell -i node1ip
具体的CURD语法可以查询官方文档,我就不一一列了
http://kudu.apache.org/docs/kudu_impala_integration.html
建表
Create table kudu_table (Id string,Namestring,Age int,
Primary key(id,name)
)partition by hash partitions 16
Stored as kudu;
插入数据
Insert into kudu_table
Select * from impala_table;
注意
以上的sql语句都是在impala里面执行的。Kudu和hbase一样都是nosql查询的,Kudu本身只提供api。impala集成了kudu。 <