您的位置:首页 > 运维架构

Flume监控及参数调优

2016-06-25 22:42 447 查看

flume监控

在flume传输数据的过程中,打开监控,查看CPU、内存等的变化情况也挺有意思的,见JConsole&VisualVM监控总结

另外,当报的错莫名奇妙时,可以尝试调整参数,监控不同效果,往往能快速确定最佳参数,解决问题。

flume各部分参数含义



batchData的大小见参数:
batchSize


PutList和TakeList的大小见参数:
transactionCapactiy


Channel总容量大小见参数:
capacity


flume错误汇总

错误1–内存溢出

错误描述

java.lang.OutOfMemoryError: Java heap space


解决办法

解决办法:调整flume启动配置文件–flume-env.sh里面的java参数,将
-Xms1024m -Xmx2048m
值增大,两项参数分别表示最小和最大java堆大小。更多相关参数请见Heap Tuning Parameters

注:flume安装后,conf目录下包含flume-env.sh的模板文件,使用时,将该模板复制一份,修改成适合自己主机的配置,flume启动时会自动读取该配置文件。也可以在flume的启动命令中添加
-c flume-config-path
参数,指定配置文件路径。

错误2–容量分配不足

错误描述

Space for commit to queue couldn't be acquired. Sinks are likely not keeping up with sources, or the buffer size is too tight


解决办法

将channel的参数
capacity
transactionCapacity
调大,比如分别由之前的10000、1000,增大到100000、10000。

错误3–batchSize过小

错误描述

16/06/14 20:11:36 ERROR jdbc.AbstractJDBCSink: Failed to commit transaction. Transaction rolled back.
org.apache.flume.ChannelException: Take list for MemoryTransaction, capacity 100 full, consider committing more frequently, increasing capacity, or increasing thread count
at org.apache.flume.channel.MemoryChannel$MemoryTransaction.doTake(MemoryChannel.java:96)
at org.apache.flume.channel.BasicTransactionSemantics.take(BasicTransactionSemantics.java:113)


解决办法

将sink的参数
batchSize
调小,比如由1000改为100。

flume注意点

flume接收到的数据以tab分开,日期必须是时间戳。比如输出当前时间戳:
import time

print str(int(time.time()))


若输出的字符串为空(即打印到屏幕上无任何显示),flume会因读取不到数据而报错,故不要将空字符串打印输出,比如可以将其赋值为
null
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  flume java 内存溢出 heap