天天看點

使用EMR-Flume同步HDFS audit日志到HDFS使用EMR-Flume同步HDFS audit日志到HDFS1.前言2.部署方案3.操作流程

使用EMR-Flume同步HDFS audit日志到HDFS

1.前言

E-MapReduce從3.19.0版本開始對EMR-Flume提供叢集管理的功能。通過叢集管理功能,可以在Web頁面友善的配置和管理Flume Agent。

本文将使用EMR-Flume實時同步HDFS audit日志至HDFS,便于對HDFS操作記錄進行離線統計和實時分析。

2.部署方案

2.1方案一

在master執行個體啟動Flume agent,收集本地磁盤中的audit日志并sink到HDFS。

這個方案架構和配置比較簡單,但是master執行個體本身部署了比較重要且對資源占用比較敏感的服務,比如Zookeeper,在master執行個體中HDFS讀寫操作如果占用過多資源會對這些服務産生影響。

2.2方案二

選取core執行個體啟動Flume agent做sink HDFS的操作,在master執行個體啟動Flume agent,收集本地磁盤中的audit日志通過Avro協定發送資料至core執行個體。

使用這個方案時,考慮到core執行個體上Flume運作的穩定性,可以選取多個core執行個體構成failover sink processor。

本文以方案二對操作流程作說明。

3.操作流程

3.1準備工作

建立E-MapReduce Hadoop叢集,在可選服務中選擇Flume。具體操作可參考

建立叢集

3.2 core執行個體配置并啟動Flume Agent

比如在emr-worker-1節點進行操作,選擇核心執行個體組進行配置,如下入所示

使用EMR-Flume同步HDFS audit日志到HDFS使用EMR-Flume同步HDFS audit日志到HDFS1.前言2.部署方案3.操作流程

在配置頁面設定如下

default-agent.sinks.default-sink.type hdfs
default-agent.channels.default-channel.type file
default-agent.sources.default-source.type avro
deploy_node_hostname emr-worker-1

在配置頁面通過自定義配置添加如下配置:

default-agent.sinks.default-sink.hdfs.path 對于高可用叢集,使用hdfs://emr-cluster/path形式的位址
default-agent.sinks.default-sink.hdfs.fileType DataStream
default-agent.sinks.default-sink.hdfs.rollSize
default-agent.sinks.default-sink.hdfs.rollCount
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.channels.default-channel.transactionCapacity
default-agent.channels.default-channel.dataDirs channel存儲event資料的路徑
default-agent.channels.default-channel.checkpointDir 存儲checkpoint的路徑
default-agent.channels.default-channel.capacity 根據hdfs roll進行設定

說明:為避免生成過多小檔案,通常以GB為機關生成HDFS檔案,或者按天生成一個檔案。此處按照時間來生成檔案,可根據實際情況進行設定.

儲存配置後啟動Flume agent

使用EMR-Flume同步HDFS audit日志到HDFS使用EMR-Flume同步HDFS audit日志到HDFS1.前言2.部署方案3.操作流程
使用EMR-Flume同步HDFS audit日志到HDFS使用EMR-Flume同步HDFS audit日志到HDFS1.前言2.部署方案3.操作流程
使用EMR-Flume同步HDFS audit日志到HDFS使用EMR-Flume同步HDFS audit日志到HDFS1.前言2.部署方案3.操作流程

在檢視操作曆史裡顯示操作成功後,部署拓撲頁面可以看到emr-worker-1節點的flume已經是started狀态

使用EMR-Flume同步HDFS audit日志到HDFS使用EMR-Flume同步HDFS audit日志到HDFS1.前言2.部署方案3.操作流程

emr-worker-1節點啟動成功後,開始啟動第二個worker節點。

同樣的方式,比如在worker-2節點啟動flume,修改配置項

節點的hostname

儲存配置後,啟動 All Components,指定機器為emr-worker-2。

3.3 master執行個體配置并啟動Flume Agent

比如在emr-header-1節點進行操作,選擇服務配置

使用EMR-Flume同步HDFS audit日志到HDFS使用EMR-Flume同步HDFS audit日志到HDFS1.前言2.部署方案3.操作流程

配置agent如下

additional_sinks k1
emr-header-1
taildir

新增配置如下:

配置項
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 存儲position file的路徑
存儲event資料的路徑
根據實際情況設定
default-agent.sources.default-source.batchSize 2000
default-agent.sources.default-source.ignoreRenameWhenMultiMatching true
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 emr-worker-1節點的IP
default-agent.sinks.default-sink.port emr-worker-1節點Flume Agent的port
default-agent.sinks.k1.hostname emr-worker-2節點的IP
default-agent.sinks.k1.port emr-worker-2節點Flume Agent的port
default-agent.sinks.default-sink.batch-size
default-agent.sinks.k1.batch-size
default-agent.sinks.k1.type
default-agent.sinks.k1.channel default-channel

需要說明的是,Flume的taildir source在filegroups使用通配符比對log4j的滾動日志時會有資料重複的問題,通過對EMR-Flume配置ignoreRenameWhenMultiMatching可以避免這種問題。

儲存配置後,相同的方式指定機器為emr-header-1啟動flume。

如果需要在emr-header-2節點啟動Flume agent,隻需對配置作如下修改

3.4檢視同步結果

使用HDFS指令,可以看到同步的資料被寫入FlumeData.${timestamp}形式的檔案中,其中timestamp為檔案建立的時間戳

使用EMR-Flume同步HDFS audit日志到HDFS使用EMR-Flume同步HDFS audit日志到HDFS1.前言2.部署方案3.操作流程