だからここに私の状況があります:
HBaseを使用するmapreduceジョブがあります。私のマッパーは1行のテキスト入力を受け取り、HBaseを更新します。レデューサーがなく、ディスクに出力を書き込んでいません。使用率のバーストが予想される場合はクラスターに処理能力を追加し、使用率が低下した場合はスケールダウンする機能が必要です。今のところ、Amazonや他のクラウドプロバイダーを使用できないと仮定しましょう。私はプライベートクラスターで実行しています。
1つの解決策は、より多くの容量が必要なときにクラスターに新しいマシンを追加することです。ただし、これらのマシンを待機したり面倒なことなく追加および削除できるようにしたいと考えています。ノードを追加または削除する必要があるたびにHDFSのバランスを取り直したくありません。
したがって、各マシンがタスクトラッカーとデータノードを実行している「コア」クラスターを用意するのが良い戦略のように思われます。容量を追加する必要がある場合は、タスクトラッカーを実行している「使い捨て」マシンを起動できます。ただし、データノードではありません。これは可能ですか?もしそうなら、どのような影響がありますか?
データノードのないマシンで実行されているタスクトラッカーには、データの局所性のメリットがないことに気づきました。しかし実際には、これはどういう意味ですか?「使い捨て」マシンの1つでジョブをスケジュールすると、ジョブトラッカーはネットワーク経由で入力行をタスクトラッカーに送信します。タスクトラッカーはその入力行を取得して、マッパーに直接フィードします。ディスクに何かを書き込みます。これはどうなりますか?
ああ、私はClouderacdh3u3を使用しています。それが重要かどうかわからない。