# StandAlone模式環境搭建 環境準備:三台Linux,一個安裝Master,其他兩台機器安裝Worker ![image](https://img2023.cnblogs.com/blog/1742816/202306/1742816-20230627212426287-907092698 ...
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的所在節點
linux02
linux03
- 將配置好的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")