A. 水路の紹介
1.1水路は何ですか
リアルタイムログ水路収集システムのClouderaの開発として、広く産業界で認識されてきました。フリューム最初のリリースバージョンが現在水路OG(原世代)と呼ばれ、Clouderaのに属します。しかし、水路機能の拡張と、水路OGコードは0.94.0水路OG、不安定のログ転送現象、特に最終リリース版で、肥大化した作品、設計が不十分なコアコンポーネント、コア構成基準およびその他の欠点は公開されていません特に深刻な、これらの問題を解決するために、2011年10月号22に、水路に、水路-728を完了Clouderaのが画期的な変化である:まとめて再構成された再構成可能なコア構成要素、コア構成とコードアーキテクチャ、バージョンが水路と称されるNG(次世代);別の理由は、Apacheにその水路を変更することで、Clouderaの水路は、Apache水路と改名しました。
1.3水路の中核となる概念
エージェント |
単剤ソース、シンクアセンブリとチャンネル三つで構成される最小のスタンドアロンユニットに水路薬、 |
ソース |
チャンネルを渡すために、クライアントからデータを収集します。 |
チャネル |
ソースおよびシンク、接続ソースとシンクの間に位置するチャネルが、これは主にキャッシュを行うには、キューのようなビットです |
シンク |
シンクは、次のソースまたは最終目的地までのチャネルからの送信を担当し、成功したイベントの後、チャネルから削除されます |
クライアント |
クライアントは、生ログイベントに充填し、一の以上のエンティティのエージェントに送信しています |
イベント |
水路イベントは、データ伝送の基本単位です。テキストコンテンツのラインは、イベントにシリアライズされます。 |
1.2水路の機能
水路は、分散、信頼性、及び可用性の高い大規模なログ収集、凝集及び伝送システムです。データを収集するログシステムにカスタムデータの送信者のすべての種類をサポートしています。同時に、水路は、単純なデータ処理、及び受け入れの各種データ(テキスト、HDFS、HBaseの、など)関係者への書き込み機能を提供します。
全体のイベント(イベント)から水路のデータストリーム。水路イベントログデータを運ぶ基本的なデータ単位(バイト配列)であり、エージェントの外部のイベントソース、フォーマットするための特定のイベント捕捉源によって生成されたヘッダ情報を搬送し、イベントソースであろうチャンネルのプッシュ(単一または複数)。あなたは、シンクがイベントの処理を終了するまで、イベントを開催しますバッファとして見チャンネルと考えることができます。永続的なイベントログのか、別のソースへの責任シンク。
1.5水路エージェント
水路基本モデル
エージェントは、主によって:ソース、チャネル、3つのコンポーネントが沈みます。
出典:
データ発生器からデータを受信し、フォーマット水路1つ以上のチャネルがChannal、水路が等アブロ、倹約、twitter1%、などのデータ、様々な受信方法を提供するイベントに受信したデータを転送します
チャンネル:
channalは一時的な保存容器である彼らはシンクが消費されるまで、それがキャッシュされたの形式でのイベントに、ソースからのデータを受信する、それが総ソースとシンクの間のブリッジの役割を果たし、channalは完全なトランザクションでありますこれは時間に送信され、受信したデータの一貫性を確保することであり、それがソースの任意の数であり、およびリンクタイプをシンクすることができますサポートされていますように.. JDBCチャンネル、ファイルシステムのチャネル、メモリー・チャネルとを。
シンク:
そのようなメモリHBaseのように、データシンクを格納し、HDFSを濃縮し、そしてそれは先にそこから消費データ(イベント)channals渡す。宛先は別のソースとすることができる、できるHDFS、HBaseのは。
その組み合わせの例:
1.3Flume信頼性
ノードに障害が発生した場合、ログは失わず、他のノードに送信することができます。水路は弱いに強いから、信頼性保証3つのレベルを提供する:エンドツーエンド(エージェントは、データ転送が成功した場合、その後、削除ディスク最初のイベントに書き込まれたデータを受信し、データ送信が失敗した場合データが受信者に送信された後、(、)BESTEFFORTません)。再送信することができ、データが側面衝突を受けたときに使用されるスクライブ戦略で失敗した場合にストアが(、データが復元されるように、ローカルに書き込まれ、送信し続けます確認)。
1.4水路のリカバリ
またはチャネルによります。ローカルファイルシステム内の推奨のFileChannel、イベントの永続性(パフォーマンスの低下)。
II。リアルタイム取得ケース
2.1 Netcatを+ロガー
a1.sources = R1
a1.sinks = K1
a1.channels = C1
#ソースを設定/説明
a1.sources.r1.type =のnetcat
a1.sources.r1.bind = localhostを
a1.sources.r1.port = 44444
#シンクを説明
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
Linuxの場合:yumのインストールNC -y
NC -lポートは、サーバに対応します
NC IPポート
Windowsコマンドライン、タイプ:telnetのIPポートテスト
2.2スプール+メモリ+ HDFS
プロファイルの作成f1.confを:
#defineエージェント名、ソース、チャネルに名前を付け、中に沈みます
f1.sources = R1
f1.channels = C1
f1.sinks = K1
#具体的な定義ソース
#監視フォルダ
f1.sources.r1.type = spooldir
#フォルダを監視するために指定
f1.sources.r1.spoolDir =は/ opt /テスト/
#特定の定義チャンネル
f1.channels.c1.type =メモリ
チャネル#に格納されたイベントの最大数
f1.channels.c1.capacity = 10000
100は、トランザクションをコミットするために行くの後に収集するために、シンクの最後に収集され、彼は100です#デフォルト値は、(その次の宛先に送信されます)
#はhdfs.batchSizeに沈むより小さくすることはできません
f1.channels.c1.transactionCapacity = 100
#メッセージにタイムスタンプを追加し、インターセプタを定義します。
f1.sources.r1.interceptors = I1
f1.sources.r1.interceptors.i1.type =タイムスタンプ
#具体的な定義が沈みます
f1.sinks.k1.type = HDFS
f1.sinks.k1.hdfs.path = HDFS://のHadoop:9000 /水路/%Yの%mの%dの
#生成されたログファイル名の接頭辞、FlumeDataデフォルト
f1.sinks.k1.hdfs.filePrefix =イベントを紹介
#名前サフィックス
f1.sinks.k1.hdfs.fileSuffix =の.log
#は、テキストタイププレーンテキスト(デフォルトSequenceFile)、現在SequenceFile、データ・ストリーム・データまたはCompressedStreamを設定します
#DataStream圧縮データ出力ファイルは、CompressedStreamは、利用可能なコーデックCODECを設定する必要がHDFSません。
f1.sinks.k1.hdfs.fileType =でDataStream
#圧縮コーデック。次のいずれかGZIP、BZIP2 LZO、lzopの、きびきび
#f1.sinks.k1.hdfs.codeC
#生成されたファイルの数に応じて(ファイルに書き込まれるイベントの数、デフォルトの10、0に基づいていない)ではありません
f1.sinks.k1.hdfs.rollCount = 0
1M(0に基づいていないデフォルトの1024バイト)に達したファイル#HDFS上のファイルの生成
f1.sinks.k1.hdfs.rollSize = 1048576
ファイル生成に#HDFSファイル(0に基づいていないデフォルトは30秒)、60秒に達しました
f1.sinks.k1.hdfs.rollInterval = 60
非アクティブなファイルの後に#タイムアウトが閉じている(0 =無効、自動的にシャットダウンアイドルファイル、デフォルト0)
#f1.sinks.k1.hdfs.idleTimeout
100位デフォルト値、HDFS上の各バッチを更新するイベントの数。
#f1.sinks.k1.hdfs.batchSize
#書き込みシーケンスファイル形式。インクルード:テキスト、書き込み可能(デフォルト)
#1 f1.sinks.k1.hdfs.writeFormat
#は(というよりもヘッドのタイムスタンプイベントから)ローカル時間を使用して、デフォルトはfalse
#f1.sinks.k1.hdfs.useLocalTimeStamp
#アセンブリソース、チャネル、シンク
f1.sources.r1.channels = C1
f1.sinks.k1.channel = C1
実行エージェント:
水路-ngのエージェント-n F1 -c confに-f /wishedu/testdata/flume/f1.conf -Dflume.root.logger = INFO、コンソール
-nは、エージェントの名前が続いています
-f背後にある設定ファイルの場所で編集
2.3 Execの+ memary +ロガー
プロファイルf2.confを作成します。
#defineエージェント名、ソース、チャネルに名前を付け、中に沈みます
a1.sources = R1
a1.channels = C1
a1.sinks = K1
#具体的な定義ソース
a1.sources.r1.type =幹部
a1.sources.r1.command =尾-f /wishedu/testdata/flume/logs/0.log
#特定の定義チャンネル
a1.channels.c1.type =メモリ
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
#具体的な定義が沈みます
a1.sinks.k1.type =ロガー
#アセンブリソース、チャネル、シンク
a1.sources.r1.channels = C1
a1.sinks.k1.channel = C1
III。インストール構成
3.1インストールの抽出
タール-zxvfのapache-水路-1.6.0-bin.tar.gz -C / wishedu /
3.2設定環境変数
viのは/ etc / profile
輸出FLUME_HOME = / wishedu /水路-1.6.0
輸出PATH = $ PATHに:$ JAVA_HOME / binに:$ HADOOP_HOME / binに:$ FLUME_HOME / binに:
プロフィールを更新し、保存して終了
ソースは/ etc / profile
JAVA_HOMEにflume-env.sh変更
3.3検証
#は、水路バージョンを表示します。
[ルート@ wisheduビン]#水路バージョン
水路1.6.0
ソースコードリポジトリ:https://git-wip-us.apache.org/repos/asf/flume.git
リビジョン:2561a23240a71ba20bf288c7c2cda88f443c2080
2015年5月11日11時15分44秒PDT月にhshreedharanでコンパイル
チェックサムb29e416802ce9ece3269d34233baf43fとソースから
#上記の情報は、インストールが成功したことを示すために表示されます
IV。メモ
4.1ディレクトリを監視
このディレクトリのファイルを監視します(1)水路は、マークをしなければならなかった、プラスあなたは水路を再起動する場合は、接尾辞(.COMPLETED)は、その背後に、水路は、もはやこのファイルを監視しません。
(2)監視されているファイルを変更することはできません、または水路は文句を言うでしょう