spark之Standalone模式部署配置詳解
spark運(yùn)行模式
Spark 有很多種模式,最簡單就是單機(jī)本地模式,還有單機(jī)偽分布式模式,復(fù)雜的則運(yùn)行在集群中,目前能很好的運(yùn)行在 Yarn和 Mesos 中,當(dāng)然 Spark 還有自帶的 Standalone 模式,對于大多數(shù)情況 Standalone 模式就足夠了,如果企業(yè)已經(jīng)有 Yarn 或者 Mesos 環(huán)境,也是很方便部署的。
1.local(本地模式):常用于本地開發(fā)測試,本地還分為local單線程和local-cluster多線程;
2.standalone(集群模式):典型的Mater/slave模式,不過也能看出Master是有單點(diǎn)故障的;Spark支持ZooKeeper來實(shí)現(xiàn) HA
3.on yarn(集群模式): 運(yùn)行在 yarn 資源管理器框架之上,由 yarn 負(fù)責(zé)資源管理,Spark 負(fù)責(zé)任務(wù)調(diào)度和計(jì)算
4.on mesos(集群模式): 運(yùn)行在 mesos 資源管理器框架之上,由 mesos 負(fù)責(zé)資源管理,Spark 負(fù)責(zé)任務(wù)調(diào)度和計(jì)算
5.on cloud(集群模式):比如 AWS 的 EC2,使用這個(gè)模式能很方便的訪問 Amazon的 S3;Spark 支持多種分布式存儲系統(tǒng):HDFS 和 S3
Spark Standalone集群部署
準(zhǔn)備工作
1.這里我下載的是Spark的編譯版本,否則需要事先自行編譯
2.Spark需要Hadoop的HDFS作為持久化層,所以在安裝Spark之前需要安裝Hadoop,這里Hadoop的安裝就不介紹了,給出一個(gè)教程hadoop 單機(jī)安裝配置教程
3.實(shí)現(xiàn)創(chuàng)建hadoop用戶,Hadoop、Spark等程序都在該用戶下進(jìn)行安裝
4.ssh無密碼登錄,Spark集群中各節(jié)點(diǎn)的通信需要通過ssh協(xié)議進(jìn)行,這需要事先進(jìn)行配置。通過在hadoop用戶的.ssh目錄下將其他用戶的id_rsa.pub公鑰文件內(nèi)容拷貝的本機(jī)的authorized_keys文件中,即可事先無登錄通信的功能
5.Java環(huán)境的安裝,同時(shí)將JAVA_HOME、CLASSPATH等環(huán)境變量放到主目錄的.bashrc,執(zhí)行source .bashrc使之生效
部署配置
這里配置工作需要以下幾個(gè)步驟:
1.解壓Spark二進(jìn)制壓縮包
2.配置conf/spark-env.sh文件
3.配置conf/slave文件
下面具體說明一下:
配置Spark的運(yùn)行環(huán)境,將spark-env.sh.template模板文件復(fù)制成spark-env.sh,然后填寫相應(yīng)需要的配置內(nèi)容:
export SPARK_MASTER_IP=hadoop1 export SPARK_MASTER_PORT=7077 export SPARK_WORKER_CORES=1 export SPARK_WORDER_INSTANCES=1 export SPARK_WORKER_MEMORY=3g
其他選項(xiàng)內(nèi)容請參照下面的選項(xiàng)說明:
# Options for the daemons used in the standalone deploy mode: # - SPARK_MASTER_IP, to bind the master to a different IP address or hostname # - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master # - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y") # - SPARK_WORKER_CORES, to set the number of cores to use on this machine # - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g) # - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker # - SPARK_WORKER_INSTANCES, to set the number of worker processes per node # - SPARK_WORKER_DIR, to set the working directory of worker processes # - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y") # - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y")
conf/slave文件用戶分布式節(jié)點(diǎn)的配置,這里只需要在slave文件中寫入該節(jié)點(diǎn)的主機(jī)名即可
將以上內(nèi)容都配置好了,將這個(gè)spark目錄拷貝到各個(gè)節(jié)點(diǎn)scp -r spark hadoop@hadoop2:~
接下來就可以啟動集群了,在Spark目錄中執(zhí)行sbin/start-all.sh,然后可以通過netstat -nat命令查看端口7077的進(jìn)程,還可以通過瀏覽器訪問hadoop1:8080了解集群的概況
Spark Client部署
Spark Client的作用是,事先搭建起Spark集群,然后再物理機(jī)上部署客戶端,然后通過該客戶端提交任務(wù)給Spark集群。
由于上面介紹了Standalone分布式集群是如何搭建的,這里只需將集群上的spark文件夾拷貝過來。
最簡單的Spark客戶端訪問集群的方式就是通過Spark shell的方式:bin/spark-shell --master spark://hadoop1:7077這樣就可以訪問集群了。
這樣在瀏覽器的Spark集群界面上就可以看到Running Applications一欄中有Spark shell的應(yīng)用在執(zhí)行。
Spark Standalone偽分布式部署
偽分布式是在一臺機(jī)器上進(jìn)行部署來模擬分布式的集群,這里部署的過程和Standalone集群的部署是類似的,事前的工作都是一樣的,這里只是在配置文件中做相應(yīng)的修改就可以了。
這里還是配置這兩個(gè)文件:
配置conf/spark-env.sh文件
配置conf/slave文件
修改spark-env.sh文件,修改master的ip,這里主機(jī)名和用戶ip分別在/etc/hostname和/etc/hosts文件中進(jìn)行配置
export SPARK_MASTER_IP=jason export SPARK_MASTER_PORT=7077 export SPARK_WORKER_CORES=1 export SPARK_WORDER_INSTANCES=1 export SPARK_WORKER_MEMORY=3g
slave文件中,填寫自己的主機(jī)名,比如我的主機(jī)名jason
總結(jié)
以上就是本文關(guān)于spark之Standalone模式部署配置詳解的全部內(nèi)容,感興趣的朋友可以繼續(xù)參閱:淺談七種常見的Hadoop和Spark項(xiàng)目案例、詳解Java編寫并運(yùn)行spark應(yīng)用程序的方法、Spark的廣播變量和累加器使用方法代碼示例等,希望對大家有所幫助。感謝各位對腳本之家網(wǎng)站的支持!
相關(guān)文章
java藍(lán)橋杯歷年真題及答案整理(小結(jié))
這篇文章主要介紹了java藍(lán)橋杯歷年真題及答案整理(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02修改idea運(yùn)行內(nèi)存大小的方法總結(jié)
在開發(fā)過程中,總會遇到idea運(yùn)行內(nèi)存不足,所以本文小編給大家介紹了修改idea運(yùn)行內(nèi)存大小的兩種方法,文中通過圖文給大家講解的非常詳細(xì),需要的朋友可以參考下2023-12-12使用feign調(diào)用接口時(shí)調(diào)不到get方法的問題及解決
這篇文章主要介紹了使用feign調(diào)用接口時(shí)調(diào)不到get方法的問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03基于Restful接口調(diào)用方法總結(jié)(超詳細(xì))
下面小編就為大家?guī)硪黄赗estful接口調(diào)用方法總結(jié)(超詳細(xì))。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08關(guān)于weblogic部署Java項(xiàng)目的包沖突問題的解決
這篇文章主要介紹了關(guān)于weblogic部署Java項(xiàng)目的包沖突問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01SpringCloud之Feign代理,聲明式服務(wù)調(diào)用方式
這篇文章主要介紹了SpringCloud之Feign代理,聲明式服務(wù)調(diào)用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03