Flume-カスタムソース

ソースは、コンポーネント水路エージェントのデータを受信するための責任があります。

ソース・コンポーネントは、アブロ、倹約、幹部、JMSなど、さまざまな形式でのログデータの様々な種類、スプールディレクトリ、netcatを、シーケンスジェネレータは、Syslog、HTTP、遺産を扱うことができます。

公式のソースの種類はたくさんあるが、時には実際の開発の中での需要を満たすことができない、我々は、実際の需要に基づいてソースの一部をカスタマイズする必要があります。

 

公式には、ソースをカスタマイズするためのインタフェースを提供します。https://flume.apache.org/FlumeDeveloperGuide.html#source

公式の説明によると、カスタムソースAbstractSourceクラスが継承し、設定可能とPollableSourceインタフェースを実装する必要があります。

適切な方法を実装します。

getBackOffSleepIncrement(); 

getMaxBackOffSleepInterval(); 

// コンテキストを(内容は設定ファイルを読み込む)を初期化
設定(コンテキストコンテキスト); 

// イベントにデータパッケージを取得し、チャネルを書き、メソッドが呼び出されますループ 
処理を();

使用シナリオ:読み込みMySQLのデータやその他のファイルシステム。

 

本明細書で使用される場合、水路は、データを受信し、コンソールへのデータ出力のそれぞれにプレフィックスを追加します。水路は、プレフィックスプロファイルから構成されていてもよいです。

まず、カスタムソースを作成します

1.ポンポン依存追加

<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> 
< プロジェクトのxmlns = "http://maven.apache.org/POM/4.0.0" 
         のxmlns:XSI = "http://www.w3.org / 2001 / XMLスキーマ・インスタンス」
         のxsi:のschemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > 
    < modelVersion > 4.0.0 </ modelVersion > 

    < groupIdを> COM </ groupIdを> 
    < たartifactId >水路</ たartifactId > 
    <</ バージョン> 

    < 依存性> 
        < 依存性> 
            < のgroupId > org.apache.flume </ のgroupId > 
            < たartifactId >フリューム-NG-コア</ たartifactId > 
            < バージョン> 1.9.0 </ バージョン> 
        </ 依存> 
    </ 依存関係> 

    < 構築> 
        < プラグイン> 
            < プラグイン> 
                < groupIdを>org.apache.maven.plugins</ のgroupId > 
                < たartifactId > Mavenのコンパイラ・プラグイン</ たartifactId > 
                < 構成> 
                    < ソース> 1.8 </ ソース> 
                    < ターゲット> 1.8 </ ターゲット> 
                    < コード> UTF-8 </ エンコーディング> 
                </ 構成> 
            < / プラグイン> 
        </ プラグイン> 
    </ 構築> 
</ プロジェクト>

2.カスタムクラスのソースを書きます

パッケージソース; 

インポートorg.apache.flume.Context;
 インポートorg.apache.flume.EventDeliveryException;
 インポートorg.apache.flume.PollableSource;
 インポートorg.apache.flume.conf.Configurable;
 インポートorg.apache.flume.event。 SimpleEvent;
 インポートorg.apache.flume.source.AbstractSource、

インポートのjava.util.HashMap; 

パブリック クラス MYSOURCE 拡張 AbstractSource 道具設定可能、PollableSource { 

    // 将来のフィールドに読み込まれる定義構成ファイル
    プライベート長い遅延を、
     プライベート; Stringフィールド

    / / 初期設定情報
    @Override
     公共の 無効設定(コンテキストコンテキスト){ 
        遅延 = context.getLong( "遅延" ;)
        フィールド( "こんにちは!" "フィールド"、= context.getString ); 
    } 

    @Override 
    パブリックステータスプロセス()スローEventDeliveryException {
         試して{
             // イベントのヘッダ情報を作成 
            HashMapの<文字列、文字列> = hearderMap 新しい新規 HashMapを<> ();
             // イベントを作成 
            SimpleEventイベント= 新しい新しいSimpleEventを();
             // サイクルイベントパッケージ
            のためのint型 Iは<5;; I ++はI = 0 ){
                 // イベントヘッダー設定する
                event.setHeaders(hearderMapを);
                 // イベント内容には、提供される 
                event.setBody((フィールド+ I)(.getBytesは));
                 // 書き込みイベントチャネル
                getChannelProcessor()のprocessEvent(イベント);. 
                のThread.sleep(ディレイ); 
            } 
        } キャッチ(例外E){ 
            e.printStackTrace(); 
            戻り、Status.BACKOFFを
        } 
        戻りStatus.READYを; 
    } 

    @Override 
    パブリック ロングはgetBackOffSleepIncrement(){
         戻り 0 
    } 

    @Override 
    パブリック ロングgetMaxBackOffSleepInterval(){
         戻り 0 
    } 
}

 

第二に、パッケージングテスト

1.パッケージのアップロード

参考:https://www.cnblogs.com/jhxxb/p/11582804.html

2.書き込み水路プロフィール

mysource.conf

#このエージェントのコンポーネント名前
a1.sources = R1 
a1.sinks =をK1の
a1.channels = C1の

#説明/ソースを設定
a1.sources.r1.type = source.MySource 
#代码中要获取的配置信息
a1.sources .r1.delay = 1000 
#a1.sources.r1.field = jhxxb 

#シンク説明
a1.sinks.k1.type =ロガー

#を使用して、メモリ内のイベントをバッファチャンネル
= a1.channels.c1.typeをメモリ
a1.channels .c1.capacity = 1000 
a1.channels.c1.transactionCapacity = 100 

#バインドチャネルのソースとシンク
a1.sources.r1.channels = C1 
a1.sinks.k1.channel = C1

スタート

CDは/ opt / apacheの-flume- 1.90 - ビン
ビン /水路-ngのエージェント--confのconf / --name A1 --conf- ファイル -Dflume.root.logger = INFO、コンソール/tmp/flume-job/source/mysource.conf

おすすめ

転載: www.cnblogs.com/jhxxb/p/11583778.html