4

私はDataProc Sparkクラスタを持っています。最初に、マスタノードと2つのワーカーノードはn1-standard-4(4 vCPU、15.0 GBメモリ)のタイプであり、Webコンソールを介してすべてn1-highmem-8(8個のvCPU、52 GBメモリ)にリサイズしました。Cloud Dataprocでワーカーノードのサイズを変更した後にスパーク設定を更新する方法

私は、2つのワーカーノードが完全に使用されていないことに気付きました。特に、/usr/lib/spark/conf/spark-defaults.conf

spark.executor.cores 2 
spark.executor.memory 4655m 

と第ワーカーノードと第2のワーカーノードの1つのキュータにのみ2エグゼキュータが存在します。私はspark.dynamicAllocation.enabled trueと思ったが、エグゼキュータの数は自動的に増えます。

また、WebコンソールのDataProcページに関する情報も自動的に更新されません。 DataProcはまだすべてのノードがn1-standard-4だと思っているようです。

私の質問は

  1. なぜ二よりも最初のワーカーノードの詳細のエグゼキュータがありますされていますか?
  2. なぜ各ノードにエグゼキュータを追加しないのですか?
  3. 理想的には、スパークの設定を更新する必要がある場合は、クラスタ全体を最大限に活用したいと考えています。

答えて

4

クラスタの設定は、クラスタが最初に作成されたときに設定されており、手動のサイズ変更には調整されません。

は、あなたの質問に答えるために:

  1. スパークApplicationMasterは、ワーカーノード、単一のスパークアプリケーションが実行されている場合、通常は最初のワーカーの糸で容器を取ります。
  2. クラスタが開始されると、Dataprocはマシンごとに2つのYARNコンテナを収めようとします。
  3. 各マシンのYARN NodeManager構成によって、マシンのリソースをどれだけYARN専用にするかが決まります。これは/etc/hadoop/conf/yarn-site.xmlの下で各VM上で変更することができ、その後にsudoサービスhadoop-yarn-nodemanagerを再起動することができます。マシンがResourceManagerにもっと多くのリソースを広告すると、Sparkはより多くのコンテナを開始することができます。 YARNにさらにリソースを追加した後、spark.executor.memoryおよびspark.executor.coresを変更して、Sparkによって要求されたコンテナのサイズを変更することができます。

クラスタノードのサイズを変更して後で構成ファイルを手動で編集する代わりに、新しいマシンサイズで新しいクラスタを開始し、古いクラスタのデータを新しいクラスタにコピーすることを検討してください。一般的に、データを移動する最も簡単な方法は、hadoopのdistcpユーティリティに組み込まれているものを使うことです。また、常にクラウドストレージにデータを格納し、一時的なリソースとして各クラスタの治療を検討

​​

$ hadoop distcp hdfs:///some_directory hdfs://other-cluster-m:8020/ 

それとも、クラウドストレージを使用することができます場合:使用例の線に沿って何かだろう引き裂かれていつでも再現することができます。一般的に、あなたはHDFSにデータを保存する任意の時間は、あなたはまた、それを保存することができます:GCSへの保存

gs://<your_bucket>/path/to/file 

は(通常ディスクに、HDFSに、データ)、あなたのクラスタを削除することを可能にする素敵な利点を持っています使用していないときに。

+0

ありがとうございました。私は昨日自分で最初の2つのポイントを考え出した。第3の点として、作業者ノードの1つ( 'w-0')で' kill kill -9'を使ってノードマージャを殺し、 'sudo yarn nodemanager 'で起動しようとしましたが、システムがつまらない。エグゼキュータの数は増えましたが、何らかの理由でタスクを完了できませんでした。 'sudo yarn nodemanager'と' sudo service hadoop-yarn-nodemanager restart'の違いは何ですか? – zyxue

+0

また、クラスタ間でHDFS上のデータを転送するための推奨される方法はありますか?データはかなり大きいです。 – zyxue

+0

マシンごとに2つのYARNコンテナが必要で、1つのコンテナを占有するApplicationMasterが非常に非効率です。機械が大きいとき。クラスタを作成するときにこれを設定する方法はありますか? – zyxue

関連する問題