Flume坑

转载:https://jiayu0x.com/2016/12/27/flume-summary/?utm_medium=hao.caibaojian.com&utm_source=hao.caibaojian.com

Flume的坑

flume HTTP Source 的 JSON 数据:

必须是 Array 形式(用方括号括起来),即使 Array 里只有 1 个元素(每个元素到了 Flume 那儿就代表一个 Event),在 Python 里就要用 dict 外面嵌套 list 或者 tuple 生成 JSON Array;

JSON Array 里每个元素必须由 headers 和 body 两个 field 构成;

JSON Array 中元素的 headers 的值是 JSON Object(具体可以自定义),body 的值必须是字串(JSON String),而不能是其他形式(JSON Object/JSON Array等,对应 Python 中的 dict/list/tuple 等)。

flume异常中断,导致hdfs文件未能关闭

hadoop fsck / -openforwrite

使用以上命令查看文件夹的健康状态,如果有未能关闭的文件,删除它(目前只有这个办法)

flume小文件特别多

调整文件滚动时间或者大小

LEADER_NOT_AVAILABLE` Error

Kafka Sink ,顾名思义,即把 Kafka (集群或单个服务器)当做 Flume 的数据接收端(消费者),其中有一个配置项是配置 Kafka 的服务器:

AGENT_NAME.sinks.malwrK.kafka.bootstrap.servers = serv1:PORT[,serv2:PORT,serv3:PORT...]

这项配置中,如果只指定单个的 Kafka 服务器地址,Flume Agent 会正常运行,但如果把 Kafka 集群里的多个服务器地址都写上,并且Kafka的默认配置不修改,则会报以下错误:

WARN Error while fetching metadata with correlation id 39 : {4-3-16-topic1=LEADER_NOT_AVAILABLE}

并且数据无法正常发送到 Kafka 集群。该错误的意思是集群中的服务器,没有一个可用的 LEADER,导致数据无法正常 Fetch。那么解决方法也很简单,在 Kafka 集群的每个服务器 server.properties 配置文件中,开启(取消注释)以下配置,并把配置项的值改成统一指定的一台 Kafka 服务器做 LEADER

advertised.listeners=PLAINTEXT://your.host.name:9092

你可能感兴趣的:(Flume坑)