Spark集群的安裝及高可用配置
前期需求:Hadoop和Scala必須已經(jīng)安裝完成
步驟:
①進(jìn)入spark下載網(wǎng)站中https://spark.apache.org/downloads.html
(紅框的部分是選擇tar包的版本吝梅,選擇完畢之后點(diǎn)擊綠框的部分下載)
②下載完成之后用xftp將安裝包傳服務(wù)器的opt文件夾下。然后用tar命令解壓。解壓完成之后刪除安裝包允跑。再然后進(jìn)入/etc/profile配置環(huán)境變量客蹋。加入下面的兩條語句银伟,然后保存并退出用source命令使其生效嗽元。
export SPARK_HOME=/opt/spark-2.4.0-bin-hadoop2.7
在export PATH的末尾加上 :SPARK_HOME/sbin
③進(jìn)入/opt/spark-2.4.0-bin-hadoop2.7/conf文件夾下抄邀,執(zhí)行下面兩條語句
cp spark-env.sh.template spark-env.sh
cp slaves.template slaves
④用vi命令分別修改spark-env.sh和slaves
spark-env.sh的末尾添加如下語句
前三個(gè)都指的是對應(yīng)的安裝目錄,這個(gè)不多贅述晌纫,后面五個(gè)的意思如下
HADOOP_CONF_DIR:hadoop集群的配置文件的目錄
SPARK_MASTER_IP:spark集群的Master節(jié)點(diǎn)的ip地址
SPARK_WORKER_MEMORY:每個(gè)worker節(jié)點(diǎn)能夠最大分配給exectors的內(nèi)存大小
SPARK_WORKER_CORES:每個(gè)worker節(jié)點(diǎn)所占有的CPU核數(shù)目
SPARK_WORKER_INSTANCES:每臺(tái)機(jī)器上開啟的worker節(jié)點(diǎn)的數(shù)目
slaves的末尾修改為(工作者節(jié)點(diǎn)税迷,我這里選擇2號和3號機(jī),1號作為Master)
修改$SPARK_HOME/conf/spark_defaults.conf
在其尾部添加
spark.executor.extraClassPath=/opt/flume_tar_dir/libs/*
spark.driver.extraClassPath=/opt/flume_tar_dir/libs/*
主要是為了spark-submit 提交時(shí)不用指定jars锹漱,但是需要自己在idea打jar包時(shí)指定類打包箭养,將打包好的jar傳入該入境下,提交時(shí)不用寫--class
例:spark-submit --master spark://hadoop1:7077,hadoop2:7077 OfflineProject.jar
配置Spark高可用
vi /usr/etc/spark-2.3.0-bin-hadoop2.7/conf/spark-evn.sh
修改內(nèi)容如下:
#export SPARK_MASTER_IP=Master #注釋掉該行哥牍,Spark自己管理集群的狀態(tài)
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=Master:2181,Worker1:2181,Worker2:2181 -Dspark.deploy.zookeeper.dir=/spark" #通過Zookeeper管理集群狀態(tài)
/spark 自己定義一個(gè)保存數(shù)據(jù)的路徑
實(shí)現(xiàn)高可用得先在前兩個(gè)節(jié)點(diǎn)上啟動(dòng) spark-master.sh
然后停掉一個(gè)節(jié)點(diǎn) 訪問8080 查看狀態(tài)
⑤將/etc/profile以及Spark文件夾用scp命令分發(fā)到其他兩臺(tái)機(jī)子上毕泌。發(fā)送過去之后到其他兩臺(tái)機(jī)子的窗口里,用source命令使環(huán)境變量生效
⑥回到一號機(jī)嗅辣,開啟Zookeeper撼泛,然后執(zhí)行start-dfs.sh命令(開不開zookeeper其實(shí)沒什么影響,也沒要求說必須開辩诞,但是作為平常的習(xí)慣還是開啟了Zk)坎弯。執(zhí)行之后進(jìn)入/opt/spark-2.4.0-bin-hadoop2.7文件夾下,執(zhí)行 ./sbin/start-all.sh(進(jìn)入這里執(zhí)行的目的是為了防止和hadoop里的同名文件沖突)
然后查看三臺(tái)機(jī)子的節(jié)點(diǎn)(多了一個(gè)Master和兩個(gè)Worker)
⑦進(jìn)入Master所在機(jī)器的8080端口译暂,可以查看Worker的信息
⑧在Master機(jī)器上執(zhí)行 spark-shell命令抠忘。會(huì)出現(xiàn)如下語句
同樣,在開啟之后外永,也可以訪問4040端口查看當(dāng)前任務(wù)
至此崎脉,Spark集群安裝就算圓滿完成了。