Flumeのフォールトトレランステストと2層のFlumeアーキテクチャ

1.フェイルオーバーシンクプロセッサテスト

公式Webサイトでは、フェイルオーバーシンクプロセッサについて説明しています。
フェイルオーバーシンクプロセッサは、優先度順に並べられたシンクのリストを維持し、使用可能なシンクがある限り、イベントが処理(配信)されるようにします。
フェイルオーバーメカニズムの動作原理は、失敗した受信をプールに転送し、プール内でそれらに冷却期間を割り当て、それらを再試行する前に、連続した失敗で増加することです。受信者がイベントを正常に送信すると、アクティブプールに復元されます。シンクには優先度が関連付けられており、数値が大きいほど優先度が高くなります。受信者がイベントの送信に失敗した場合、優先度が最も高い次の受信者が次にイベントの送信を試みます。たとえば、優先度100の受信機は、優先度80の受信機の前にアクティブ化されます。優先度が指定されていない場合、優先度は構成で指定されたシンクの順序に従って決定されます。
構成するには、シンクグループプロセッサをフェイルオーバーに設定し、すべての個々のシンクの優先度を設定します。割り当てられたすべての優先順位は一意である必要があります。さらに、maxpenalty属性を使用して、フェイルオーバー時間の上限(ミリ秒単位)を設定できます。

次の図の44446の優先度は高くなってい
ここに画像の説明を挿入
ます。左側のエージェントの構成、failover.conf:

a1.sources = r1
a1.channels = c1
a1.sinks = k1 k2

a1.sources.r1.type = netcat
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 44444

a1.channels.c1.type = memory

a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = failover
a1.sinkgroups.g1.processor.priority.k1 = 5
a1.sinkgroups.g1.processor.priority.k2 = 10
a1.sinkgroups.g1.processor.maxpenalty = 10000

a1.sinks.k1.type = avro
a1.sinks.k1.hostname = hadoop000
a1.sinks.k1.port = 44445

a1.sinks.k2.type = avro
a1.sinks.k2.hostname = hadoop000
a1.sinks.k2.port = 44446

a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
a1.sinks.k2.channel = c1

k2は、agent1のポート44446の優先度が高いことを意味します(数値が大きいほど、優先度が高くなります)。

データを送る:

[hadoop@hadoop000 apache-flume-1.6.0-cdh5.15.1-bin]$ telnet localhost 44444
Trying 192.168.198.128...
Connected to localhost.
Escape character is '^]'.
aaa
OK
bbb
OK
ccc
OK
ddd
OK
eee
OK
fff
OK

44446は情報を受け取りました:

21/01/25 18:14:47 INFO ipc.NettyServer: [id: 0x0ce2a19e, /192.168.198.128:45240 => /192.168.198.128:44446] OPEN
21/01/25 18:14:47 INFO ipc.NettyServer: [id: 0x0ce2a19e, /192.168.198.128:45240 => /192.168.198.128:44446] BOUND: /192.168.198.128:44446
21/01/25 18:14:47 INFO ipc.NettyServer: [id: 0x0ce2a19e, /192.168.198.128:45240 => /192.168.198.128:44446] CONNECTED: /192.168.198.128:45240
21/01/25 18:15:40 INFO sink.LoggerSink: Event: {
    
     headers:{
    
    } body: 61 61 61 0D                                     aaa. }
21/01/25 18:16:11 INFO sink.LoggerSink: Event: {
    
     headers:{
    
    } body: 62 62 62 0D                                     bbb. }

エージェント3を強制終了し、ポート44445がアクティブ化されます。

21/01/25 18:14:46 INFO ipc.NettyServer: [id: 0x946f8c34, /192.168.198.128:55142 => /192.168.198.128:44445] OPEN
21/01/25 18:14:46 INFO ipc.NettyServer: [id: 0x946f8c34, /192.168.198.128:55142 => /192.168.198.128:44445] BOUND: /192.168.198.128:44445
21/01/25 18:14:46 INFO ipc.NettyServer: [id: 0x946f8c34, /192.168.198.128:55142 => /192.168.198.128:44445] CONNECTED: /192.168.198.128:55142
21/01/25 18:16:42 INFO sink.LoggerSink: Event: {
    
     headers:{
    
    } body: 63 63 63 0D                                     ccc. }
21/01/25 18:16:48 INFO sink.LoggerSink: Event: {
    
     headers:{
    
    } body: 64 64 64 0D                                     ddd. }
21/01/25 18:47:19 INFO sink.LoggerSink: Event: {
    
     headers:{
    
    } body: 65 65 65 0D                                     eee. }

agent3を再起動すると、ポート44446が再度アクティブになります。

21/01/25 18:50:10 INFO ipc.NettyServer: [id: 0x58750737, /192.168.198.128:45596 => /192.168.198.128:44446] OPEN
21/01/25 18:50:10 INFO ipc.NettyServer: [id: 0x58750737, /192.168.198.128:45596 => /192.168.198.128:44446] BOUND: /192.168.198.128:44446
21/01/25 18:50:10 INFO ipc.NettyServer: [id: 0x58750737, /192.168.198.128:45596 => /192.168.198.128:44446] CONNECTED: /192.168.198.128:45596
21/01/25 18:50:13 INFO sink.LoggerSink: Event: {
    
     headers:{
    
    } body: 66 66 66 0D                                     fff. }

2.2層のFlumeアーキテクチャ

このブログは特に詳細を書いています:Flumeログコレクションの階層化アーキテクチャアプリケーションの実践

ダブルフルームの利点:

  • デカップリング、hdfsまたはkafkaをアップグレードする必要がある場合、水路の2番目のレイヤーは最初のレイヤーに影響を与えることなくバッファリングできます。
  • セキュリティ、hdfs、またはkafkaは、セキュリティの最初の層に直接さらされています(最初の層の多くの水路は他の部門からのものであり、2番目の層はローカルです)。
  • ビジネスのグループ化管理に役立ち、最初のグループの複雑なビジネスを2番目のレイヤーにグループ化できます。
  • 小さなファイルの数が大幅に削減されます。
  • 特定のタイプの外部ビジネスログデータノードを拡張する必要があり、データストリームはL1レイヤーでデータプラットフォーム内の対応するL2レイヤーのFlumeAgentノードグループに直接送信できます。

3.単一のソース、複数のチャネル、および複数のシンク

ここに画像の説明を挿入第1層のソースがメッセージを送信し、channel1とchannel2が送信され、agent2とagent3が同じデータを受信するため、このアーキテクチャは同じデータをインポートできます。つまり、オフライン計算のためにhdfsにインポートできます。リアルタイム計算のためのリアルタイムフレームワークにインポートされ、多目的を実現します。

おすすめ

転載: blog.csdn.net/qq_38258720/article/details/113130548