まず、ジョブ投入
1.1火花提出
すべてのモードを使用しているスパークspark-submit
次の形式でジョブを送信するためのコマンドを:
./bin/spark-submit \
--class <main-class> \ # 应用程序主入口类
--master <master-url> \ # 集群的 Master Url
--deploy-mode <deploy-mode> \ # 部署模式
--conf <key>=<value> \ # 可选配置
... # other options
<application-jar> \ # Jar 包路径
[application-arguments] #传递给主入口类的参数
なお:クラスタ環境では、application-jar
あなたはHDFS上のパスすることができ、クラスタ内のすべてのノードにアクセスできる必要があります。また、ローカルファイルシステムパスすることができ、それがローカルファイルシステムのパスである場合は、各マシンが必要とされるのクラスタリングジャーパッケージが存在する同一のパス上のノード。
1.2配備モード
そこ-展開モードcluster
とclient
2つのオプションのパラメータ、デフォルト値client
。ここでは、両方のための糸モードでスパークで説明しました:
- 、Drvierは、クラスタモードでマスター・プロセス・アプリケーションで実行スパーク、プロセスがクラスタの糸によって管理され、クライアント投入されたジョブは、アプリケーションを起動した後閉じることができます。
- 、Drvierはクライアントモードでジョブを送信する過程で、クライアント上で実行されているスパーク、マスター・プロセスはYARNからリソースを要求するために使用されます。
1.3マスター-URL
マスター-URL次の表のすべてのオプションパラメータ:
マスターURL | 意味 |
---|---|
local |
ローカルでスパークを実行中のスレッドを使用します |
local[K] |
ローカルでスパークを実行しているKのワーカースレッドを使用します |
local[K,F] |
ローカルで実行されているKのワーカースレッドを使用して、2番目のパラメータは、タスクを再試行の回数失敗しました |
local[*] |
ローカルでスパークを実行している同じCPUを使用してスレッドとコアの数 |
local[*,F] |
<BR/>第二パラメータスパークローカルで実行しているCPUコアの同じ番号を使用してスレッドの数は、再試行の回数は、タスクの失敗しました |
spark://HOST:PORT |
スタンドアロンクラスタを指定されたマスターノードに接続されています。デフォルトのポート番号は7077です。 |
spark://HOST1:PORT1,HOST2:PORT2 |
飼育係を使用して、スタンドアロンクラスタは、高可用性を実現した場合、それは飼育係が設定したすべてのマスターのホストアドレスを含める必要があります。 |
mesos://HOST:PORT |
与えられたMesosクラスターに接続されています。デフォルトのポートは5050です。、使用のMesosクラスターのZooKeeperの場合はmesos://zk://... アドレスを指定するには、使用--deploy-mode cluster 提出するモデルを。 |
yarn |
クラスタ、クラスタ構成に接続された糸HADOOP_CONF_DIR 、又はYARN_CONF_DIR 決定。使用して--deploy-mode 設定するためのパラメータclient やcluster パターンを。 |
以下は、3つの一般的な展開モデルと対応するジョブのサブミットを説明しています。
二、ローカルモード
ローカル最もシンプルモードでジョブを提出し、何の構成は、次のコマンドを提出する必要はありません。
# 本地模式提交应用
spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
/usr/app/spark-2.4.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.0.jar \
100 # 传给 SparkPi 的参数
spark-examples_2.11-2.4.0.jar
スパークテストパケットは、供給されたSparkPi
パイの値を算出するため、実行結果は以下の通りであります:
三、スタンドアロンモード
スタンドアロンモードが内蔵されている管理する組み込みのリソース・マネージャを使用して、提供されるクラスタリングスパーク。クラスタ構成マーテルプレゼンテーションと2つのワーカーノードに応じて、以下に示すように、2つのホストが実証本明細書で使用されます。
- hadoop001:2つだけのホストのでhadoop001マスターノードの両方ので、ノードは、労働者です。
- hadoop002:ワーカーノード。
3.1環境設定
私たちは、まずそのスパークが同じパス2つのホスト上で解凍されたことを確認する必要があります。その後にHadoop001 ${SPARK_HOME}/conf/
ディレクトリ、構成、およびサンプルコンフィギュレーションをコピーします。
# cp spark-env.sh.template spark-env.sh
でspark-env.sh
JDKのディレクトリ構成、構成の完了後hadoop002をSCPに分配されます。
# JDK安装位置
JAVA_HOME=/usr/java/jdk1.8.0_201
3.2クラスタ構成
では${SPARK_HOME}/conf/
、ディレクトリ、クラスタ構成とサンプル構成をコピーします。
# cp slaves.template slaves
すべてのワーカーノードのホスト名を指定します。
# A Spark Worker will be started on each of the machines listed below.
hadoop001
hadoop002
これは、以下の3点ことに留意すべきです。
- 主机名与 IP 地址的映射必须在
/etc/hosts
文件中已经配置,否则就直接使用 IP 地址; - 每个主机名必须独占一行;
- Spark 的 Master 主机是通过 SSH 访问所有的 Worker 节点,所以需要预先配置免密登录。
3.3 启动
使用 start-all.sh
代表启动 Master 和所有 Worker 服务。
./sbin/start-master.sh
访问 8080 端口,查看 Spark 的 Web-UI 界面,,此时应该显示有两个有效的工作节点:
3.4 提交作业
# 以client模式提交到standalone集群
spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop001:7077 \
--executor-memory 2G \
--total-executor-cores 10 \
/usr/app/spark-2.4.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.0.jar \
100
# 以cluster模式提交到standalone集群
spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://207.184.161.138:7077 \
--deploy-mode cluster \
--supervise \ # 配置此参数代表开启监督,如果主应用程序异常退出,则自动重启 Driver
--executor-memory 2G \
--total-executor-cores 10 \
/usr/app/spark-2.4.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.0.jar \
100
3.5 可选配置
在虚拟机上提交作业时经常出现一个的问题是作业无法申请到足够的资源:
Initial job has not accepted any resources;
check your cluster UI to ensure that workers are registered and have sufficient resources
<br/>
这时候可以查看 Web UI,我这里是内存空间不足:提交命令中要求作业的 executor-memory
是 2G,但是实际的工作节点的 Memory
只有 1G,这时候你可以修改 --executor-memory
,也可以修改 Woker 的 Memory
,其默认值为主机所有可用内存值减去 1G。
<br/>
关于 Master 和 Woker 节点的所有可选配置如下,可以在 spark-env.sh
中进行对应的配置:
Environment Variable(环境变量) | Meaning(含义) |
---|---|
SPARK_MASTER_HOST |
master 节点地址 |
SPARK_MASTER_PORT |
master 节点地址端口(默认:7077) |
SPARK_MASTER_WEBUI_PORT |
master 的 web UI 的端口(默认:8080) |
SPARK_MASTER_OPTS |
仅用于 master 的配置属性,格式是 "-Dx=y"(默认:none),所有属性可以参考官方文档:spark-standalone-mode |
SPARK_LOCAL_DIRS |
spark 的临时存储的目录,用于暂存 map 的输出和持久化存储 RDDs。多个目录用逗号分隔 |
SPARK_WORKER_CORES |
spark worker 节点可以使用 CPU Cores 的数量。(默认:全部可用) |
SPARK_WORKER_MEMORY |
spark worker 节点可以使用的内存数量(默认:全部的内存减去 1GB); |
SPARK_WORKER_PORT |
ポートスパークワーカーノード(デフォルト:ランダム(ランダム)) |
SPARK_WORKER_WEBUI_PORT |
ポート(ポート)のウェブUIの作業員(デフォルト:8081) |
SPARK_WORKER_DIR |
労働者がアプリケーションのディレクトリを実行して、このディレクトリはログやスクラッチスペースが含まれています(デフォルト:SPARK_HOME /作品) |
SPARK_WORKER_OPTS |
労働者のための構成プロパティ、フォーマットは「Y -Dx =」(デフォルト:なし)です。すべてのプロパティは、公式ドキュメントを参照することができます:スパークを-スタンドアロン-MODE |
SPARK_DAEMON_MEMORY |
メモリは、マスターと労働者デーモンを刺激するために割り当てられます。(デフォルト:1G) |
SPARK_DAEMON_JAVA_OPTS |
JVMオプションスパークマスターワーカーデーモン、フォーマットは「Y -Dx =」(デフォルト:なし)であります |
SPARK_PUBLIC_DNS |
公共のDNS名のスパークマスターと労働者。(デフォルト:なし) |
三、糸モードにスパーク
糸の実行をサポートするためのジョブを提出するスパークは、この時間は、ワーカーノードを起動する必要はありませんマスターノードを起動する必要はありません。
3.1構成
ではspark-env.sh
、ディレクトリのHadoop位置の設定、使用することができるYARN_CONF_DIR
か、HADOOP_CONF_DIR
指定されました:
YARN_CONF_DIR=/usr/app/hadoop-2.6.0-cdh5.15.2/etc/hadoop
# JDK安装位置
JAVA_HOME=/usr/java/jdk1.8.0_201
3.2開始
スパークは、計算中に一時ファイルを格納するためにHDFSを使用するためのHadoopは、ここにYARNとHDFSを含め、開始されていることを確認する必要がありHDFSが起動しない場合、それは例外がスローされます、起動する必要があります。
# start-yarn.sh
# start-dfs.sh
3.3申請書を提出
# 以client模式提交到yarn集群
spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
--executor-memory 2G \
--num-executors 10 \
/usr/app/spark-2.4.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.0.jar \
100
# 以cluster模式提交到yarn集群
spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--executor-memory 2G \
--num-executors 10 \
/usr/app/spark-2.4.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.0.jar \
100
もっと大きなデータ系列は、GitHubのオープンソースプロジェクトを見つけることができます:ビッグデータははじめに