发布时间:2022-10-14 21:30
安装对应版本scala
spark和scala的版本需要匹配,不然安装后启动会报错
官网下载源码包
http://spark.apache.org/downloads.html
其他版本可以去https://archive.apache.org/dist/spark/下载
解压后修改pom.xml中对应的scala、Hadoop版本
去dev/make-distribution.sh修改对应版本号,编译时会快一点
改为:
下载之后在pom.xml目录点击git bash here使用git编译 编译过程会有点久
./dev/make-distribution.sh --name “hadoop321-without-hive” --tgz “-Pyarn,hadoop-provided,hadoop-3.2.1”
指定hadoop版本,不带hive编译
编译成功后会生成一个安装包
解压安装包后修改配置文件
cd $SPARK_HOME/conf
mv spark-env.sh.template spark-env.sh
mv spark-defaults.conf.template spark-defaults.conf
vim spark-env.sh
加上配置:
export JAVA_HOME=/opt/jdk1.8.0_181
export SCALA_HOME=/opt/scala-2.11.12
export HADOOP_HOME=/opt/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_LAUNCH_WITH_SCALA=0
export SPARK_MASTER_IP=10.241.19.7
export SPARK_LIBRARY_PATH=/opt/spark-2.4.4-bin-hadoop321-without-hive/lib
export SPARK_MASTER_WEBUI_PORT=8082
export SPARK_WORKER_DIR=/opt/spark-2.4.4-bin-hadoop321-without-hive/work
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_PORT=7078
export SPARK_LOG_DIR=/opt/spark-2.4.4-bin-hadoop321-without-hive/log
export SPARK_PID_DIR=/opt/spark-2.4.4-bin-hadoop321-without-hive/run
export SPARK_DIST_CLASSPATH=$(/opt/hadoop/bin/hadoop classpath)
vim spark-defaults.conf
加上配置:
spark.master yarn-cluster
spark.home /opt/spark-2.4.4-bin-hadoop321-without-hive
spark.eventLog.enabled true
spark.eventLog.dir hdfs://10.××.××.7:9000/spark-log
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.executor.memory 2g
spark.driver.memory 2g
spark.executor.cores 2
spark.cores.max 2
spark.default.parallelism 36
spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers=“one two three”
spark.executor.extraClassPath /opt/spark-2.4.4-bin-hadoop321-without-hive/jars/*
spark.dirver.extraClassPath /opt/spark-2.4.4-bin-hadoop321-without-hive/jars/*
cd $SPARK_HOME/sbin
启动/停止 spark命令:
start-all.sh/stop.all.sh
访问 spark-env.sh配置的ui地址可以查看spark运行情况
然后再hive-site.xml 配置spark作为引擎
cd $HIVE_HOME/conf
vim hive-site.xml
hive.execution.engine
spark
spark.master
spark://10.××.××.7:7077
spark.enentLog.enabled
true
spark.enentLog.dir
hdfs://10.××.××.7:9000/spark-log
spark.executor.memeory
2g
spark.executor.cores
2
spark.cores.max
2
```
重启hive
netstat -nltp | grep 10000
netstat -nltp | grep 9083
kill -9 ********
hive --service metastore &
hiveserver2 &
**默认没有参数直接指定使用多少个executor数。而是按照如下方式计算而来executor 数量 = spark.cores.max/spark.executor.cores**
**spark.cores.max 默认没有设置,这时它使用的是 spark.deploy.defaultCores,而这个的默认值是Int.max,也就是不限制,这样应用就会获取所有可用的CPU资源,**
**spark.executor.cores (适用于ON YARN和standalone模式) 可以指定每个executor的cup
这个配置在hive-site.xml中配置**
**如果spark.cores.max不配置,spark.executor.cores配置为1,机器cup总数16,连接一个hive使用spark时就会占用所有资源,其他连接会等待直至失败。**
spark-env.sh的export SPARK_DIST_CLASSPATH=$(/opt/hadoop/bin/hadoop classpath)指定后 需要hadoop jar包时会去hadoop目录获取
使用spark-submit的命令格式:
spark-submit --conf "spark.eventLog.enabled=true" --conf "spark.eventLog.dir=hdfs://10.××.××.7:9000/spark-log" --master spark://10.××.××.7:7077 /opt/spark-2.4.4-bin-hadoop321-without-hive/examples/src/main/python/pi.py
开启spark的history-server
以standalone运行模式为例,在运行Spark Application的时候,Spark会提供一个WEBUI列出应用程序的运行时信息;但该WEBUI随着Application的完成(成功/失败)而关闭,也就是说,Spark Application运行完(成功/失败)后,将无法查看Application的历史记录;
Spark运行在yarn或者mesos之上,通过spark的history server仍然可以重构出一个已经完成的Application的运行时参数信息(假如Application运行的事件日志信息已经记录下来)
在spark-env.sh加上配置:
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://10.××.××.7:9000/spark-log"
spark-defaults.conf加上配置:
spark.yarn.historyServer.address 10.××.××.7:18080
spark.history.ui.port 18080
spark.history.fs.logDirector hdfs://10.××.××.7:9000/spark-log 注:该目录需要事先在hdfs上创建好,否则history-server启动报错
spark.yarn.preserve.staging.files true
spark.eventLog.enabled true
spark.eventLog.dir hdfs://10.××.××.7:9000/spark-log
启动命令:
${SPARK_HOME}/sbin/start-history-server.sh
停止命令:
${SPARK_HOME}/sbin/stop-history-server.sh
启动成功后就可以访问webui
在spark history-server里面查看日志是会跳转到hadoop 的jobHistoryServer服务的,因此需要开启hadoop的jobHistoryServer服务才能查看日志。