Flume-DataHub プラグインは、Flume 上に構築された DataHub 用の変更追跡およびパブリッシングプラグインです。これを使用すると、DataHub にデータを書き込んだり、DataHub からデータを読み取って他のシステムに書き込んだりできます。このプラグインは Flume 開発標準に準拠しており、インストールが簡単で、DataHub でデータをパブリッシュおよびサブスクライブできます。
Flume プラグインのインストール
インストール制限
JDK 1.8 以降。
Apache Maven バージョン 3.x。
Flume-NG バージョン
1.x。
Flume のインストール
Flume をダウンロードします。すでに Flume をダウンロードしている場合は、このステップをスキップできます。
$ tar zxvf apache-flume-1.11.0-bin.tar.gz説明このドキュメントでは、
${FLUME_HOME}は Flume のホームディレクトリを指します。Flume-DataHub をインストールします。
直接インストール
Flume-DataHub プラグインをダウンロードします。
Flume プラグインを解凍し、
${FLUME_HOME}/plugins.dディレクトリに移動します。$ tar aliyun-flume-datahub-sink-x.x.x.tar.gz $ cd aliyun-flume-datahub-sink-x.x.x $ mkdir ${FLUME_HOME}/plugins.d $ mv aliyun-flume-datahub-sink ${FLUME_HOME}/plugins.d
ソースコードからのインストール。
aliyun-maxcompute-data-collectors からソースコードをダウンロードします。
コンパイルとインストール。
$ cd aliyun-maxcompute-data-collectors $ mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true $ cd flume-plugin/target $ tar zxvf aliyun-flume-datahub-sink-x.x.x.tar.gz $ mv aliyun-flume-datahub-sink ${FLUME_HOME}/plugins.d
パラメーターリファレンス
Sink パラメーター
Source パラメーター
ユースケース
Sink の例
例 1: DELIMITED シリアライザー
例 2: REGEX シリアライザー
例 3: Flume Taildir Source
例 4: JSON シリアライザー
Source の例
DataHub から他のシステムへのデータ読み取り
Flume メトリック
DataHub-Flume は、Flume の組み込みカウンターモニターをサポートしており、これを使用して Flume プラグインの実行状態を監視できます。DataHub-Flume プラグインのシンクとソースは、メトリック情報を表示できます。次の表は、DataHub 関連パラメーターについて説明しています。他のパラメーターの詳細については、公式 Flume ドキュメントをご参照ください。
DatahubSink
DatahubSource
Flume モニタリング
Flume は複数のモニタリング方法を提供します。このトピックでは、HTTP モニタリングを例として、Flume のモニタリングツールの使用方法を示します。HTTP モニタリングを使用するには、Flume プラグインを起動するときに 2 つのパラメーターを追加します: -Dflume.monitoring.type=http -Dflume.monitoring.port=1234。`type` パラメーターはモニタリング方法を指定し、`port` パラメーターはポート番号を指定します。以下に例を示します。
bin/flume-ng agent -n a1 -c conf -f conf/datahub_basic.conf -Dflume.root.logger=INFO,console -Dflume.monitoring.type=http -Dflume.monitoring.port=1234プラグインの起動後、https://ip:1234/metrics の Web UI でメトリックを表示できます。
モニタリング方法の詳細については、公式 Flume ドキュメントをご参照ください。
よくある質問
Flume が起動に失敗し、エラーを報告: org.apache.flume.ChannelFullException: Space for commit to queue couldn’t be acquired. Sinks are likely not keeping up with sources, or the buffer size is too tight
Flume のデフォルトのヒープメモリは 20 MB です。`batchSize` パラメーターを大きな値に設定すると、Flume が使用するヒープメモリが 20 MB を超える可能性があります。
解決策 1: `batchSize` の値を減らします。
解決策 2: Flume の最大ヒープメモリを増やします。
$ vim bin/flume-ngJAVA_OPTS="-Xmx20m" ==> JAVA_OPTS="-Xmx1024m"
DataHub-Flume プラグインは JSON フォーマットをサポートしていますか?
いいえ、サポートしていません。ただし、カスタム正規表現を使用してデータを解析するか、DataHub-Flume プラグインのコードを変更して JSONEvent のサポートを追加できます。
DataHub-Flume プラグインは BLOB Topic をサポートしていますか?
DataHub-Flume プラグインは現在、Tuple トピックのみをサポートしており、BLOB Topic はサポートしていません。
Flume がエラーを報告: org.apache.flume.ChannelException: Put queue for MemoryTransaction of capacity 1 full, consider committing more frequently, increasing capacity or increasing thread count
このエラーは、チャンネルが満杯で、ソースがチャンネルにデータを書き込めなかったために発生します。この問題を解決するには、構成ファイルでチャンネル容量を増やし、DataHub ソースの `batchSize` を減らすことができます。
古いバージョンの Flume を使用するとエラーが発生し、JAR パッケージの競合により起動に失敗する可能性
シナリオ: Flume 1.6 を使用すると、起動が失敗し、次のエラーが報告される場合があります:
java.lang.NoSuchMethodError:com.fasterxml.jackson.databind.ObjectMapper.readerFor(Lcom/fasterxml/jackson/databind/JavaType;)Lcom/fasterxml/jackson/databind/ObjectReader;。このエラーは、新しいプラグインが依存する JAR パッケージが Flume が依存するバージョンと一致しないために発生します。Flume の古い JAR パッケージを使用すると、新しいメソッドが見つかりません。解決策: ${FLUME_HOME}/lib ディレクトリから次の 3 つの JAR パッケージを削除します。
jackson-annotations-2.3.0.jarjackson-databind-2.3.1.jarjackson-annotations-2.3.0.jar
Flume でのデータインジェスト中に空の文字列が自動的に null に変換される
Flume プラグインのバージョン 2.0.2 では、空でない文字列はトリミングされ、空の文字列は null に変換されます。この問題はバージョン 2.0.3 で修正されています。バージョン 2.0.3 では、空の文字列は DataHub に空の文字列として書き込まれます。
起動がエラーで失敗: Cannot invoke "com.google.common.cache.LoadingCache.get(Object)" because"com.aliyun.datahub.client.impl.batch.avro.AvroSchemaCache.schemaCache" is null]
Flume の `lib` フォルダーから `guava` および `zstd` JAR ファイルを削除し、Flume を再起動します。