配环境
1.etc/profile
export SPARK_HOME=/usr/local/spark/spark2.2
export PATH=$SPARK_HOME/bin:$PATH
2.spark/conf/spark-env.sh
export JAVA_HOME=/usr/local/java/jdk1.8.0_161
export SPARK_MASTER_HOST=127.0.0.1 #不是master-ip那是1.x版本的写法
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.3
export SPARK_HOME=/usr/local/spark/spark2.2
export SPARK_LIBARY_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib/native
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native/:$LD_LIBRARY_PATH
3.spark-default.conf
spark.master spark://ubuntu:7077 #这里要注意
spark.ui.port 4040#提交作业的默认UI,被占用的时候依次往下推
配置spark主要配置两个文件,一个是spark-env.sh这是spark的环境变量。另外一个是spark-defauts是每次提交作业的配置,可以不用配置,默认使用默认的配置或者提交作业的时候动态配置。
在启动sparkmaster和worker的时候,在sbin目录下用./形式启动,否则运行的是hadoop的命令,那样始终看不到master和worker
master 的端口和UI的端口不是一个端口
spark-default.conf中的spark UI port是每次提交作业默认的显示端口
整个spark的UI显示端口在8080
测试
运行示例程序sparkPI
./spark-submit --class org.apache.spark.examples.SparkPi --master spark://127.0.0.1:7077 /home/tobin/framework/spark/spark-2.2.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.2.0.jar
class org.apache.spark.examples.SparkPi是类名
可能踩到的坑
(1)
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
在spark-env.sh中添加
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native/:$LD_LIBRARY_PATH
(2)
WARN StandaloneAppClient$ClientEndpoint: Failed to connect to master localhost:7077
打开web UI,8080端口的那个,看上面写的master地址和端口是多少,spark-default.sh中spark.mater的值就要写多少
(3)在pycharm中使用spark的pyspark时,需要在环境变量里面把spark的python文件路径和python文件夹下lib的py4压缩文件添加进去