Category:

Spark(with Yarn)におけるメモリ設定

Dataprocで Spark を利用することがあるのですが、メモリに関する設定でいつもよく分からなくなるので、備忘録的に残しておきます。Resource Managerに Hadoop Yarn を利用しているケースになります。 メモリ設定の包含関係 Sparkに関する設定はこちら、Yarnに関する設定はこちらに書いてあります。 各Executorノードのメモリ設定は以下のような包含関係になっているようです。 マシンメモリ OS その他 yarn.nodemanager.resource.memory-mbコンテナに割り当て可能な物理メモリ spark.executor.memoryOverhead1ExecutorあたりのVMオーバーヘッド、インターン化文字列、その他Nativeオーバヘッドなど spark.executor.memory1Executorが利用する最大メモリサイズ s Continue Reading

Posted On :
Category:

PySparkの実装サンプルと実行方法

最近Sparkを触る機会があって、少しだけ勉強したのでメモがてら残しておきます。 Sparkの分散処理の仕組み Sparkとは 高速で汎用的な分散処理システム 分散データ(RDD)をDISKを介さずにメモリ上に持つので、Hadoopの100倍ぐらい高速 Java, Scala, Python, RなどのAPIを提供 Spark SQL, MLlib, GraphX, Spark Streamingなどのリッチなツールを提供 分散処理システムの構成要素 画像は、こちらからお借りしました。 Driver Program Master Nodeで実行される起点となるプログラム SparkContextを作成し、RDDを生成して、Taskを実行していく SparkContext Sparkの色々な機能へのエントリーポイント ClusterManagerを通じてクラスターを操作する DAG Sche Continue Reading

Posted On :
Category:

DataProc+PySparkのTips

環境変数の利用 DBへの接続情報など環境変数から設定するようにしたいケースが発生しそうなので調査しました。 いずれもドライバプログラム内でしか利用できません。つまりworkerノード(リモート)で利用するためには一旦変数に格納してアプリケーションコード内で参照するような工夫が必要ですのでご注意ください。 方法1:initialization-actionsで自前スクリプトを実行する initialization-actionsで自前のスクリプトを実行して、その中で環境変数を設定するというとても原始的な方法です。この方法だと変数の内容をファイルに記載して、GCSにアップロードしなくてはならないので正直使えないと思っています。 まず、クラスター作成時にinitialization-actionsオプションで指定するスクリプト(initialize.sh)を実装する echo "exp Continue Reading

Posted On :