StandAlone模式环境搭建
环境准备:三台Linux,一个安装Master,其他两台机器安装Worker
- 下载spark安装包,下载地址:https://spark.apache.org/downloads.html
- 上传spark安装包到Linux服务器上
- 解压spark安装包
tar -zxvf spark-3.2.3-bin-hadoop3.2.tgz -C /opt/apps
- 进入到spark按照包目录并将conf目录下的spark-env.sh.template重命名为spark-env.sh,再修改
export JAVA_HOME=/usr/local/jdk1.8.0_251/export SPARK_MASTER_HOST=linux01
- 将conf目录下的workers.template重命名为workers并修改,指定Worker的所在节点
linux02linux03
- 将配置好的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")