Apache-flume-data-transfer-in-hadoop

提供:Dev Guides
移動先:案内検索

Apache Flume-Hadoopでのデータ転送

ビッグデータ*は、私たちが知っているように、従来のコンピューティング技術では処理できない大きなデータセットのコレクションです。 ビッグデータを分析すると、貴重な結果が得られます。 *Hadoop は、シンプルなプログラミングモデルを使用してコンピューターのクラスター間で分散環境にビッグデータを格納および処理できるオープンソースフレームワークです。

ストリーミング/ログデータ

一般に、分析されるデータのほとんどは、アプリケーションサーバー、ソーシャルネットワーキングサイト、クラウドサーバー、エンタープライズサーバーなどのさまざまなデータソースによって生成されます。 このデータは、*ログファイル*および*イベント*の形式になります。

ログファイル-一般に、ログファイルはオペレーティングシステムで発生するイベント/アクションをリストする*ファイル*です。 たとえば、Webサーバーは、ログファイルにサーバーに対して行われたすべての要求をリストします。

そのようなログデータを収集すると、次の情報を取得できます-

  • アプリケーションのパフォーマンスと、さまざまなソフトウェアおよびハードウェアの障害の特定。
  • ユーザーの行動を把握し、より良いビジネス洞察を引き出します。

データをHDFSシステムに転送する従来の方法は、 put コマンドを使用することです。 put コマンドの使用方法を見てみましょう。

HDFS putコマンド

ログデータの処理における主な課題は、複数のサーバーで生成されたこれらのログをHadoop環境に移動することです。

Hadoop File System Shell は、Hadoopにデータを挿入し、そこからデータを読み取るコマンドを提供します。 以下に示すように、 put コマンドを使用して、Hadoopにデータを挿入できます。

$ Hadoop fs –put/path of the required file /path in HDFS where to save the file

putコマンドの問題

Hadoopの put コマンドを使用して、これらのソースからHDFSにデータを転送できます。 しかし、それは次の欠点に苦しんでいます-

  • put コマンドを使用すると、一度に1つのファイルのみを転送できますが、データジェネレーターははるかに高いレートでデータを生成します。 古いデータで行われた分析の精度は低いため、リアルタイムでデータを転送するソリューションが必要です。
  • put コマンドを使用する場合、データをパッケージ化する必要があり、アップロードの準備ができている必要があります。 Webサーバーは継続的にデータを生成するため、非常に難しいタスクです。

ここで必要なのは、 put コマンドの欠点を克服し、「ストリーミングデータ」をデータジェネレーターから集中ストア(特にHDFS)に少ない遅延で転送できるソリューションです。

HDFSの問題

HDFSでは、ファイルはディレクトリエントリとして存在し、ファイルが閉じられるまでファイルの長さはゼロと見なされます。 たとえば、ソースがHDFSにデータを書き込んでおり、ネットワークが操作の途中で(ファイルを閉じずに)中断された場合、ファイルに書き込まれたデータは失われます。

したがって、ログデータをHDFSに転送するには、信頼性が高く、構成可能で、保守可能なシステムが必要です。

注意-POSIXファイルシステムでは、ファイルにアクセスする(書き込み操作を実行するなど)ときはいつでも、他のプログラムはこのファイル(少なくともファイルの保存された部分)を読み取ることができます。 これは、ファイルが閉じる前にディスク上に存在するためです。

利用可能なソリューション

ストリーミングデータ(ログファイル、イベントなど)をさまざまなソースからHDFSに送信するには、次のツールを自由に使用できます-

Facebookのスクライブ

Scribeは、ログデータの集約とストリーミングに使用される非常に人気のあるツールです。 非常に多数のノードに対応し、ネットワークおよびノー​​ドの障害に強いように設計されています。

アパッチカフカ

Kafkaは、Apache Software Foundationによって開発されました。 オープンソースのメッセージブローカーです。 Kafkaを使用すると、フィードを高スループットで低遅延で処理できます。

Apache Flume

Apache Flumeは、ログデータ、イベントなどの大量のストリーミングデータを収集し、さまざまなWebserveから中央のデータストアに転送するためのツール/サービス/データ取り込みメカニズムです。

これは、主にさまざまなソースからHDFSにストリーミングデータを転送するように設計された、信頼性の高い分散型の構成可能なツールです。

このチュートリアルでは、Flumeの使用方法をいくつかの例とともに詳しく説明します。