EMR Flume支持多種服務啟動方式,本文介紹通過E-MapReduce(簡稱EMR)控制臺修改Flume配置并啟動Flume Agent,繼而實時同步HDFS Audit日志至HDFS。

前提條件

已創建DataLake集群,并且選擇了Flume服務,詳情請參見創建集群

操作步驟

  1. 進入集群服務頁面。
    1. 登錄EMR on ECS控制臺
    2. 在頂部菜單欄處,根據實際情況選擇地域和資源組
    3. 集群管理頁面,單擊目標集群操作列的集群服務
  2. 集群服務頁面,單擊FLUME服務區域的配置
  3. 配置core-1-1節點的Flume Agent并保存配置。
    以下配置項請遵循開源Flume內容,詳情請參見Flume
    1. 配置頁面,單擊flume-conf.properties頁簽。
    2. 在上方的下拉列表中選擇獨立節點配置core-1-1
    3. 請根據實際情況修改參數flume-conf.properties中的值。
      default-agent.sinks = default-sink
      default-agent.sources = default-source
      default-agent.channels = default-channel
      default-agent.sinks.default-sink.type = hdfs
      default-agent.sinks.default-sink.channel =  default-channel
      default-agent.channels.default-channel.type = file
      default-agent.sources.default-source.type = avro
      default-agent.sinks.default-sink.hdfs.path = hdfs://master-1-1:9000/path
      default-agent.sinks.default-sink.hdfs.fileType = DataStream
      default-agent.sinks.default-sink.hdfs.rollSize = 0
      default-agent.sinks.default-sink.hdfs.rollCount = 0
      default-agent.sinks.default-sink.hdfs.rollInterval = 86400
      default-agent.sinks.default-sink.hdfs.batchSize = 51200
      default-agent.sources.default-source.bind = 0.0.0.0
      default-agent.sources.default-source.port = ****
      default-agent.sources.default-source.channels =  default-channel
      default-agent.channels.default-channel.transactionCapacity = 10000
      default-agent.channels.default-channel.dataDirs = ****
      default-agent.channels.default-channel.checkpointDir = ****
      default-agent.channels.default-channel.capacity = 1000000
      參數 描述
      default-agent.sinks 指定所有Sinks名稱。例如,default-sink。
      default-agent.sources 指定所有Sources名稱。例如,default-source。
      default-agent.channels 指定所有Channels名稱。例如,default-channel。
      default-agent.sinks.default-sink.hdfs.path HDFS路徑。
      • 高可用集群:例如hdfs://emr-cluster/path
      • 非高可用集群:例如hdfs://master-1-1:9000/path
      default-agent.sinks.default-sink.hdfs.fileType 固定值為DataStream。
      default-agent.sinks.default-sink.hdfs.rollSize 當臨時文件達到該參數值時,滾動成目標文件,單位:byte。

      該值設置為0,則表示文件不根據文件大小滾動生成。

      default-agent.sinks.default-sink.hdfs.rollCount 當Event數據達到該數量時,將臨時文件滾動生成目標文件。

      該值設置為0,則表示文件不根據Event數滾動生成。

      default-agent.sinks.default-sink.hdfs.rollInterval 設置多久生成一個新的文件,單位為秒。例如,86400。
      default-agent.sinks.default-sink.hdfs.batchSize 設置每滿多少Event,刷新一次到HDFS。例如,51200。
      default-agent.sinks.default-sink.channel 指定default-sink的Channel名稱。
      default-agent.sources.default-source.bind 綁定的端口。設置為0.0.0.0表示綁定機器所有的接口。
      default-agent.sources.default-source.port 監聽的端口。根據實際情況設置。
      default-agent.sources.default-source.channels 指定default-source的Channel名稱。
      default-agent.channels.default-channel.transactionCapacity Channel在一次事務中傳遞Event的最大數量。默認值為10000。
      default-agent.channels.default-channel.dataDirs Channel存儲Event數據的路徑。

      可選參數,默認路徑~/.flume/file-channel/data

      default-agent.channels.default-channel.checkpointDir 存儲Checkpoint的路徑。

      可選參數,默認路徑~/.flume/file-channel/checkpoint

      default-agent.channels.default-channel.capacity 根據HDFS Roll設置。

      可選參數,默認值為1000000。

    4. 保存配置。
      1. 單擊下方的保存
      2. 在彈出的對話框中,輸入執行原因,單擊確定
  4. 請參見步驟3配置core-1-2節點的Flume Agent并保存配置。
  5. 配置Master節點組的Flume Agent并保存配置。
    以下配置項請遵循開源Flume內容,詳情請參見Flume
    1. 在上方的下拉列表中選擇獨立節點配置master-1-1
    2. 請根據實際情況修改參數flume-conf.properties中的值。
      default-agent.sinks = default-sink k1
      default-agent.sources = default-source
      default-agent.channels = default-channel
      default-agent.sources.default-source.type = taildir
      default-agent.sinks.default-sink.type = avro
      default-agent.sinks.default-sink.channel =  default-channel
      default-agent.channels.default-channel.type = file
      default-agent.sources.default-source.filegroups = f1
      default-agent.sources.default-source.filegroups.f1 = /mnt/disk1/log/hadoop-hdfs/hdfs-audit.log.*
      default-agent.sources.default-source.positionFile = ~/.flume/taildir_position.json
      default-agent.sources.default-source.channels =  default-channel
      default-agent.sources.default-source.batchSize = 2000
      default-agent.sources.default-source.ignoreRenameWhenMultiMatching = true
      default-agent.channels.default-channel.checkpointDir = ****
      default-agent.channels.default-channel.dataDirs = ****
      default-agent.channels.default-channel.capacity = ****
      default-agent.channels.default-channel.transactionCapacity = 2000
      default-agent.sinkgroups = g1
      default-agent.sinkgroups.g1.sinks = default-sink k1
      default-agent.sinkgroups.g1.processor.type = failover
      default-agent.sinkgroups.g1.processor.priority.default-sink = 10
      default-agent.sinkgroups.g1.processor.priority.k1 = 5
      default-agent.sinks.default-sink.hostname = ****
      default-agent.sinks.default-sink.port = ****
      default-agent.sinks.k1.hostname = ****
      default-agent.sinks.k1.port = ****
      default-agent.sinks.default-sink.batch-size = 2000
      default-agent.sinks.k1.batch-size = 2000
      default-agent.sinks.k1.type = avro
      default-agent.sinks.k1.channel = default-channel
      參數 描述
      default-agent.sinks 指定所有Sinks名稱。例如,default-sink k1。
      default-agent.sources 指定所有Sources名稱。例如,default-source。
      default-agent.channels 指定所有Channels名稱。例如,default-channel。
      default-agent.sources.default-source.filegroups.f1 生成日志的路徑。默認路徑為/mnt/disk1/log/hadoop-hdfs/hdfs-audit.log.*
      default-agent.sources.default-source.positionFile 存儲Position File的路徑。

      可選參數,默認路徑為~/.flume/taildir_position.json

      default-agent.channels.default-channel.checkpointDir 存儲Checkpoint的路徑。
      default-agent.channels.default-channel.dataDirs 存儲Event數據的路徑。
      default-agent.channels.default-channel.capacity 根據HDFS Roll設置。
      default-agent.sources.default-source.batchSize 在一個批處理中寫入通道的最大消息數。例如,2000。
      default-agent.channels.default-channel.transactionCapacity 每次Channel從Source獲取事件或推送給Sink的最大事件數。例如,2000。
      default-agent.sources.default-source.ignoreRenameWhenMultiMatching Flume的taildir source在filegroups使用通配符匹配log4j的滾動日志時會有數據重復的問題,設置為true可以避免該問題。
      default-agent.sinkgroups 指定所有sinkgroups名稱。例如,g1。
      default-agent.sinkgroups.g1.sinks 指定sinkgroup g1中所有sink名稱。例如,default-sink k1。
      default-agent.sinkgroups.g1.processor.type 指定sinkgroup g1的sink組邏輯處理類型,取值為:
      • default:默認一對一。
      • failover:故障轉移。
      • load_balance:負載均衡。
      default-agent.sinkgroups.g1.processor.priority.default-sink 指定sinkgroup g1組內sink,default-sink的權重值,數值越大會被優先使用。例如,設置為10。
      default-agent.sinkgroups.g1.processor.priority.k1 指定sinkgroup g1組內sink,k1的權重值,數值越大會被優先使用。例如,設置為5。
      default-agent.sinks.default-sink.hostname core-1-1節點的IP地址。
      default-agent.sinks.default-sink.port core-1-1節點Flume Agent的Port。
      default-agent.sinks.k1.hostname core-1-2節點的IP地址。
      default-agent.sinks.k1.port core-1-2節點Flume Agent的Port。
      default-agent.sinks.default-sink.batch-size default-sink每次批量發送的Event數。例如,2000。
      default-agent.sinks.k1.batch-size k1每次批量發送的Event數。例如,2000。
      default-agent.sinks.k1.type 指定Sink類型。例如,avro。
      default-agent.sinks.k1.channel 配置Sink。例如,default-channel。
    3. 保存配置。
      1. 單擊下方的保存
      2. 在彈出的對話框中,輸入執行原因,單擊確定
  6. 啟動Flume Agent。
    1. 在右上角選擇更多操作 > 重啟
    2. 在彈出的對話框中,輸入執行原因,單擊確定
    3. 確認對話框中,單擊確定
      執行完成后,日志就從HDFS Audit同步至HDFS了。

      Flume Agent日志的存放路徑為/var/log/emr/flume/default-agent/flume.log