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
}