ApacheFlume-Hadoopでのデータ転送

Big Data,ご存知のように、これは従来のコンピューティング技術では処理できない大きなデータセットのコレクションです。ビッグデータを分析すると、貴重な結果が得られます。Hadoop は、単純なプログラミングモデルを使用して、コンピューターのクラスター全体の分散環境でビッグデータを保存および処理できるようにするオープンソースフレームワークです。

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

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

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

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

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

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

HDFSputコマンド

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

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

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

putコマンドの問題

使用できます putこれらのソースからHDFSにデータを転送するためのHadoopのコマンド。ただし、次のような欠点があります。

  • 使用する put コマンド、転送できます only one file at a time一方、データジェネレータははるかに高いレートでデータを生成します。古いデータで行われた分析は精度が低いため、データをリアルタイムで転送するためのソリューションが必要です。

  • 使用する場合 putコマンドを実行する場合、データをパッケージ化する必要があり、アップロードの準備ができている必要があります。Webサーバーは継続的にデータを生成するため、これは非常に困難な作業です。

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

HDFSの問題

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

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

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

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

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

Facebookのスクライブ

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

Apache Kafka

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

Apache Flume

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

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

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