结构化数据存储在Hadoop生态系统中,分为静态数据和动态数据两类。静态数据指的是需要进行数据分析的数据,这种分析针对的数据量一般很大,例如:统计全年每个地区总营业额。动态数据指的是数据需要实时动态插入、更新、读取的数据。例如业务系统中海量用户基本信息的存储。
对于大批量数据分析场景,为了便于数据分析,Hadoop生态系统中一般将数据存储在HDFS中,HDFS设计的初衷就是一次写入多次读取,HDFS适合高吞吐连续访问数据场景。只支持数据的追加,不支持数据的更新修改,即不支持随机写。HDFS对于数据的随机读写支持不友好。
一些数据处理场景下,需要低延迟、高效的读取特定数据,我们可以将数据存储在HBase中,HBase支持数据的低延迟随机读写(HBase数据存储在HDFS中,本质上还是追加写。基于版本号和定期合并HFile实现随机读写,默认返回最大的时间戳数据)。HBase中以Rowkey为索引,对于需要大批量读取数据分析的场景,吞吐量不如HDFS。
例如我们有一个业务系统,有如下要求:
以上业务系统,既要求对数据进行随机读写,又要求对数据进行批量分析操作,针对以上业务场景我们就可以选择Kudu。
Kudu是Cloudera在2015年9月开源的分布式数据存储引擎,其结合了HDFS和HBase的优势,可以同时提供高效的随机访问以及数据扫描能力。Kudu支持数据的实时插入和分析,为实时的OLAP计算提供了另外一种选择。
Kudu的随机读写速度和HBase相似,但是达不到HBase随机读写性能,Kudu批量查询数据性能媲美HDFS parquet,但是比HDFS批量查询慢,所以kudu更像是HDFS与HBase的一个折中选择,目前国内小米、网易等公司在用。
Kudu适用于以下场景:
?
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。