1

基本的にHDFSファイルシステムをMapReduceフレームワークから分離できるかどうか知りたいです。Hadoopの主なポイントは、問題のデータを含むマシンでマップを実行して縮小することですが、*。xmlファイルを変更して、jobtracker、namenode、およびデータノードはで実行されています。

現在、私の構成は2つのVMセットアップです。1つ(マスター)にはNamenode、Datanode、JobTracker、Tasktracker(およびSecondaryNameNode)があり、もう1つ(スレーブ)にはDataNode、Tasktrakerがあります。基本的に、変更したいのは、NameNode DataNode(s)、JobTrackerを備えたマスターを持ち、計算を実行するためにTaskTrackerのみを備えたスレーブを持ちます(後で、TaskTrackerのみを備えたスレーブをさらに増やします。それぞれに1つずつ)。 。ボトルネックは、マップの計算のための2つのVM間のデータ転送であり、削減されますが、この段階のデータは非常に小さいため、私は主にそれを気にしません。この構成が可能かどうか、およびその方法を知りたいだけです。任意のヒント?

ありがとう!

4

2 に答える 2

1

この種のオプションは、構成ファイルで指定しません。あなたがしなければならないことは、あなたが各マシンでどのような種類のデーモンを開始するかを世話することです(あなたはそれらをVMと呼びますが、私はあなたがマシンを意味すると思います)。

通常、hadoopインストールディレクトリの下のbinディレクトリにあるstart-all.shスクリプトを使用してすべてを開始すると思います。

このスクリプトを見ると、データノード(tasktrackers)とnamenode(jobtracker)の開始に対応するいくつかのサブスクリプトを呼び出すことがわかります。

あなたが言ったことを達成するために、私はこれをしたいと思います:

  1. マスターファイルとスレーブファイルを次のように変更します。マスターファイルにはmachine1の名前が含まれている必要がありますスレーブにはmachine2の名前が含まれている必要があります

  2. start-mapred.shを実行します

  3. マスターファイルとスレーブファイルを次のように変更します。マスターファイルにはmachine1が含まれている必要がありますスレーブファイルにはmachine1が含まれている必要があります

  4. start-dfs.shを実行します

私はそのような構成を試したことがないので、これがうまくいくかどうかはわかりませんが、試してみることができます。とにかく解決策はこの方向にあります!

于 2012-07-07T01:06:06.220 に答える
0

基本的に、変更したいのは、NameNode DataNode(s)、JobTrackerを備えたマスターを持ち、計算を実行するためにTaskTrackerのみを備えたスレーブを持ちます(後で、TaskTrackerのみを備えたスレーブをさらに増やします。それぞれに1つずつ)。 。

まず、なぜ計算をストレージから分離するのかわかりません。MRローカリティの目的全体が失われ、ジョブを正常に実行できる可能性があると考えられます。

dfs.hostsdfs.hosts.excludeパラメーターを使用して、どのデータノードがネームノードに接続できるかを制御しmapreduce.jobtracker.hosts.filename、、パラメーターを使用して、どのタスクトラッカーがmapreduce.jobtracker.hosts.exclude.filenameジョブトラッカーに接続できるかを制御します。このアプローチの欠点の1つは、データノードとタスクトラッカーが、Hadoopクラスターの一部ではなく除外されているノードで開始されることです。

別のアプローチは、タスクトラッカーとデータノード用に別々のスレーブファイルを持つようにコードを変更することです。現在、これはHadoopではサポートされておらず、コードを変更する必要があります。

于 2012-07-07T03:22:12.780 に答える