---
title: Spark配置
description: "1. 使用PuTTY工具，以root用户登录服务器。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpenghadoopspark_02_0009.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpenghadoopspark_02_0009.html
indexId: ecf5a8d98806b39fbb65bcfbbd1f94a82d60e978782d2693b44b0f8cdeec742e73
---
# Spark配置

#### 操作步骤

1. 使用PuTTY工具，以root用户登录服务器。
2. 执行以下命令下载scala。

```
cd
/path/to/HADOOP
wget https://downloads.lightbend.com/scala/2.12.4/scala-2.12.4.tgz
tar xvf scala-2.12.4.tgz
```


3. 执行以下命令解压Spark安装包。

```
tar -xvf  spark-2.4.4-bin-hadoop2.7.tgz
```


4. 执行以下命令进入解压后的目录。

```
cd
/path/to/HADOOP
/spark-2.4.4-bin-hadoop2.7/conf
```


5. 执行以下命令修改“spark-defaults.conf”配置文件。

```
mv spark-defaults.conf.template spark-defaults.conf
vi spark-defaults.conf
```


  a. 按“i”进入编辑模式，编辑“spark-defaults.conf”文件，新增以下内容。

```
spark.master                     spark://armnode2:7077
spark.scheduler.mode             FAIR
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://armnode2:9000/sparklog
spark.shuffle.consolidateFiles   true
spark.shuffle.manager            SORT
spark.sql.hive.convertMetastoreOrc false
```


    “armnode2”为安装环境的主机名，用户根据实际情况进行配置，可以使用“hostname”查询安装环境的主机名。

  b. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
6. 执行以下命令修改“slaves”配置文件。

```
mv slaves.template slaves
vi slaves
```


  a. 按“i”进入编辑模式，编辑“slaves”文件，新增安装环境的主机名。

```
armnode2
```


  b. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
7. 执行以下命令修改“spark-env.sh”配置文件。

```
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
```


  a. 按“i”进入编辑模式，编辑“spark-env.sh”文件，新增以下内容。

```
export JAVA_HOME=
/path/to/HADOOP
/jdk1.8.0_171
export SCALA_HOME=
/path/to/HADOOP
/scala-2.12.4
export SPARK_HOME=
/path/to/HADOOP
/spark-2.4.4-bin-hadoop2.7
export SPARK_MASTER_IP=armnode2
export HADOOP_HOME=
/path/to/HADOOP
/hadoop-3.1.2
export HADOOP_CONF_DIR=
/path/to/HADOOP
/hadoop-3.1.2/etc/hadoop
export SPARK_DIST_CLASSPATH=$(
/path/to/HADOOP
/hadoop-3.1.2/bin/hadoop classpath)
export SPARK_DRIVER_MEMORY=30g
export SPARK_WORKER_INSTANCES=10
export SPARK_WORKER_CORES=16
export SPARK_WORKER_MEMORY=20g
export SPARK_EXECUTOR_MEMORY=10g
export SPARK_LOCAL_DIRS=
/path/to/HADOOP
/hadoop-3.1.2/hdfs/spark/tmp
export SPARK_WORKER_DIR=
/path/to/HADOOP
/hadoop-3.1.2/hdfs/spark/work
```


    “armnode2”为安装环境的主机名，用户根据实际情况进行配置，可以使用“hostname”查询安装环境的主机名。

  b. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
8. 执行以下命令进入配置文件目录。

```
cd
/path/to/HADOOP
```


9. 执行以下命令配置环境变量。

  a. 打开文件。

```
vi env.sh
```


  b. 按“i”进入编辑模式，新建环境变量文件，添加如下内容。

```
export JAVA_HOME=
/path/to/HADOOP
/jdk1.8.0_171
export JRE_HOME=$JAVA_HOME/jre
export PATH=:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export HADOOP_HOME=
/path/to/HADOOP
/hadoop-3.1.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HDFS_DATANODE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export SCALA_HOME=
/path/to/HADOOP
/scala-2.12.4
export PATH=$SCALA_HOME/bin:$PATH
export SPARK_HOME=
/path/to/HADOOP
/spark-2.4.4-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH
```


    Hadoop配置文件说明： Hadoop的运行方式是由配置文件决定的（运行Hadoop时会读取配置文件），因此如果需要从伪分布式模式切换回非分布式模式，需要删除core-site.xml中的配置项。 此外，伪分布式虽然只需要配置fs.defaultFS和dfs.replication就可以运行（官方教程如此），不过若没有配置hadoop.tmp.dir参数，则默认使用的临时目录为/tmp/hadoo-hadoop，而这个目录在重启时有可能被系统清理掉，导致必须重新执行format才行。所以我们进行了设置，同时也指定dfs.namenode.name.dir和dfs.datanode.data.dir，否则在接下来的步骤中可能会出错。

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 执行以下命令使环境变量生效。

```
source
env.sh
```


10. 配置完成后，执行NameNode的格式化。

```
hdfs namenode -format
```


  显示如下内容表示正常结束。

11. 执行以下命令开启NameNode和DataNode守护进程。

```
start-dfs.sh
jps
```


  启动完成后，可以通过命令jps来判断是否成功启动，若成功启动则会列出如图1所示进程: “NameNode”、“DataNode”和“SecondaryNameNode”（如果“SecondaryNameNode”没有启动，请运行sbin/stop-dfs.sh关闭进程，然后再次尝试启动尝试）。如果没有“NameNode”或“DataNode”，那就是配置不成功，请仔细检查之前步骤，或通过查看启动日志排查原因。

  图1 显示样例

12. 执行以下命令进入spark相应路径。

```
cd
/path/to/HADOOP
/spark-2.4.4-bin-hadoop2.7/sbin
```


13. 执行以下命令开启spark进程。

```
./start-all.sh
jps
```


  启动完成后，可以通过命令jps来判断是否成功启动，若成功启动则会列出多个“Worker”进程，如图2所示。

  图2 显示样例
