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。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树