最新の技術動向で更新滞在
電報にDataFlairに参加!!
KafkaとHadoopの統合
今日、このKafka Hadoopチュートリアルでは、Kafka Hadoopの統合について説明します。 さらに、Hadoopの紹介からこのチュートリアルを開始します。 また、HadoopとKafkaの統合でHadoop ProducerとHadoop Consumerが表示されます。
基本的には、Hadoopを使用したバッチ処理など、さまざまなユースケースに対処するために、KafkaをHadoop技術と統合することができます。 そこで、この記事「Kafka Hadoop統合」では、HadoopとKafkaを簡単かつ効率的に統合する手順を学習します。 ただし、KafkaとHadoopを統合する前に、Hadoopの簡単な紹介を学ぶことが重要です。
では、Kafka Hadoopの統合を始めましょう。
Kafka Hadoopインテグレーション
Hadoopとは何ですか?
多くのノード間でデータ処理を並列化するために使用し、ビッグデータを含む分散コンピューティングの課題にも対処する大規模な分散バッチ処理フ
基本的には、Googleが導入したMapReduceフレームワークの原則に基づいて動作します。 並列化と大規模な計算の分散のためのシンプルなインターフェイスを提供します。 さらに、HDFS(Hadoop Distributed File System)と呼ばれる独自の分散データファイルシステムを持っています。 HDFSを理解するために、データを小さな断片(ブロックと呼ばれる)に分割し、一般的なHadoopクラスター内のすべてのノードにさらに分散します。 さらに、これらの小さなデータの複製を作成し、それらを格納して、ノードがダウンしている場合に別のノードからデータを使用できるようにします。
さて、ここでは、マルチノードHadoopクラスターの高レベルビューを示す画像です:
Hadoopマルチノードクラスター
A.Hadoop
の主なコンポーネントは、以下のHadoopコンポーネントです:
- 名前ノード
HDFSの単一の相互作用点は、Namenodeと呼ばれるものです。 その仕事として、ノード間で分散されているデータの小片(ブロック)に関する情報を保持します。
- Secondary Namenode
名前ノードに障害が発生した場合、HDFSの最新の更新された状態を復元するために、編集ログを保存します。
- データノード
namenodeによって配布された実際のデータをブロック単位で保持し、他のノードからのデータの複製コピーを保持します。
- Job Tracker
MapReduceジョブを小さなタスクに分割するには、Job Trackerが役立ちます。
- タスクトラッカー
一方、ジョブトラッカーによって分割されたタスクの実行については、タスクトラッカーが責任を負います。
ただし、タスクトラッカーとデータノードが同じマシンを共有していることを確認してください。
Hadoopについてどれだけ知っているかを確認する
Kafka Hadoop Integration
リアルタイム処理や監視に利用できるパイプラインを構築し、オフライン処理やレポーティングのためにHadoop、NoSQL、またはデータウェアハウスシステムにデータをロードするために、特にリアルタイムのpublish-subscribeユースケースでは、Kafkaを使用します。
a.Hadoop producer
HadoopクラスターからKafkaにデータを公開するために、Hadoop producerは下の画像で見ることができるブリッジを提供します:
さらに、KafkaトピックはKafkaプロデューサーのためのUriとみなされます。 ただし、特定のKafkaブローカーに接続するには、以下のUriを指定します。
kafka://<kafka-broker>/<kafka-topic>
Hadoopからデータを取得するには、Hadoopプロデューサーコードは2つの可能なア:
- Pigスクリプトの使用とAvro形式でのメッセージの書き込み
基本的に、バイナリAvro形式でデータを書き込むために、KafkaプロデューサはこのアプローチでPigスクリプトを使用します。 ここで、各行は単一のメッセージを参照します。 さらに、AvroKafkaStorageクラスは、最初の引数としてAvroスキーマを選択し、kafkaクラスターにデータをプッシュするためにKafka URIに接続します。 また、AvroKafkaStorageプロデューサーを使用することで、同じPigスクリプトベースのジョブで複数のトピックやブローカーに簡単に書き込むことができます。
- ジョブにKafka OutputFormatクラスを使用する
2番目の方法では、Kafkaクラスターにデータを公開するために、Kafka OutputFormatクラス(HadoopのOutputFormatクラスを拡張)が使用されます。 ここでは、低レベルの公開方法を使用することによって、メッセージをバイトとして公開し、出力を制御することもできます。 ただし、hadoopクラスターにレコード(メッセージ)を書き込むために、Kafka OutputFormatクラスはKafkaRecordWriterクラスを使用します。
また、ジョブの設定でKafka ProducerパラメータとKafka Broker情報をkafka Producer用に設定することもできます。Hadoop Consumer
一方、Kafkaブローカーからデータを取得し、さらにそれをHDFSにプッシュするHadoopジョブは、Hadoop consumerと呼ばれるものです。 しかし、下の画像から、アーキテクチャパターンにおけるKafka消費者の位置を見ることができます:
kafka Hadoop integration-Hadoop Consumer
プロセスとして、HadoopジョブはKafkaからHDFSへの並列ロードを実行し、入力ディレクトリ内のファイルの数に依存するデータをロードする さらに、Kafkaからのデータと更新されたトピックオフセットは出力ディレクトリにあります。 さらに、マップタスクの最後に、個々のマッパーは最後に消費されたメッセージのオフセットをHDFSに書き込みます。 しかし、各マッパーは、ジョブが失敗してジョブが再起動されると、HDFSに格納されているオフセットから単純に再起動します。
だから、これはすべてKafka Hadoop統合にありました。 私たちの説明が好き願っています。