的方式似懂非懂目录
首先下载spark安装包,Downloads | Apache Spark
选择对应hadoop版本的spark下载,其他版本链接:News | Apache Spark
一、 conda环境
为了隔离环境方便(ubuntu自带有python了,在虚拟环境单独再搞一个),根据ubuntu中安装miniconda3-py_ubuntu安装miniconda3-CSDN博客
安装好conda.
配置好源后,配置变量
vim ~/.bashrc
export ANACONDA_HOME=/home/peng/miniconda3/bin
export PATH=$PATH:$ANACONDA_HOME/bin
根据自己的路径更改
使其生效 source ~/.bashrc
这时发现,终端会自动进入conda的base环境,可以关闭
conda config --set auto_activate_base false
创建pyspark_env环境
conda create -n pyspark_env python=3.8
期间需要下载各种依赖包,都 y 就行
安装完成后,可查看当前安装的env。
conda env list
二、PySpark环境安装
摘自黑马:PySpark: 是Python的库, 由Spark官方提供. 专供Python语言使用. 类似Pandas一样,是一个库
先激活新创建的环境
conda activate pyspark_env
然后,在pyspark_env环境中,可以用pip install pyspark 或者** conda install pyspark==3.2.1 **安装pyspark 为了后续flink安装依赖包一致,下图pyspark后面加上==3.2.1
三、Spark On YARN环境搭建
如果是分布式的集群,下面步骤均需同步到每个节点。该教程参考自黑马程序员,非常感谢!
直接用之前电脑的存档文件,各位可以从官网下载到合适目录,我放在 /home/peng/software (硬盘换了,重新安装后,所有软件都放在这个目录了,先安装了hadoop3.2.4)下
1. 先解压
cd /home/peng/software
tar -zxvf spark-3.2.2-bin-hadoop3.2.tgz
创建spark的软连接:
ln -s spark-3.2.2-bin-hadoop3.2 spark
2. 配置spark-env.sh
先进入spark/conf目录
cd spark/conf/
cp spark-env.sh.template spark-env.sh
vim spark-env.sh
在配置地方,加入下面两行
HADOOP_CONF_DIR=/home/peng/software/hadoop-3.2.4/etc/hadoop
YARN_CONF_DIR=/home/peng/software/hadoop-3.2.4/etc/hadoop
注意:如果用的是spark-without-hadoop的spark安装包,需要在上面多添加一句:
(如,用的是spark-3.2.1-bin-without-hadoop.tgz,而hadoop是3.1.3的话,加一句下面的,否则不需要添加)
export SPARK_DIST_CLASSPATH=$(/home/peng/software/hadoop-3.1.3/bin/hadoop classpath)
3. 修改hadoop的yarn-site.xml
vi /home/peng/software/hadoop-3.2.4/etc/hadoop/yarn-site.xml
内容如下(注意其中的master改为你节点的名称或者ip,且是hdfs的主机,之前hdfs配置的是localhost,那么下面spark配置里面的所有master都需要改为localhost):
<configuration>
<!-- 配置yarn主节点的位置 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 设置yarn集群的内存分配方案 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>20480</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<!-- 开启日志聚合功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置聚合日志在hdfs上的保存时间 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs</value>
</property>
<!-- 关闭yarn内存检查 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
设置spark的历史服务器地址
cd /home/peng/software/spark/conf
cp spark-defaults.conf.template spark-defaults.conf
vi spark-defaults.conf
末尾添加下面内容(注意:改好master( master-->localhost),并在hdfs根目录下创建sparklog目录):
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:9000/sparklog/
spark.eventLog.compress true
spark.yarn.historyServer.address master:18080
设置日志级别
hadoop fs -mkdir /sparklog
cd /home/peng/software/spark/conf
cp log4j.properties.template log4j.properties
vi log4j.properties
设置 INFO 改为 WARN
4. 配置依赖spark jar包
当Spark Application应用提交运行在YARN上时,默认情况下,每次提交应用都需要将依赖Spark相关jar包上传到YARN 集群中,为了节省提交时间和存储空间,将Spark相关jar包上传到HDFS目录中,设置属性告知Spark Application应用
先在hadoop创建存放路径(先启动hdfs:strat-dfs.sh),再上传相关jar文件
start-all.sh
hadoop fs -mkdir -p /spark/jars
hadoop fs -put /home/peng/software/spark/jars/* /spark/jars
5. 修改spark-defaults.conf
cd /home/peng/software/spark/conf/
vi spark-defaults.conf
末尾添加下面一行(master —>localhost)
spark.yarn.jars hdfs://master:9000/spark/jars/*
6. 修改spark-env.sh
添加下面一行,注意master( master -> localhost)
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://master:9000/sparklog
-Dspark.history.retainedApplications=30"
7. 建议配上python
vi ~/.bashrc
# 添加下面两行
export PYSPARK_PYTHON=/home/peng/miniconda3/envs/pyspark_env/bin/python
export PYSPARK_DRIVER_PYTHON=/home/peng/miniconda3/envs/pyspark_env/bin/python
顺便配上SPARK_HOME
export SPARK_HOME=/home/peng/software/spark
export PATH=$PATH:$SPARK_HOME/bin
使生效,source ~/.bashrc
-----如果是集群模式,上面内容需要同步到其他节点---------------------------
四、提交测试
代码如下:
spark-submit \
--master yarn \
/home/peng/software/spark/examples/src/main/python/pi.py \
10
结果如下(确保sparklog已经被创建):
至此,完成了spark on yarn 的配置,单机版不用这么麻烦,但为了以后集群使用,故采用该方式。
版权归原作者 pzy0668 所有, 如有侵权,请联系我们删除。