当使用Flume遇到内存溢出等异常时,可参照以下调整你的jvm参数即可.
可用 ps -aux | grep flume查看Flume进程使用了多少内存.
一、 vi bin/flume-ng
修改JAVA_OPTS="-Xmx20m" (默认为20m) 这段是head的最大值 (涉及jvm知识请自补),自行跳调大尝试,但是别超过你的物理内存.
二、 vi flume-env.sh(常用修改)
解开配置# export JAVA_OPTS="-Xms100m -Xmx2000m -Dcom.sun.management.jmxremote"
xms是启动的head值,xmx最最大值,启动值不建议调太大,最大值可以根据物理机器的内存分配情况调大.
注意:-Xmx与-Xms最好设置一致(或者设置的差距不要太大),减少内存抖动带来的性能影响,如果设置不一致容易导致频繁fullgc。注意:-Xmx与-Xms最好设置一致,减少内存抖动带来的性能影响,如果设置不一致容易导致频繁fullgc。
拓展:Flume->Kafka->FLume->HDFS->Hive 这种架构方式是为了削峰
我们都知道服务器的处理资源是有限的,所以出现峰值的时候,很容易导致服务器宕机,用户无法访问的情况出现。
如果写入文件过量造成NameNode宕机。那么调高Kafka的存储大小,控制从Kafka到HDFS的写入速度。高峰期的时候用Kafka进行缓存,高峰期过去数据同步会自动跟上。