このチュートリアルでは、 Hadoopの分散キャッシュについて詳しく説明します。 。まず、Hadoopとは何かを簡単に理解し、次にHadoopの分散キャッシュとは何かを確認します。
また、Hadoop分散キャッシュの動作と実装についても説明します。最後に、このブログでは、Hadoopでの分散キャッシングの長所と短所についても説明します。
Hadoopの概要
これは、MapReduceフレームワークがアプリケーションに必要なファイルをキャッシュするために提供するメカニズムです。読み取り専用のテキスト/データファイルなどのファイルや、アーカイブ、jarファイルなどのより複雑なタイプをキャッシュできます。
分散キャッシュを開始する前に、まずHadoopとは何ですか?
Hadoop はオープンソースのJavaベースのプログラミングフレームワークです。分散環境での非常に大きなデータセットの処理と保存をサポートします。 Hadoopはマスタースレーブトポロジに従います。
マスターはNameNodeであり、スレーブはDataNodeです。 Datanodeは実際のデータをHDFSに保存します 。また、クライアントの要求に応じて読み取りおよび書き込み操作を実行します。 Namenodeはメタデータを保存します。
Apache Hadoopでは、データチャンクは、ユーザーが作成したプログラムを使用して、データノード間で並行して処理されます。すべてのデータノードからいくつかのファイルにアクセスする場合は、そのファイルを分散キャッシュに配置します。
Hadoopの分散キャッシュとは何ですか?
分散キャッシュ in Hadoopは、MapReduceフレームワークによって提供される機能です。分散キャッシュは、アプリケーションで必要なときにファイルをキャッシュできます。読み取り専用のテキストファイル、アーカイブ、jarファイルなどをキャッシュできます。
ジョブ用のファイルをキャッシュすると、ApacheHadoopはmap/reduceタスクが実行されている各データノードでそのファイルを利用できるようにします。したがって、MapReduceジョブのすべてのデータノードからファイルにアクセスできます。
分散キャッシュのサイズ
デフォルトでは、分散キャッシュのサイズは10GBです。分散キャッシュのサイズを調整する場合は、ローカルを使用して調整できます 。キャッシュ 。サイズ。
実装
分散キャッシュを使用してファイルを分散するアプリケーション:
- 最初にファイルが利用可能であることを確認する必要があります。
- その後、ファイルがURL経由でアクセスできることも確認してください。 URLは、 hdfs://またはhttps://のいずれかになります。
上記の検証後、ファイルが上記のURLに存在する場合。 Hadoopユーザーは、それが分散キャッシュへのキャッシュファイルであると述べています。 Hadoop MapReduceジョブは、すべてのノードでタスクを開始する前に、それらのノードでキャッシュファイルをコピーします。
以下のプロセスに従ってください:
a)必要なファイルをHDFSにコピーします:
$ hdfs dfs-put / user / dataflair / lib / jar_file.jar
b)アプリケーションのJobConfを設定します:
DistributedCache.addFileToClasspath(new Path(“ /user/dataflair/lib/jar-file.jar”)、conf)。
c)ドライバークラスに追加します。
分散キャッシュの利点
- 単一障害点- 分散キャッシュは多くのノードにまたがって実行されます。したがって、単一ノードに障害が発生しても、キャッシュに完全な障害が発生することはありません。
- データの一貫性- キャッシュファイルの変更タイムスタンプを追跡します。次に、ジョブが実行されるまでファイルを変更してはならないことを通知します。キャッシュエンジンは、ハッシュアルゴリズムを使用して、特定のキー値がどのノードに存在するかを常に判断できます。ご存知のとおり、キャッシュクラスターには常に単一の状態があるため、一貫性が失われることはありません。
- 複雑なデータを保存する– シンプルな読み取り専用のテキストファイルを配布します。また、jar、アーカイブなどの複雑なタイプも格納します。これらの成果は、スレーブノードでアーカイブ解除されます。
分散キャッシュのデメリット
Hadoopの分散キャッシュにはオーバーヘッドがあり、インプロセスキャッシュよりも遅くなります:
a)オブジェクトのシリアル化 –オブジェクトをシリアル化する必要があります。ただし、シリアル化メカニズムには2つの主な問題があります。
- 非常にかさばる –シリアル化は、完全なクラス名、クラスター、およびアセンブリの詳細を格納します。また、他のインスタンスへの参照をメンバー変数に格納します。これらすべてにより、シリアル化は非常にかさばります。
- 非常に遅い –シリアル化では、リフレクションを使用して、実行時に情報のタイプを検査します。リフレクションは、プリコンパイルされたコードと比較して非常に遅いプロセスです。
結論
分散キャッシュの結論として、これはMapReduceによって提供される機能であると言えます。アプリケーションが必要とするときにファイルをキャッシュします。読み取り専用のテキストファイル、アーカイブ、jarファイルなどをキャッシュできます。
デフォルトでは、分散キャッシュのサイズは10GBです。このブログを見つけた場合、またはHadoopの分散キャッシュに関連するクエリがある場合は、お気軽に共有してください。