SparkでのSpark-SubmitとSpark-Shellの概要

spark-submit
1。これは主に、コンパイルおよびパッケージ化されたJarパッケージをクラスター環境に送信して実行するために使用されます。これはhadoopのhadoop jarコマンドに似ています。hadoopjarはMRタスクを送信しますが、spark-submitはSparkタスクを送信します。このスクリプト**は、Sparkクラスパスとアプリケーションの依存関係を設定し、Sparkでサポートされるさまざまなクラスター管理モードとデプロイメントモードを設定できます。** spark-shellと比較して、REPL(インタラクティブプログラミング環境)はありません。実行する前に、アプリケーションの起動クラス、jarパッケージパス、パラメーターなどを指定する必要があります。

2.基本的な文法

bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]

対応するパラメーターの説明:

--master 指定Master的地址;
--class: 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)--deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)--conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value” ;
application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar
application-arguments: 传给main()方法的参数;
--executor-memory 1G 指定每个executor可用内存为1G;
--total-executor-cores 2 指定每个executor使用的cup核数为2个。

spark-shell
1。これはsparkプログラムを実行するためのコマンドラインメソッドです。このコマンドは、REPL環境であるユーザーにsparkコマンドを入力できるシェルを起動します。マスターが指定されていない場合、SparkSubmitプロセスSparkの実行中の環境をシミュレートするために開始されます。

ここに画像の説明を挿入

ここに画像の説明を挿入

マスターが指定されると、タスクはSparkクラスターに送信されます(Sparkスタンドアロンモードクラスターのセットがある場合)

ここに画像の説明を挿入

2. spark-shellソースコードを見ると、メインメインでspark-submitクラスのエントリを呼び出すことがわかります。全体として、spark-shellを実行してタスクを送信した後、spark-送信すると、最終的に完了します。

function main() {
    
    
  if $cygwin; then
    # Workaround for issue involving JLine and Cygwin
    # (see http://sourceforge.net/p/jline/bugs/40/).
    # If you're using the Mintty terminal emulator in Cygwin, may need to set the
    # "Backspace sends ^H" setting in "Keys" section of the Mintty options
    # (see https://github.com/sbt/sbt/issues/562).
    stty -icanon min 1 -echo > /dev/null 2>&1
    export SPARK_SUBMIT_OPTS="$SPARK_SUBMIT_OPTS -Djline.terminal=unix"
    "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@"
    stty icanon echo > /dev/null 2>&1
  else
    export SPARK_SUBMIT_OPTS
    "${SPARK_HOME}"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" "$@"
  fi
}

おすすめ

転載: blog.csdn.net/weixin_44080445/article/details/109674537