Flume坑

作者: 你值得拥有更好的12138 | 来源:发表于2020-04-11 11:38 被阅读0次

    转载: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坑

          本文链接:https://www.haomeiwen.com/subject/raxymhtx.html