kudu性能调优

课程链接:http://edu.51cto.com/course/15174.html

1、Kudu Tablet Server Maintenance Threads
解释:Kudu后台对数据进行维护操作,如写入数据时的并发线程数,一般设置为4,官网建议的是数据目录的3倍

参数:maintenance_manager_num_threads

2、Kudu Tablet Server Block Cache Capacity Tablet
解释:分配给Kudu Tablet Server块缓存的最大内存量,建议是2-4G

参数:block_cache_capacity_mb

3、Kudu Tablet Server Hard Memory Limit Kudu
解释:Tablet Server能使用的最大内存量,有多大,设置多大,tablet Server在批量写入数据时并非实时写入磁盘,而是先Cache在内存中,在flush到磁盘。这个值设置过小时,会造成Kudu数据写入性能显著下降。对于写入性能要求比较高的集群,建议设置更大的值(一般是机器内存的百分之80

参数:memory_limit_hard_bytes

补充:

## Cgroup 内存软限制,这个限制并不会阻止进程使用超过限额的内存,只是在系统内存不足时,会优先回收超过限额的进程占用的内存,使之向限定值靠拢,当进程试图占用的内存超过了cgroups的限制,会触发out of memory,导致进程被kill掉
memory.soft_limit_in_bytes:
## Cgroup 内存硬限制,限制该组中的进程使用的物理内存总量不超过设定值
memory.limit_in_bytes:

报错:Service unavailable: Soft memory limit exceeded (at 96.35% of capacity)

4、建议每个表50columns左右,不能超过300个

5、hash分区数量*range分区数量不能超过60个(1.7.0版本之后没限制了)

6、设置block的管理器为文件管理器(默认是日志服务器)
解释:并非所有文件系统格式都需要设置该选项。ext4、xfs格式支持hole punching(打孔),所以不需要设置block_manager=file,但是ext3 格式需要。可以通过df -Th命令来查看文件系统的格式。

参数:--block_manager=file

7、设置ntp服务器的时间误差不超过20s(默认是10s)

参数:max_clock_sync_error_usec=20000000

8、设置rpc的连接时长(默认是3s,建议不要设置)

参数:--rpc_negotiation_timeout_ms=300000

9、设置rpc一致性选择的连接时长(默认为1s,建议不要设置)

参数:--consensus_rpc_timeout_ms=1000

10、记录kudu的crash的信息
解释:

  • Kudu在Kudu遇到崩溃时,使用Google
    Breakpad库来生成minidump。这些minidumps的大小通常只有几MB,即使禁用了核心转储生成,也会生成,生成minidumps只能在Linux上建立。
  • minidump文件包含有关崩溃的进程的重要调试信息,包括加载的共享库及其版本,崩溃时运行的线程列表,处理器寄存器的状态和每个线程的堆栈内存副本,以及CPU和操作系统版本信息。
  • Minitump可以通过电子邮件发送给Kudu开发人员或附加到JIRA,以帮助Kudu开发人员调试崩溃。为了使其有用,开发人员将需要知道Kudu的确切版本和发生崩溃的操作系统。请注意,虽然minidump不包含堆内存转储,但它确实包含堆栈内存,因此可以将应用程序数据显示在minidump中。如果机密或个人信息存储在群集上,请不要共享minidump文件。
参数:
	--minidump_path=minidumps              
	--max_minidumps=9

(默认是在设置的log目录下生成minidumps目录,里边包含最多9个以dmp结尾的文件,无法设置为空值,需要注意的是如果自定义minidump文件,在master不能启动的情况下,需要将该目录中的文件删除)

11、Stack WatchLog
解释:每个Kudu服务器进程都有一个称为Stack Watchdog的后台线程,它监视服务器中的其他线程,以防它们被阻塞超过预期的时间段。这些跟踪可以指示操作系统问题或瓶颈存储。通过WARN日志信息的跟踪(Trace)可以用于诊断由于Kudu以下的系统(如磁盘控制器或文件系统)引起的根本原因延迟问题。

12、kudu表如果不新建的情况下,在表中增加字段,对数据是没有影响的
参考:
http://blog.csdn.net/weixin_39478115/article/details/79036390

13、cdh设置多master
在这里插入图片描述

参数:--master_addresses=hadoop4:7051,hadoop5:7051,hadoop6:7051

14、kudu出现启动速度特别慢
解决办法:

1、取消所有配置参数(除了资源、时间同步)
2、升级版本到kudu1.6.0
3、client必须停止(client不占用io的情况,3台机器,每台机器60G,127分区数量,启动速度3分钟)
4、查看io使用情况 iostat -d -x -k 1 200

    参考:
    http://blog.csdn.net/weixin_39478115/article/details/78878958

15、单hash分区最大是60

16、安装kudu过程中,会要求CPU支持ssc4.2指令集,但是我们的虚拟机cpu没有这个执行集,所以无法安装

17、设置client长连接过期时间

参数:--authn_token_validity_seconds=12960000(150天)

注意:设置到tserver的配置文件中

18、tserver和master的wal和data目录要分隔(或者是目录设置为lvm卷轴)
原因:wal目录只能设置为1个

参数:--fs_wal_dir_reserved_bytes

解释:
Number of bytes to reserve on the log directory filesystem for non-Kudu usage. The default, which is represented by -1, is that 1% of the disk space on each disk will be reserved. Any other value specified represents the number of bytes reserved and must be greater than or equal to 0. Explicit percentages to reserve are not currently supported
用于非kudu都使用的日志目录文件系统的字节数,默认情况下是-1,每个磁盘上的磁盘空间的1%将被保留,指定的任何其他值表示保留的字节数,必须大于或等于0。

19、设置用户权限,能移动tablet

参数:--superuser_acl=*

20、说明文档
          http://kudu.apache.org/releases/1.5.0/docs/known_issues.html

21、tserver宕掉后,5分钟后没有恢复的情况下,该机器上的tablet会移动到其他机器

参数:--follower_unavailable_considered_failed_sec=300

22、超过参数时间的历史数据会被清理,如果是base数据不会被清理。而真实运行时数据大小持续累加,没有被清理。

参数:--tablet_history_max_age_sec=900
  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 要解决Flink写入Kudu性能低的问题,可以考虑以下几点: 1. 优化Flink的作业设置:可以通过调整Flink作业的并行度和缓冲区大小来提高写入性能。 2. 优化Kudu表的设计:可以通过合理设计Kudu表的分区键和索引来提高写入性能。 3. 使用Kudu异步写入API:可以通过使用Kudu的异步写入API来提高写入性能。 4. 增加Kudu集群的资源:如果Kudu集群的资源不足,可以通过增加机器数量或者升级机器配置来提高性能。 希望这些建议能帮助你解决Flink写入Kudu性能低的问题。 ### 回答2: Flink 是一款快速、可靠的流式处理框架,但在将数据写入 Kudu 时可能会遇到性能低的问题。以下是解决这个问题的一些建议: 1. 增加并行度:增加 Flink 作业的并行度可以提高写入 Kudu 的性能。可以通过调整 Flink 作业的并行度参数,使多个任务并行执行,以充分利用计算资源。 2. 批量写入:将 Flink 的输出数据批量写入 Kudu,而不是逐条写入。可以在 Flink 中缓冲数据,当数据达到一定大小或者一定时间间隔时批量写入 Kudu,以减少写入操作的开销。 3. 调整 Kudu 配置:根据具体场景和硬件资源,适当调整 Kudu 的配置参数,例如副本数、分片数等,以优化 Kudu 的性能。 4. 使用异步写入:Flink 可以使用异步写入来提高写入 Kudu 的性能。可以设置 Flink 的异步方式,将数据写入 Kudu 的缓冲队列,然后异步写入 Kudu,以提高吞吐量。 5. 设置适当的参数:在 Flink 中,可以设置一些参数来优化 Kudu 写入的性能,例如调整批处理大小、缓冲时间等。 6. 数据分区:将数据按照某种规则进行分区,将不同分区的数据写入不同的 Kudu 表,以减轻单表写入的压力,提升性能。 总之,针对 Flink 写入 Kudu 性能低的问题,我们可以通过增加并行度、批量写入、调整配置、使用异步写入、设置适当的参数和数据分区等方法来提高性能。需要根据具体的场景和需求进行调优,以达到较好的性能表现。 ### 回答3: 要解决Flink写入Kudu性能低的问题,可以采取以下措施: 1. 调整Flink和Kudu的并发度:通过调整Flink和Kudu的并发度来提高写入性能。可以增加Flink作业的并发度,使其能够同时处理更多的数据,并将写入操作分散到多个Kudu服务器上,从而提高写入性能。 2. 使用批量写入:使用批量写入的方式可以减少网络开销和资源消耗,提高写入性能。可以在Flink中将数据累积到一定量后再一次性写入Kudu,而不是一条一条地写入。如果需要实时写入,可以设置适当的批量写入间隔。 3. 调优Kudu的配置:可以根据实际情况调优Kudu的配置,以提高写入性能。例如,可以调整Kudu的服务器配置、调整写入相关的参数(如WalReplicationFactor、FlushMode等),或者调整Kudu表的分布和分区策略,以提高写入性能。 4. 使用异步写入:可以使用异步写入的方式将写入操作提交到Kudu客户端的线程池中进行处理,从而减少主线程的等待时间,提高写入性能。可以在Flink中使用异步IO或者自定义异步写入逻辑来实现。 5. 避免频繁的连接和断开:频繁的连接和断开会增加额外的开销和延迟,降低写入性能。可以考虑在Flink中使用连接池来管理Kudu连接,或者保持长连接的方式来减少连接和断开的次数,从而提高写入性能。 总之,通过调整Flink和Kudu的并发度、使用批量写入、调优Kudu的配置、使用异步写入和避免频繁的连接和断开等方式,可以有效解决Flink写入Kudu性能低的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值