一 对比

存储空间对比:

查询性能对比:

二 设计方案

将数据拆分为:历史数据(hdfs+parquet+snappy)+ 近期数据(kudu),可以兼具各种优点:

  • 1)整体低于10%的磁盘占用;
  • 2)更少的查询耗时;
  • 3)近期数据实时更新;
  • 4)近期数据可修改;
  • 5)kudu集群重启时间降低90%;
  • 6)impala并行scan:scan kudu + scan hdfs;

三 改造方案

利用视图

create view v_table as
select * from parquet_table where dt < 'seven days ago'
union all
select * from kudu_table where dt >= 'seven days ago';

client将kudu_table替换为v_table即可;

四 其他

kudu问题:

  • flume kudu sink使用kudu client版本过低,有bug,不会自动刷新token,7天之后会因为token失效报错;升级kudu client后可以解决bug,但是kudu client和flume使用的guava库版本有冲突;
  • 按dt分区后tablet数量过多,磁盘占用空间过大,内存占用过多;
  • 因为tablet数量多,磁盘空间大,每次kudu集群重启需要10-20分钟做initialize;
  • kudu内存占用过多时会拒绝写操作;
  • 使用kudu作为单一数仓同时支持写入和查询,很容易相互影响,大量写入影响查询,大量查询影响写入,会导致数据丢失或者查询慢;
  • kudu支持更新,一个delete或者drop就可以把所有数据全部删掉,作为单一数仓比较危险;

【原创】大叔经验分享(63)kudu vs parquet的更多相关文章

  1. 【原创】经验分享:一个小小emoji尽然牵扯出来这么多东西?

    前言 之前也分享过很多工作中踩坑的经验: 一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移? [原创]经验分享:一个Content-Length引发的血案(almost.. ...

  2. 【原创】大叔经验分享(53)kudu报错unable to find SASL plugin: PLAIN

    kudu安装后运行不正常,master中找不到任何tserver,查看tserver日志发现有很多报错: Failed to heartbeat to master:7051: Invalid arg ...

  3. 【原创】大叔经验分享(62)kudu副本数量

    kudu的副本数量是在表上设置,可以通过命令查看 # sudo -u kudu kudu cluster ksck $master ... Summary by table Name | RF | S ...

  4. 【原创】大叔经验分享(61)kudu rebalance报错

    kudu rebalance命令报错 terminate called after throwing an instance of 'std::regex_error' what(): regex_e ...

  5. 【原创】大叔经验分享(60)hive和spark读取kudu表

    从impala中创建kudu表之后,如果想从hive或spark sql直接读取,会报错: Caused by: java.lang.ClassNotFoundException: com.cloud ...

  6. 【原创】大叔经验分享(59)kudu查看table size

    kudu并没有命令可以直接查看每个table占用的空间,可以从cloudera manager上间接查看 CM is scrapping and aggregating the /metrics pa ...

  7. 【原创】大叔经验分享(58)kudu写入压力大时报错

    kudu写入压力大时报错 19/05/18 16:53:12 INFO AsyncKuduClient: Invalidating location fd52e4f930bc45458a8f29ed1 ...

  8. 【原创】大叔经验分享(55)spark连接kudu报错

    spark-2.4.2kudu-1.7.0 开始尝试 1)自己手工将jar加到classpath spark-2.4.2-bin-hadoop2.6+kudu-spark2_2.11-1.7.0-cd ...

  9. 【原创】大叔经验分享(54)flume kudu sink运行一段时间kudu client报错

    flume kudu sink运行一段时间报错: 19/05/05 10:15:56 WARN client.ConnectToCluster: Error receiving a response ...

随机推荐

  1. CentOS 7服务器下Nginx安装配置

    一.安装编译工具及库文件 $ yum -y install make zlib zlib-devel gcc gcc-c++ libtool openssl openssl-devel pcre pc ...

  2. vs2017中信号与槽连接

    在vs2012里和在Qt Creator里添加信号和槽不一样,这里把两种环境下怎么添加详细说明一下 1.在vs2012里添加信号和槽 新建一个qt的项目QtDemo 在qtdeom.h里添加槽 pri ...

  3. linux下如何将dts转换成dtb?

    答: 使用dtc工具,如: <kernel source code dir>/scripts/dtc/dtc -I dts -O dtb -o <dtb filename> & ...

  4. Matlab获取文件夹下所有文件名并将数据按矩阵赋值给变量

    一.获取一个文件夹下所有文件名: fileFolder=fullfile('D:\MATLAB\bin\trc'); dirOutput=dir(fullfile(fileFolder,'*.trc' ...

  5. jQuery常用操作部分总结

    注意:$(“.xxx”)   类,一定要在前面加上点callback为完成后执行的函数名称隐藏显示:hide()   show()淡入淡出:fadeIn()  fadeOut()  fadetoggl ...

  6. easyUI之LinkButton(按钮)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  7. MediaPlayer 播放视频的方法

    MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.reset();//重置为初始状态 mediaPlayer.setAudioStrea ...

  8. document.onselectstart=function(){return false;} 引起的拖动问题

    在网页中拖动时,会引起某些文字或一些内容被选中,导致网页中蓝蓝的一片,视觉效果很差,所以我加了个1.document.onselectstart=function(){return false;}或者 ...

  9. 一百一十四:CMS系统之图形验证码生成

    安装Pillow库,用于生成图形验证码:pip install Pillow 字体文件来源 生成一个验证码图片 import randomimport stringfrom PIL import Im ...

  10. 【OSS】工具类

    package com.aliyun.oss.demo; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSSClient; ...