Kudu使用最佳实践以及踩坑记录

Kudu表结构设计最佳实践

1.字段设计

  • 字段数量最好不要超过300个
  • 除主键外,其他字段可以为空
  • 每一个字段均可以设置自己的编码以及压缩方式
  • Kudu1.7.0及其高版本,已经支持Decimal字段类型,适用于金融和特定的算数运算场景

2.主键设计

  • 建表必须包含主键,主键字段必须列在Schema的最前端
  • 建表后,主键无法更改,只能重建表
  • 不支持自增列
  • 主键不能为空,并且不能为boolean/float/double类型
  • 主键的值无法被更新,但是可以被delete后,re-insert
  • 主键即索引,tablet中的所有行都按照主键排序.查询时,对主键指定相等或范围的谓词,Kudu扫描表的时候会过滤掉不满足条件的行

3.分区设计

  • 不允许更改创建后的分区表,但可以添加或删除range分区
  • 分区方式:hash分区,range分区以及组合分区
  • 根据自身业务场景,选择合适的分区方式,让读与写操作在所有tablet server上均匀分布
  • 根据应用查询的语句,设计合理的主键以及分区,保证读取数据时扫描最小的数据集
  • 分区数量的设置,根据官方文档,每个分区的大小尽量控制在4G左右(单个tablet server最大存储8T/管理的tablets数量最大2000个≈4G),如果表数据量未来估算在40G左右,那么分区数量可以设置10个

Impala与Kudu Client场景选择最佳实践

  • 就查询来说,Impala的查询速度要快于Kudu Client的scan数据扫描,建议使用Impala
  • KuduClient原声API中update/delete/upsert只能根据主键操作,如果需要其他条件则需要查询一下,拿到主键再进行操作,所以不如impala写sql方便,如果同时使用impala和kuduclient最好做资源隔离

Kudu API性能优化

  • 尽量采用MANUAL_FLUSH,性能最好,如果有写入Kudu错误,flush()函数会抛出异常
  • 在性能要求不高的情况下,AUTO_FLUSH_SYNC也是一个很好的选择
  • 仅仅在测试环境下使用 AUTO_FLUSH_BACKGROUND, 不考虑异常处理时候代码可以很简单, 性能也很好. 在生产环境下不推荐使用的原因是: 插入数据可能会是乱序的, 一旦考虑捕获异常代码就很冗长

踩坑记录

  • 时钟服务NTP配置不合理,会导致Kudu服务直接崩溃,建议根据官方的推荐来配置NTP,另外可以通过修改参数max_clock_sync_error_usec值,来提高Kudu对时间偏差的容忍程度
  • 在Impala中对Kudu表进行alter table A rename to B,只会更改impala的元数据,而不会更改任何Kudu的元数据,可以通过先修改Impala元数据alter table A rename to B 后,再修改Kudu元数据alter table A set TBLPROPERTIES(’kudu.table_name’=’B’)
  • 没有rebalance功能,需要手动做balance
  • 在Kudu1.6.0之前,如果tablet server的某个磁盘坏了,那么整个tablet server就要重新format了,如果你的集群版本大于等于1.6.0并且损坏的盘并非WAL/Meta盘,那么你可以通过kusu fs update_dirs
  • 关于range分区踩坑:一
    kudu表信息.png

    再看一下设置range分区信息,注意这里只设置了aa-cc的range分区
    range分区信息

接着再看一下源表的数据量和部分数据


原始数据.png
原始数据信息.png

最后看看落盘到kudu表里的信息

落盘数据.png

总结:range分区没有覆盖的数据不会落盘到kudu表中,且kudu表在upsert时根据主键自动判断是update操作还是insert操作,主键重复的数据进行update操作

  • 关于range分区踩坑:二
    第二个场景是关于分区的数据类型对应关系的小坑,先看一下设置的分区信息
int分区.png

理论上这样分区已经对id数据进行了全覆盖,但是实际上落盘数据为0.

2019-08-31_104627.png

总结:在做数据导入时,主键的数据类型要一一对应,若数据类型不对应,数据无法落盘(oracle的number类型进行数据类型匹配时要特别注意)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • 平静地享受着冬天的阳光 温暖 和谐 安静 忘却来往的行人 忘却身旁的嘈杂 忘却周围的一切 以及他们共同的狗 周围的...
    彭淞2024阅读 175评论 0 5
  • 刺激,目标,改变,提升,收获; 新的刺激,目标..........
    187b49ed9d99阅读 66评论 1 0
  • A state of anarchy exists when a country has no effective...
    Alexandear阅读 1,053评论 0 3
  • 大学里的老师总得来说比中学要更有趣些,大抵怎么有趣法,不过就是他们喜欢吹水。把自己的阅历经历加一点名人名言...
    狄金森阅读 169评论 0 0
  • 儿子问我,为什么有人觉得月亮是奶酪做的啊?我说人们其实有两个世界,一个是现实的世界,一个是想象的世界。在想象的世界...
    Alpha_Omega阅读 368评论 0 0