0%

spark环境配置

spark环境配置

首先我下载的是spark-3.1.1-bin-without-hadoop,由于spark中没有带有hadoop,所以操作起来是比较麻烦的,spark先要关联我自己的hadoop环境

在conf下的spark-env.sh中添加

1
2
3
// /usr/local/myself/hadoop-3.3.0/bin/hadoop是我自己的hadoop所在位置,这样就可以使用hadoop中的jar包了
// 如果不加这句话会导致spark缺少很多jar包
export SPARK_DIST_CLASSPATH=$(/usr/local/myself/hadoop-3.3.0/bin/hadoop classpath)

注意在环境变量中配置scala、spark、hadoop等

本地单机模式环境搭建(local)

spark-shell执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
spark-shell

21/05/13 10:24:47 WARN Utils: Your hostname, zhanghedeMacBook resolves to a loopback address: 127.0.0.1; using 192.168.1.123 instead (on interface en0)
21/05/13 10:24:47 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
21/05/13 10:24:48 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://192.168.1.123:4040
Spark context available as 'sc' (master = local[*], app id = local-1620872693690).
Spark session available as 'spark'.
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 3.1.1
/_/

Using Scala version 2.12.10 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_261)
Type in expressions to have them evaluated.
Type :help for more information.

启动spark的单机shell,这里可以看到spark的web页面是http://192.168.1.123:4040,如果使用SparkContext对象则使用sc即可,master = local[*], app id = local-1620872693690,本地环境

在hdfs中放入一个文件测试一下

1
2
3
4
5
6
// 这里读取的是hdfs的文件
sc.textFile("/spark/local/wordcount.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect()


res9: Array[(String, Int)] = Array((Zookeeper,3), (Kafka,1), (Yarn,1), (MapReduce,1), (Hive,2), (Scala,1), (MySQL,1), (Spark,1), (Hdfs,1), (Flume,1), (Agent,1), (Hbase,1), (Hadoop,4))

任务执行完之后就可以在页面上看到任务执行情况了

spark页面查看任务执行

使用:quit可以终止spark-shell

spark-submit执行

当然命令行没有提示,这个很不爽,所以可以在开发工具上开发好了之后打成jar包进行任务执行

1
2
3
4
5
./bin/spark-submit \
--class "org.apache.spark.examples.SparkPi" \
--master local \
./examples/jars/spark-examples_2.12-3.1.1.jar \
2

参数说明

  • –class Spark 程序中包含主函数的类
  • –master Spark 程序运行的环境,根据不同的环境来指定,如果是本地模式,则使用local;如果是连接到指定的spark集群上,则使用spark://host:port;如果连接到yarn集群,则使用yarn
  • –deploy-mode 选择在本地启动驱动器程序还是在集群中的一台工作节点机器上启动。客户端模式,使用client,会将驱动器程序运行在调用该命令的机器上;集群模式,使用cluter,驱动器程序会被传输并执行在集群的一个工作节点上。默认是client
  • –name 应用的显示名
  • –driver-memory 1G 指定driver驱动器可用内存
  • –executor-memory 1G 指定每个 executor 可用内存为 1G
  • –jars 所依赖的第三方jar包
  • –files 需要放到应用工作目录的文件的列表
  • –total-executor-cores 2 指定所有executor使用的cpu核数为 2 个
  • –executor-cores 指定每个executor使用的cpu核数
  • application-jar 打包好的应用 jar,包含依赖
  • application-arguments 传给 main()方法的参数

独立部署模式环境搭建(Standalone)

spark的Standalone模式是基本的主从模式

在conf目录中有一个workers.template配置文件,改为workers,在其中配置各个worker的ip或域名

在sbin目录下启动start-all.sh,这样就可以启动master和worker了

这里启动的默认端口是7077,web页面的端口是8080

启动之后执行任务查看可以正常执行

1
2
3
4
5
./bin/spark-submit \
--class "org.apache.spark.examples.SparkPi" \
--master spark://zhanghedeMacBook:7077 \
./examples/jars/spark-examples_2.12-3.1.1.jar \
2
单机集群查看任务执行

基于Yarn的集群模式环境搭建

独立部署模式使用的是spark自身提供的计算资源,但是spark本身是一个计算框架,不是一个资源调度框架,所以spark本身进行资源调度并不好,所以来使用Yarn来进行资源调度

修改spark-env.sh

1
2
# Yarn配置文件位置
YARN_CONF_DIR=/usr/local/myself/hadoop-3.3.0/etc/hadoop

启动之后执行任务查看可以正常执行,此时执行任务的master就是yarn

1
2
3
4
5
./bin/spark-submit \
--class "org.apache.spark.examples.SparkPi" \
--master yarn \
./examples/jars/spark-examples_2.12-3.1.1.jar \
2