【知识分享】Automerge用法及注意事项
2022-10-27 19:20:11
119次阅读
0个评论
功能介绍
Automerger 用于map端控制map task的数目,它根据每个partition(数据块)所在的位置及大小将多个partitions交给一个task去完成。
控制参数
总开关: ngmr.partition.automerge 默认false
ngmr.partition.mergesize 默认3,控制额外merge的数据块个数
ngmr.partition.mergesize.mb 默认8 (M),控制额外merge的数据块的大小
如果 ngmr.partition.mergesize.mb 为-1, 则不关心数据块的大小。如果数据块足够多,会将 (1 + ngmr.partition.mergesize) 合并到一个task去做。
如果 ngmr.partition.mergesize.mb 不为-1,则额外merge的数据块的大小超过 ngmr.partition.mergesize.mb 时,停止merge。
注意事项
1)只能获取base文件的size,如果一个事务表还没有base,则size为0,ngmr.partition.mergesize.mb不起作用,起作用的是ngmr.partition.mergesize
2)merge之前不检查自身大小,会导致将两个size都很大的数据块合并在一起,导致数据倾斜。
3)为了保证数据的locality,automerge只会将在相同节点的数据块合并。当集群比较大时,数据比较分散,能够合并的数据块会受到限制。
从TDH5.X起,可以用inceptor.mergecube缓解
Automerger 用于map端控制map task的数目,它根据每个partition(数据块)所在的位置及大小将多个partitions交给一个task去完成。
控制参数
总开关: ngmr.partition.automerge 默认false
ngmr.partition.mergesize 默认3,控制额外merge的数据块个数
ngmr.partition.mergesize.mb 默认8 (M),控制额外merge的数据块的大小
如果 ngmr.partition.mergesize.mb 为-1, 则不关心数据块的大小。如果数据块足够多,会将 (1 + ngmr.partition.mergesize) 合并到一个task去做。
如果 ngmr.partition.mergesize.mb 不为-1,则额外merge的数据块的大小超过 ngmr.partition.mergesize.mb 时,停止merge。
注意事项
1)只能获取base文件的size,如果一个事务表还没有base,则size为0,ngmr.partition.mergesize.mb不起作用,起作用的是ngmr.partition.mergesize
2)merge之前不检查自身大小,会导致将两个size都很大的数据块合并在一起,导致数据倾斜。
3)为了保证数据的locality,automerge只会将在相同节点的数据块合并。当集群比较大时,数据比较分散,能够合并的数据块会受到限制。
从TDH5.X起,可以用inceptor.mergecube缓解
0
0