Spark local& stand-alone配置

文章目录

*五、Spark-local模式*

\1. 上传并安装Anaconda3-2021.05-Linux-x86_64.sh文件

1
2
3
cd /export/server/

sh Anaconda3-2021.05-Linux-x86_64.sh

\2. 过程显示:

1
2
3
4
5
6
7
8
9
10
11
12
13
...

# 出现内容选 yes Please answer 'yes' or 'no':' >>> yes

...

# 出现添加路径:/export/server/anaconda3

...

[/root/anaconda3]>>>/export/server/anaconda3 PREFIX=/export/server/anaconda3

...

\3. 安装完成后,重新启动

img

看到base就表示安装完成了

\4. 创建虚拟环境pyspark基于python3.8

1
conda create -n pyspark python=3.8

\5. 切换到虚拟环境内

1
conda activate pyspark

img

\6. 在虚拟环境内安装包

1
pip install pyhive pyspark jieba -i https://pypi.tuna.tsinghua.edu.cn/simple

\7. 上传并解压spark-3.2.0-bin-hadoop3.2.tgz

1
2
3
cd /export/server

tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C /export/server/

\8. 创建软连接

1
ln -s /export/server/spark-3.2.0-bin-hadoop3.2 /export/server/spark

\9. 添加环境变量

1
vim /etc/profile

SPARK_HOME: 表示Spark安装路径在哪里

PYSPARK_PYTHON: 表示Spark想运行Python程序, 那么去哪里找python执行器

JAVA_HOME: 告知Spark Java在哪里

HADOOP_CONF_DIR: 告知Spark Hadoop的配置文件在哪里

HADOOP_HOME: 告知Spark Hadoop安装在哪里

img

1
vim .bashrc

内容添加进去:

1
2
3
4
5
6
7
#JAVA_HOME 

export JAVA_HOME=/export/server/jdk1.8.0_241

#PYSPARK_PYTHON

export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python

\10. 重新加载环境变量

1
2
3
source /etc/profile

source ~/.bashrc

\11. 开启spark

1
2
3
cd /export/server/anaconda3/ens/pyspark/bin/

./pyspark

img

\12. 进入WEB界面(node1:4040/)

img

\13. 退出

1
conda deactivate

*六、Spark-Standalone模式*

\1. 在node2、node3上安装Python(Anaconda)

出现base表明安装完成

\2. 将node1上的profile和./bashrc分发给node2、node3

#分发.bashrc

1
2
3
scp ~/.bashrc root@node2:~/

scp ~/.bashrc root@node3:~/

#分发profile

1
2
3
scp /etc/profile/ root@node2:/etc/

scp /etc/profile/ root@node3:/etc/

\3. 创建虚拟环境pyspark基于python3.8

1
conda create -n pyspark python=3.8

\4. 切换到虚拟环境

1
conda activate pyspark

img

\5. 在虚拟环境内安装包

1
pip install pyhive pyspark jieba -i https://pypi.tuna.tsinghua.edu.cn/simple 

\6. 修改配置文件

1
cd /export/server/spark/conf

-配置workers

1
mv workers.template workers
1
vim workers

# 将里面的localhost删除, 追加

1
2
3
4
5
node1 

node2

node3

-配置spark-env.sh

1
mv spark-env.sh.template spark-env.sh
1
vim spark-env.sh

在底部追加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## 设置JAVA安装目录 JAVA_HOME=/export/server/jdk  

## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群 HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop YARN_CONF_DIR=/export/server/hadoop/etc/hadoop

## 指定spark老大Master的IP和提交任务的通信端口

# 告知Spark的master运行在哪个机器上 export SPARK_MASTER_HOST=node1

# 告知sparkmaster的通讯端口 export SPARK_MASTER_PORT=7077

# 告知spark master的 webui端口 SPARK_MASTER_WEBUI_PORT=8080

# worker cpu可用核数 SPARK_WORKER_CORES=1 # worker可用内存 SPARK_WORKER_MEMORY=1g

# worker的工作通讯地址 SPARK_WORKER_PORT=7078

# worker的 webui地址 SPARK_WORKER_WEBUI_PORT=8081

## 设置历史服务器# 配置的意思是 将spark程序运行的历史日志存到hdfs的/sparklog文件夹中 SPARK_HISTORY_OPTS="Dspark.history.fs.logDirectory=hdfs://node1:8020/sparklog/ Dspark.history.fs.cleaner.enabled=true"

\7. 在HDFS上创建程序运行历史记录存放的文件夹:

1
2
3
hadoop fs -mkdir /sparklog 

hadoop fs -chmod 777 /sparklog

-配置spark-defaults.conf.template

1
mv spark-defaults.conf.template spark-defaults.conf 
1
vim spark-defaults.conf

# 修改内容, 追加如下内容

1
2
3
4
5
# 开启spark的日期记录功能 spark.eventLog.enabled  true 

# 设置spark日志记录的路径 spark.eventLog.dir hdfs://node1:8020/sparklog/

# 设置spark日志是否启动压缩 spark.eventLog.compress true

-配置log4j.properties

1
mv log4j.properties.template log4j.properties
1
vim log4j.properties

img

\8. 将node1的spark分发到node2、node3

1
2
3
4
5
cd /export/server/

scp -r /export/server/spark-3.2.0-bin-hadoop3.2/ node2:$PWD

scp -r /export/server/spark-3.2.0-bin-hadoop3.2/ node3:$PWD

\9. 在node2和node3上做软连接

1
ln -s /export/server/spark-3.2.0-bin-hadoop3.2 /export/server/spark

\10. 重新加载环境变量

1
source /etc/profile

\11. 启动历史服务器

1
2
3
cd /export/server/spark/sbin

./start-history-server.sh

\12. 访问WebUI界面(http://node1:18080/)

img

\13. 启动Spark的Master和Worker

# 启动全部master和worker sbin/start-all.sh

# 或者可以一个个启动:

# 启动当前机器的master

1
sbin/start-master.sh 

# 启动当前机器的worker

1
sbin/start-worker.sh

# 停止全部

1
sbin/stop-all.sh

# 停止当前机器的master

1
sbin/stop-master.sh  

# 停止当前机器的worker

1
sbin/stop-worker.sh

\14. 访问WebUI界面(http://node1:8080/)