• Flume项目经验


    1.Channel的选择

    memory channel 速度快,但可能会造成数据丢失

    file channel 不会造成数据丢失,安全性高,但速度相对较慢

    也可以选择kafka channel ,省去了sink 阶段,提高传输效率

    2.FileChannel 优化

    通过配置 dataDirs 指向多个路径,每个路径对应不同的硬盘,增大 Flume 吞吐量。
     
    checkpointDir 和 backupCheckpointDir 也尽量配置在不同硬盘对应的目录中,
    保证checkpoint 坏掉后,可以快速使用 backupCheckpointDir 恢复数据
     
     
    3.Hdfs Sink

    使用默认配置,hdfs sink 会产生小文件,小文件影响:

      元数据层面:每个小文件都有一份元数据,其中包括文件路径,文件名,所有者,所属
    组,权限,创建时间等,这些信息都保存在 Namenode 内存中。所以小文件过多,会占用
    Namenode 服务器大量内存,影响 Namenode 性能和使用寿命
     
      计算层面:默认情况下 MR 会对每个小文件启用一个 Map 任务计算,非常影响计算性
    能。同时也影响磁盘寻址时间。
     
    修改 hdfs.rollInterval=3600,hdfs.rollSize=134217728,hdfs.rollCount =0 几个参数综
    合作用,效果如下:
    (1)文件在达到 128M 时会滚动生成新文件
    (2)文件创建超 3600 秒时会滚动生成新文件
     
     
    4.Flume内存优化
     
    报错如下:
    ERROR hdfs.HDFSEventSink: process failed
    java.lang.OutOfMemoryError: GC overhead limit exceeded
     
    vim  flume/conf/flume-env.sh
    export JAVA_OPTS="-Xms100m -Xmx2000m -Dcom.sun.management.jmxremote"
    JVM heap 一般设置为 4G 或更高,部署在单独的服务器上(4 核 8 线程 16G 内存)
    每台服务器的 -Xmx 与-Xms 最好设置一致,减少内存抖动带来的性能影响,如果设置不一致容易导
    致频繁 fullgc。
    -Xms 表示 JVM Heap(堆内存)最小尺寸,初始分配;-Xmx 表示 JVM Heap(堆内存)最
    大允许的尺寸,按需分配。如果不设置一致,容易在初始化时,由于内存不够,频繁触发 fullgc。
  • 相关阅读:
    集算器如何优化SQL计算(2)分组
    集算器如何优化SQL计算(1)动态列
    android DOM解析Xml
    ASP.NET 抓取网页内容
    抓取HTML网页数据
    [转]Android的网络与通信
    Android的三种网络通信方式
    Android通过onDraw实现在View中绘图操作
    Android Canvas类介绍
    DatabaseMetaData的用法(转)
  • 原文地址:https://www.cnblogs.com/ldy233/p/13663579.html
Copyright © 2020-2023  润新知