天天看点

kudu数据刷新策略

kudu数据刷新策略

AUTO_FLUSH_SYNC(默认):

所有的写入都只有在自动刷新到服务器后才会返回。不会发生批处理,在这种模式下,Flush()函数不会产生任何效果,因为每个应用程序在返回之前已经刷新了缓冲区。

AUTO_FLUSH_BACKGROUND:

每一个应用的KuduSession.apply()函数都会返回的非常快,但是写操作会被发送到后台进程,可能与来自同一会话的其他写入一起进行批处理。如果没有足够的缓冲空间,KuduSession.apply()会阻塞,缓冲空间不可用。因为写入操作是在后台应用进行的的,因此任何错误都将存储在一个会话本地缓冲区中。注意:这个模式可能会导致数据插入是乱序的,这是因为在这种模式下,多个写操作可以并发地发送到服务器。

从官方说明,还是一个bug,https://issues.apache.org/jira/browse/KUDU-1767https://issues.apache.org/jira/browse/KUDU-1767

MANUAL_FLUSH:

每一个应用的KuduSession.apply()函数都会返回的非常快,但是写操作不会发送,直到用户使用flush()函数,如果缓冲区超过了配置的空间限制,KuduSession.apply()函数会返回一个错误。

参数:

kudu数据刷新策略
kudu数据刷新策略

实际:

根据参数的大小。可以产生不同的效率。(测试中,使用手动刷新后,性能提升了100倍)

AUTO_FLUSH_SYNC is start!

AUTO_FLUSH_SYNC花费毫秒数: 202098

AUTO_FLUSH_BACKGROUND is start!

AUTO_FLUSH_BACKGROUND花费毫秒数: 3444

MANUAL_FLUSH is start!

MANUAL_FLUSH花费毫秒数: 4564