StandAlone模式环境搭建

环境准备:三台Linux,一个安装Master,其他两台机器安装Worker

  1. 下载spark安装包,下载地址:https://spark.apache.org/downloads.html
  2. 上传spark安装包到Linux服务器上
  3. 解压spark安装包
tar -zxvf spark-3.2.3-bin-hadoop3.2.tgz -C /opt/apps
  1. 进入到spark按照包目录并将conf目录下的spark-env.sh.template重命名为spark-env.sh,再修改
export JAVA_HOME=/usr/local/jdk1.8.0_251/export SPARK_MASTER_HOST=linux01
  1. 将conf目录下的workers.template重命名为workers并修改,指定Worker的所在节点
linux02linux03
  1. 将配置好的spark拷贝到其他节点
for i in {2..3}; do scp -r spark-3.2.3-bin-hadoop3.2 linux0$i:$PWD; done

启动Spark集群

  • 在Spark的安装目录执行启动脚本
sbin/start-all.sh
  • 执行jps命令查看Java进程
jps

在ndoe-1上可以看见Master进程,在其他的节点上可以看见到Worker进程

  • 访问Master的web管理界面,端口8080

一些重要参数

export SPARK_WORKER_CORES=4    #指定worker可用的逻辑核数export SPARK_WORKER_MEMORY=2g  #指定worker可用的内存大小

standalone模式高可用部署

spark的standalone模式可以启动两个以上的Master,但是需要依赖zookeeper进行协调,所有的节点启动后,都向zk注册

修改配置文件spark-env.sh

 # 注释掉master的地址,所有节点都先连接zookeeper # export SPARK_MASTER_HOST=linux01 export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=linux01:2181,linux02:2181,linux03:2181 -Dspark.deploy.zookeeper.dir=/spark"

启动Spark Shell编程

spark shell是spark中的交互式命令行客户端,可以在spark shell中使用scala编写spark程序,启动后默认已经创建了SparkContext,别名为sc

/opt/apps/spark-3.2.3-bin-hadoop3.2/bin/spark-shell \--master spark://linux01:7077 --executor-memory 1g \--total-executor-cores 3

如果Master配置了HA高可用,需要指定两个Master(因为这两个Master任意一个都可能是Active状态)

/bigdata/spark-3.2.3-bin-hadoop3.2/bin/spark-shell \--master spark://linux01:7077,linux02:7077 \--executor-memory 1g \--total-executor-cores 3

参数说明:
–master 指定masterd地址和端口,协议为spark://,端口是RPC的通信端口
–executor-memory 指定每一个executor的使用的内存大小
–total-executor-cores指定整个application总共使用了cores

在shell中编写第一个spark程序

sc.textFile("hdfs://linux01:9000/words.txt").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).sortBy(_._2,false).saveAsTextFile("hdfs://linux01:9000/out")