From 817971739918fcd2fca0d5292753e46c9bdafbdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Tue, 4 Jun 2019 15:00:03 +0800 Subject: [PATCH] =?UTF-8?q?Spark=E9=83=A8=E7=BD=B2=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=8E=E4=BD=9C=E4=B8=9A=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/Spark部署模式与作业提交.md | 28 ++++++++++++----------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/notes/Spark部署模式与作业提交.md b/notes/Spark部署模式与作业提交.md index e7ebf83..03092fe 100644 --- a/notes/Spark部署模式与作业提交.md +++ b/notes/Spark部署模式与作业提交.md @@ -12,7 +12,7 @@ ### 1.1 spark-submit -Spark所有模式均通过使用`spark-submit`提交作业,其命令格式如下: +Spark所有模式均使用`spark-submit`命令提交作业,其格式如下: ```shell ./bin/spark-submit \ @@ -25,14 +25,14 @@ Spark所有模式均通过使用`spark-submit`提交作业,其命令格式如 [application-arguments] #传递给主入口类的参数 ``` -需要注意的是:在集群环境下,`application-jar`必须能被集群中所有节点都能访问,可以是HDFS上的路径;也可以是本地文件系统路径,如果是本地文件系统路径,则要求集群中每一个节点上的相同路径都存在该Jar包。 +需要注意的是:在集群环境下,`application-jar`必须能被集群中所有节点都能访问,可以是HDFS上的路径;也可以是本地文件系统路径,如果是本地文件系统路径,则要求集群中每一个机器节点上的相同路径都存在该Jar包。 ### 1.2 deploy-mode deploy-mode有`cluster`和`client`两个可选参数,默认为`client`。这里以Spark On Yarn模式对两者的区别进行说明 : -+ 在cluster模式下,Spark Drvier在应用程序Master进程内运行,该进程由群集上的YARN管理,提交作业的客户端可以在启动应用程序后关闭; -+ 在client模式下,Spark Drvier在提交作业的客户端进程中运行,应用程序Master服务器仅用于从YARN请求资源。 ++ 在cluster模式下,Spark Drvier在应用程序的Master进程内运行,该进程由群集上的YARN管理,提交作业的客户端可以在启动应用程序后关闭; ++ 在client模式下,Spark Drvier在提交作业的客户端进程中运行,Master进程仅用于从YARN请求资源。 ### 1.3 master-url @@ -45,12 +45,12 @@ master-url的所有可选参数如下表所示: | `local[K,F]` | 使用 K 个 worker 线程本地运行 , 第二个参数为Task的失败重试次数 | | `local[*]` | 使用与CPU核心数一样的线程数在本地运行Spark | | `local[*,F]` | 使用与CPU核心数一样的线程数在本地运行Spark
第二个参数为Task的失败重试次数 | -| `spark://HOST:PORT` | 连接至指定的standalone 集群的 master节点。端口号默认是 7077。 | +| `spark://HOST:PORT` | 连接至指定的 standalone 集群的 master 节点。端口号默认是 7077。 | | `spark://HOST1:PORT1,HOST2:PORT2` | 如果standalone集群采用Zookeeper实现高可用,则必须包含由zookeeper设置的所有master主机地址。 | | `mesos://HOST:PORT` | 连接至给定的Mesos集群。端口默认是 5050。对于使用了 ZooKeeper 的 Mesos cluster 来说,使用 `mesos://zk://...`来指定地址,使用 `--deploy-mode cluster`模式来提交。 | -| `yarn` | 连接至一个YARN 集群,集群由配置的 `HADOOP_CONF_DIR` 或者 `YARN_CONF_DIR` 来决定。使用`--deploy-mode`参数来配置`client` 或`cluster` 模式。 | +| `yarn` | 连接至一个 YARN 集群,集群由配置的 `HADOOP_CONF_DIR` 或者 `YARN_CONF_DIR` 来决定。使用`--deploy-mode`参数来配置`client` 或`cluster` 模式。 | -接下来主要介绍三种常用部署模式的配置及作业的提交。 +下面主要介绍三种常用部署模式及对应的作业提交方式。 ## 二、Local模式 @@ -65,7 +65,7 @@ spark-submit \ 100 # 传给SparkPi的参数 ``` -这里的`spark-examples_2.11-2.4.0.jar`在Spark安装包里默认就有,是Spark官方提供的测试用例,`SparkPi`用于计算Pi值,执行成功后可以在输出中看到计算出的Pi值。 +`spark-examples_2.11-2.4.0.jar`是Spark提供的测试用例包,`SparkPi`用于计算Pi值,执行结果如下:
@@ -73,9 +73,7 @@ spark-submit \ ## 三、Standalone模式 -Standalone是Spark提供的一种内置的集群模式,采用内置的资源管理器进行管理。 - -下面按照如图所示演示1个Mater和2个Worker节点的集群配置,这里使用两台主机进行演示: +Standalone是Spark提供的一种内置的集群模式,采用内置的资源管理器进行管理。下面按照如图所示演示1个Mater和2个Worker节点的集群配置,这里使用两台主机进行演示: + hadoop001: 由于只有两台主机,所以hadoop001既是Master节点,也是Worker节点; + hadoop002 : Worker节点。 @@ -121,7 +119,7 @@ hadoop002 + 主机名与IP地址的映射必须在`/etc/hosts`文件中已经配置,否则就直接使用IP地址; + 每个主机名必须独占一行; -+ Spark的Master主机是通过ssh访问所有的Worker节点,所以需要预先配置免密登录。或者通过设置环境变量`SPARK_SSH_FOREGROUND`并为每个Worker节点指定密码。 ++ Spark的Master主机是通过SSH访问所有的Worker节点,所以需要预先配置免密登录。 ### 3.3 启动 @@ -170,10 +168,14 @@ check your cluster UI to ensure that workers are registered and have sufficient
+
+ 这时候可以查看Web UI,我这里是内存空间不足:提交命令中要求作业的`executor-memory`是2G,但是实际的工作节点的`Memory`只有1G,这时候你可以修改`--executor-memory`,也可以修改 Woker 的`Memory`,其默认值为主机所有可用内存值减去1G。
+
+ 关于Master和Woker节点的所有可选配置如下,可以在`spark-env.sh`中进行对应的配置: | Environment Variable(环境变量) | Meaning(含义) | @@ -211,7 +213,7 @@ JAVA_HOME=/usr/java/jdk1.8.0_201 ### 3.2 启动 -必须要保证Hadoop已经启动,这里包括Yarn和HDFS都需要启动,因为在计算过程中Spark会使用HDFS存储临时文件,如果HDFS没有启动,则会抛出异常。 +必须要保证Hadoop已经启动,这里包括YARN和HDFS都需要启动,因为在计算过程中Spark会使用HDFS存储临时文件,如果HDFS没有启动,则会抛出异常。 ```shell # start-yarn.sh