1

高可用性を使用して、3 つの HDFS クラスターをセットアップ/維持しようとしています。それらはすべて単独で正常に動作しますが、HDFS フェデレーションを使用して相互に通信できるようにしたいと考えています。

私は Cloudera 420 を使用しており、そのガイドを使用してすべてをセットアップしました。クラスターごとに、core-site.xml ファイルは異なります (fs.defaultFS) が、hdfs-site.xml はすべて同じです。hdfs-site.xml ファイルには、すべてのネームサービス (dfs.nameservices) がリストされており、もちろん、対応する core-site.xml を参照しています。各クラスターには、それに属する必要があるデータノードをリストするスレーブファイルがあります。

私の問題は、新しいデータノードを追加することです。参加させたいクラスターの構成ファイル (core、hdfs、slaves など) を使用してセットアップしました。ただし、データノードを起動すると、dfs.nameservices プロパティにリストされている最初のクラスターに参加しようとしているように見えます。最初に fs.defaultFS プロパティを調べると思いますが、そうは見えません。新しいデータノードがスレーブファイルにないにもかかわらず、間違ったクラスターもそれを受け入れるようです。

要するに、新しいデータノードが間違ったクラスターに参加しようとしています。どちらに参加するかをどのように知るのですか?

事前に、アイデアをありがとう。

** アップデート **

たぶん、これを行うためのユースケースを誤解しているだけです。Hadoop コードを調べると、各 dfs.nameservices エントリのスレッドが開始されているようです。これらはそれぞれ、その CID を単一の DataNode オブジェクトに割り当てようとしますが、それは既に null である場合に限られます。順序に関係なくこれを行うように見えます。つまり、最初のものが勝ちます。「運が良かった」場合にのみ、正しいものを選択します。私が「幸運」ではない場合、通常はそうではありませんが、別のものが取得され、最初にそこに接続されます。変。

4

0 に答える 0