Flume监控及参数调优

来源:互联网 发布:网络群发软件 编辑:程序博客网 时间:2024/06/11 21:36

flume监控

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

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


flume各部分参数含义

flume架构详情

  • batchData的大小见参数:batchSize
  • PutList和TakeList的大小见参数:transactionCapactiy
  • Channel总容量大小见参数:capacity

flume错误汇总

  1. 错误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. 错误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的参数capacitytransactionCapacity调大,比如分别由之前的10000、1000,增大到100000、10000。

  3. 错误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
1 0
原创粉丝点击