Flumeの配備

公開日: 2026-07-28 13:02 更新日: 2026-07-28 13:02 1931文字 10 min read ... ページビュー

この記事では、クラスタ環境におけるFlumeのインストールと構成について詳しく説明します。これには、基盤環境の構築、フェイルオーバモード、マルチレイヤデータフローモードの2つのクラスタアーキテクチャのデプロイとテストが含まれます。フェイルオーバモードは、メインおよび予備Collectorノードを介してデータ受信の高可用性を実現し、自動切り替えをサポートします。多層データフローモードは、マルチレベルエージェントとCollectorノードを介して複雑なデータ収集と伝送リンクを構築し、ノード間のログ収集と伝送を実現します。最後に、2つのモードにおけるデータストリームの正常動作とフェイルオーバー機能を実証します。

Flumeクラスタ配備

Flumeのインストールと基本環境

Flumeのダウンロード、解凍

cd /export/software
wget -P /export/software/ https://repo.huaweicloud.com/apache/flume/1.9.0/apache-flume-1.9.0-bin.tar.gz
sudo tar -zxvf /export/software/apache-flume-1.9.0-bin.tar.gz -C /export/servers/
cd /export/servers
sudo mv /export/servers/apache-flume-1.9.0-bin /export/servers/flume

環境変数の設定

/etc/profileファイルの編集

sudo vim /etc/profile 

以下を追加:

#Flume环境变量
export FLUME_HOME=/export/servers/flume
export PATH=$PATH:$FLUME_HOME/bin

構成を有効にする

source /etc/profile

flume-env.shの設定

sudo chown -R hadooper:hadooper /export/servers/flume/
cd $FLUME_HOME/conf
cp flume-env.sh.template flume-env.sh
sudo vi flume-env.sh

以下を追加:

export JAVA_HOME=/export/servers/jdk

配布プロファイル

scp -r /export/servers/flume hadoop02:/tmp/
scp /etc/profile hadoop02:/etc
scp -r /export/servers/flume hadoop03:/tmp/
scp -r /etc/profile hadoop03:/etc

Hadoop 0 2へのアクセス

sudo cp -r /tmp/flume /export/servers
cd /export/servers
sudo chown -R hadooper:hadooper /export/servers/flume/
rm -r /tmp/flume

Hadoop 0 3へのアクセス

sudo cp -r /tmp/flume /export/servers
cd /export/servers
sudo chown -R hadooper:hadooper /export/servers/flume/
rm -r /tmp/flume

配布完了后に両方のノードに入ってを有効にする

source /etc/profile

インストールの確認

各ノードでflume-ng versionが実行されます。バージョン情報が正しく表示されていれば、ベースのインストールは成功しました

フェイルオーバーモードクラスタノードの

フェイルオーバモードとマルチレイヤデータストリームモードの2つの選択を選択して設定できます。

フェイルオーバモード(推奨) Hadoop01:ログを収集するagent-node。 Hadoop02:コレクタ1-node、受信データ、優先度が高い。 Hadoop03:コレクタ2-node、受信データ、スタンバイ優先度。

フェイルオーバーモードhadoop01 agent-の

cd /$FLUME_HOME/conf/

プロファイルの作成

touch agent-failover.conf
vi /$FLUME_HOME/conf/agent-failover.conf

内容は以下の通り。

# 定义组件名称 
agent1.sources = r1 
agent1.channels = c1 
agent1.sinks = k1 k2 
agent1.sinkgroups = g1 
 
# 配置 Source:监控日志文件 
agent1.sources.r1.type = exec 
agent1.sources.r1.command = tail -F /export/servers/flume/weblog.log 
agent1.sources.r1.channels = c1 
 
# 配置 Channel:使用内存通道 
agent1.channels.c1.type = memory 
agent1.channels.c1.capacity = 10000 
agent1.channels.c1.transactionCapacity = 10000 
 
# 配置第一个 Sink(指向主 Collector) 
agent1.sinks.k1.type = avro 
agent1.sinks.k1.hostname = hadoop02 
agent1.sinks.k1.port = 52020 
agent1.sinks.k1.channel = c1 
 
# 配置第二个 Sink(指向备用 Collector) 
agent1.sinks.k2.type = avro 
agent1.sinks.k2.hostname = hadoop03 
agent1.sinks.k2.port = 52021 
agent1.sinks.k2.channel = c1 
 
# 配置 Sink Group 和故障转移策略 
agent1.sinkgroups.g1.sinks = k1 k2 
agent1.sinkgroups.g1.processor.type = failover 
agent1.sinkgroups.g1.processor.priority.k1 = 10  
agent1.sinkgroups.g1.processor.priority.k2 = 5 
agent1.sinkgroups.g1.processor.maxpenalty = 10000

フェイルオーバモードの設定 Hadoop02、Hadoop03

各 Collectorノードに個別にプロファイルを作成する

cd $FLUME_HOME/conf/
touch collector-hdfs.conf
vi /$FLUME_HOME/conf/collector-hdfs.conf

以下を追加する。 フェイルオーバーモードhadoop02

# 定义组件 
collector1.sources = r1 
collector1.channels = c1 
collector1.sinks = k1 
 
# 配置 Source:监听 Avro 端口 
collector1.sources.r1.type = avro 
collector1.sources.r1.bind = 0.0.0.0  
collector1.sources.r1.port = 52020 
collector1.sources.r1.channels = c1 
 
# 配置 Channel 
collector1.channels.c1.type = memory 
collector1.channels.c1.capacity = 10000 
collector1.channels.c1.transactionCapacity = 10000 
 
# 配置 Sink:写入 HDFS 
collector1.sinks.k1.type = hdfs 
collector1.sinks.k1.channel = c1 
collector1.sinks.k1.hdfs.path = hdfs://mycluster/flume/events/%Y-%m-%d/ 
collector1.sinks.k1.hdfs.filePrefix = events- 
collector1.sinks.k1.hdfs.fileType = DataStream 
collector1.sinks.k1.hdfs.writeFormat = Text 
collector1.sinks.k1.hdfs.rollInterval = 3600 
collector1.sinks.k1.hdfs.rollSize = 0 
collector1.sinks.k1.hdfs.rollCount = 0 
collector1.sinks.k1.hdfs.useLocalTimeStamp = true

フェイルオーバモードhadoop03

# 定义组件 
collector2.sources = r1 
collector2.channels = c1 
collector2.sinks = k1 
 
# 配置 Source:监听 Avro 端口 
collector2.sources.r1.type = avro 
collector2.sources.r1.bind = 0.0.0.0 
collector2.sources.r1.port = 52021 
collector2.sources.r1.channels = c1 
 
# 配置 Channel 
collector2.channels.c1.type = memory 
collector2.channels.c1.capacity = 10000 
collector2.channels.c1.transactionCapacity = 10000 
 
# 配置 Sink:写入 HDFS 
collector2.sinks.k1.type = hdfs 
collector2.sinks.k1.channel = c1 
collector2.sinks.k1.hdfs.path = hdfs://mycluster/flume/events/%Y-%m-%d/ 
collector2.sinks.k1.hdfs.filePrefix = events- 
collector2.sinks.k1.hdfs.fileType = DataStream 
collector2.sinks.k1.hdfs.writeFormat = Text 
collector2.sinks.k1.hdfs.rollInterval = 3600 
collector2.sinks.k1.hdfs.rollSize = 0 
collector2.sinks.k1.hdfs.rollCount = 0 
collector2.sinks.k1.hdfs.useLocalTimeStamp = true

フェイルオーバーモードクラスタとテストの開始

注:この手順は、フェイルオーバーモードの起動とテストです。 フェイルオーバモード

フェイルオーバーモードCollectorサービスの

Hadoop02とHadoop03で実行します。 hadoop02

cd $FLUME_HOME
$FLUME_HOME/bin/flume-ng agent -n collector1 -c conf -f $FLUME_HOME/conf/collector-hdfs.conf -Dflume.root.logger=INFO,console &

hadoop03:

cd $FLUME_HOME
$FLUME_HOME/bin/flume-ng agent -n collector2 -c conf -f $FLUME_HOME/conf/collector-hdfs.conf -Dflume.root.logger=INFO,console &

フェイルオーバーモードエージェントサービスの

Hadoop01での実行:

cd $FLUME_HOME
$FLUME_HOME/bin/flume-ng agent -n agent1 -c conf -f $FLUME_HOME/conf/agent-failover.conf -Dflume.root.logger=INFO,console &

フェイルオーバーモードテストデータフロー

Hadoop01でのテストログの作成

echo "Test message 1 - $(date)" >> /export/servers/flume/weblog.log

echo "Test message 2 - $(date)" >> /export/servers/flume/weblog.log

エージェントログ:イベントが収集され送信されたことを示す。 Collector1(hadoop02)ログデータを受信し、HDFSに書き込まれたことを示すはずです。 Collector2 hadoop03ログスタンバイとして、一時的にデータを受信しないでください。 HDFS 上でデータファイルが生成されているかどうかを確認する

hdfs dfs -ls hdfs://mycluster/flume/events/
echo "=== 最新数据内容 ==="
hdfs dfs -cat hdfs://mycluster/flume/events/*/*.tmp | tail -10

フェイルオーバモードフェイルオーバのテスト

Hadoop 0 2でFlume Collectorを停止する

ps aux | grep flume | grep collector1
kill [进程ID]

Hadoop01でのテストログの作成

echo "Test message 1 - $(date)" >> /export/servers/flume/weblog.log

echo "Test message 2 - $(date)" >> /export/servers/flume/weblog.log

エージェント·ログにk2への切り替えhadoop03が表示されるかどうかを確認します。 Hadoop03がデータの受信とHDFSへの書き込みを開始することを確認

多層データフローモードのクラスタノードの構成

フェイルオーバモードとマルチレイヤデータストリームモードの2つの選択を選択して設定できます。

多層データフローモデル Hadoop01:ログを収集するエージェント1-node。 hadoop02 agent 2-node collector 1-nodeログ収集を担当受信 1 2ノードデータ hadoop03:agent 3-node collector 2-node,担当は自ノードのログを収集し、自ノードのデータを受信する

Hadoop 0 2、Hadoop 0 3のマルチレイヤデータフローモードの設定

多層データフローモードhadoop02 /export/servers/flume/confパスにcollector-hdfs.confファイルを作成する

cd /export/servers/flume/conf
touch collector-hdfs.conf
vi collector-hdfs.conf

以下を追加します。

# 定义组件
collector1.sources = r1
collector1.channels = c1
collector1.sinks = k1
 
# 配置 Source:监听 Avro 端口
collector1.sources.r1.type = avro
collector1.sources.r1.bind = 0.0.0.0 
collector1.sources.r1.port = 52020
collector1.sources.r1.channels = c1
 
# 配置 Channel
collector1.channels.c1.type = memory
collector1.channels.c1.capacity = 10000
collector1.channels.c1.transactionCapacity = 10000
 
# 配置 Sink:写入 HDFS
collector1.sinks.k1.type = hdfs
collector1.sinks.k1.channel = c1
collector1.sinks.k1.hdfs.path = hdfs://mycluster/flume/events/%Y-%m-%d/
collector1.sinks.k1.hdfs.filePrefix = events-
collector1.sinks.k1.hdfs.fileType = DataStream
collector1.sinks.k1.hdfs.writeFormat = Text
collector1.sinks.k1.hdfs.rollInterval = 3600
collector1.sinks.k1.hdfs.rollSize = 0
collector1.sinks.k1.hdfs.rollCount = 0
collector1.sinks.k1.hdfs.useLocalTimeStamp = true

多層データフローモードhadoop03 /export/servers/flume/confパスにcollector-hdfs.confファイルを作成する

cd /export/servers/flume/conf
touch collector-hdfs.conf
vi collector-hdfs.conf

以下を追加する。

# 定义组件
collector2.sources = r1 
collector2.sinks = k1 
collector2.channels = c1 
 
# 配置 Avro Source - 使用不同的端口(如 52021) 
collector2.sources.r1.type = avro 
collector2.sources.r1.bind = 0.0.0.0 
collector2.sources.r1.port = 52021 
collector2.sources.r1.channels = c1
# 添加时间戳拦截器
collector2.sources.r1.interceptors = i1
collector2.sources.r1.interceptors.i1.type = timestamp
collector2.sources.r1.interceptors.i1.preserveExisting = false
 
# 配置 HDFS Sink - 使用不同的 HDFS 路径 
collector2.sinks.k1.type = hdfs 
collector2.sinks.k1.channel = c1 
collector2.sinks.k1.hdfs.path = hdfs://mycluster/flume/events/%Y-%m-%d/ 
collector2.sinks.k1.hdfs.filePrefix = events- 
collector2.sinks.k1.hdfs.round = true 
collector2.sinks.k1.hdfs.roundValue = 10 
collector2.sinks.k1.hdfs.roundUnit = minute 
collector2.sinks.k1.hdfs.rollInterval = 3600 
collector2.sinks.k1.hdfs.rollSize = 0 
collector2.sinks.k1.hdfs.rollCount = 0 
collector2.sinks.k1.hdfs.batchSize = 1000 
collector2.sinks.k1.hdfs.fileType = DataStream 
 
# 配置 Memory Channel 
collector2.channels.c1.type = memory 
collector2.channels.c1.capacity = 1000 
collector2.channels.c1.transactionCapacity = 1000

多層データ·フロー·モードでは、エージェント·ノードごとに個別のプロファイルを作成

多層データフローモードhadoop01 /export/servers/flume/conf/カタログにアクセスする

cd /export/servers/flume/conf/

新規プロファイルの作成

touch agent-node1.conf
vim agent-node1.conf

次の内容を追加します。

# 定义组件名称
agent1.sources = r1
agent1.channels = c1
agent1.sinks = k1

# 配置 Source:监控日志文件
agent1.sources.r1.type = exec
agent1.sources.r1.command = tail -F /export/servers/flume/weblog-hadoop01.log
agent1.sources.r1.channels = c1

# 配置 Channel:使用内存通道
agent1.channels.c1.type = memory
agent1.channels.c1.capacity = 10000
agent1.channels.c1.transactionCapacity = 10000

# 配置第一个 Sink(指向主 Collector)
agent1.sinks.k1.type = avro
agent1.sinks.k1.hostname = hadoop02
agent1.sinks.k1.port = 52020
agent1.sinks.k1.channel = c1

Hadoop02とHadoop03にアクセスし、設定ファイルを変更します。

多層データフローモードhadoop02

cd /export/servers
sudo chown -R hadooper:hadooper /export/servers/flume/
cd /export/servers/flume/conf
vi agent-node2.conf

文書は以下の通り。

# 定义组件名称
agent2.sources = r1
agent2.channels = c1
agent2.sinks = k1

# 配置 Source:监控日志文件
agent2.sources.r1.type = exec
agent2.sources.r1.command = tail -F /export/servers/flume/weblog-hadoop02.log
agent2.sources.r1.channels = c1

# 配置 Channel:使用内存通道
agent2.channels.c1.type = memory
agent2.channels.c1.capacity = 10000
agent2.channels.c1.transactionCapacity = 10000

# 配置第一个 Sink(指向主 Collector)
agent2.sinks.k1.type = avro
agent2.sinks.k1.hostname = hadoop02
agent2.sinks.k1.port = 52020
agent2.sinks.k1.channel = c1

多層データフローモードhadoop03

cd /export/servers
sudo chown -R hadooper:hadooper /export/servers/flume/
cd /export/servers/flume/conf
vi agent-node3.conf

文書は以下の通り。

# 定义组件名称
agent3.sources = r1
agent3.channels = c1
agent3.sinks = k1

# 配置 Source:监控日志文件
agent3.sources.r1.type = exec
agent3.sources.r1.command = tail -F /export/servers/flume/weblog-hadoop03.log
agent3.sources.r1.channels = c1

# 配置 Channel:使用内存通道
agent3.channels.c1.type = memory
agent3.channels.c1.capacity = 10000
agent3.channels.c1.transactionCapacity = 10000

# 配置第一个 Sink(指向主 Collector)
agent3.sinks.k1.type = avro
agent3.sinks.k1.hostname = hadoop03
agent3.sinks.k1.port = 52021
agent3.sinks.k1.channel = c1

クラスタの開始とテスト

このステップでは、マルチレベルデータフローモードの起動とテストを行います。

多層データ·ストリーム·モード

多層データ·フロー·モードCollectorサービスの起動

Hadoop02とHadoop03で実行します。 多層データフローモードhadoop02

cd $FLUME_HOME
$FLUME_HOME/bin/flume-ng agent -n collector1 -c conf -f $FLUME_HOME/conf/collector-hdfs.conf -Dflume.root.logger=INFO,console &

多層データフローモードhadoop03

cd $FLUME_HOME
$FLUME_HOME/bin/flume-ng agent -n collector2 -c conf -f $FLUME_HOME/conf/collector-hdfs.conf -Dflume.root.logger=INFO,console &

多層データ·フロー·モードエージェント·サービスの開始

多層データフローモードhadoop01

cd $FLUME_HOME
$FLUME_HOME/bin/flume-ng agent -n agent1 -c conf -f $FLUME_HOME/conf/agent-node1.conf -Dflume.root.logger=INFO,console &

多層データフローモードhadoop02

cd $FLUME_HOME
$FLUME_HOME/bin/flume-ng agent -n agent2 -c conf -f $FLUME_HOME/conf/agent-node2.conf -Dflume.root.logger=INFO,console &

多層データフローモードhadoop03

cd $FLUME_HOME
$FLUME_HOME/bin/flume-ng agent -n agent3 -c conf -f $FLUME_HOME/conf/agent-node3.conf -Dflume.root.logger=INFO,console &

多層データフローパターンテストデータフロー

hadoop01でのテストhadoop02に送信 52020

echo "Agent1 to Collector1 测试 - $(date)" >> /export/servers/flume/weblog-hadoop01.log

hadoop02でのテストhadoop02に送信 52020

echo " Agent2 to Collector1 测试 - $(date) " >> /export/servers/flume/weblog-hadoop02.log

hadoop03でのテストローカルhadoop03に送信 52021

echo " Agent3 to Collector2 测试 - $(date) " >> /export/servers/flume/weblog-hadoop03.log

HDFSデータ書き込みの確認

hdfs dfs -ls hdfs://mycluster/flume/events/
echo "=== 最新数据内容 ==="
hdfs dfs -cat hdfs://mycluster/flume/events/*/*.tmp | tail -10

気に入ったならばコメントを残してくださいね~

... ページビュー
© 2026 跨越星轨的客 @Hoshiumi
Powered by theme astro-koharu · Inspired by Shoka