因?yàn)橄朐谧约旱男”颈镜腖inux系統(tǒng)下裝spark藕筋。用一下章魚平臺(tái)上實(shí)驗(yàn)的Local模式下安裝Spark世澜。
實(shí)驗(yàn)來自章魚大數(shù)據(jù)--------------------------------------------------------------------------------------------------------------------------------------------------實(shí)驗(yàn)來自章魚大數(shù)據(jù)
實(shí)驗(yàn)?zāi)康?/b>
? ? ? ? ? ?1.了解Spark的六種運(yùn)行模式
? ? ? ? ? ?2.準(zhǔn)確理解Spark Local模式運(yùn)行原理
? ? ? ? ? ?3.熟練掌握Spark Local模式的安裝流程
實(shí)驗(yàn)原理
? ? ? ? ? ?目前Apache Spark主要支持三種分布式部署方式:分別是standalone、Spark on mesos和spark on YARN,其中东羹,第一種類似于 ?MapReduce 1.0所采用的模式,內(nèi)部實(shí)現(xiàn)了容錯(cuò)性和資源管理忠烛,后兩種則是未來發(fā)展的趨勢(shì)属提,部分容錯(cuò)性和資源管理交由統(tǒng)一的資源管理系統(tǒng)完成:讓Spark運(yùn)行在一個(gè)通用的資源管理系統(tǒng)之上,這樣可以與其他計(jì)算框架美尸,比如MapReduce共用一個(gè)集群資源冤议,最大的好處是降低運(yùn)維成本和提高資源利用率(資源按需分配)旬迹。
? ? ? ?1.Spark運(yùn)行模式概述
? ? ? ? ? 在實(shí)際應(yīng)用中,Spark應(yīng)用程序的運(yùn)行模式取決于傳遞給SparkContext的MASTER環(huán)境變量的值求类,個(gè)別模式還需要依賴輔助的程序接口來配合使用奔垦,目前所支持的MASTER環(huán)境變量由特定的字符串或URL所組成,如下所示尸疆。
? ? ? ? ? (1)Local[N]:本地模式椿猎,使用多個(gè)線程。
? ? ? ? ? (2)Local cluster[worker, core, Memory]:偽分布式模式寿弱,可以配置所需要啟動(dòng)的虛擬工作節(jié)點(diǎn)的數(shù)量犯眠,以及每個(gè)工作節(jié)點(diǎn)所管理的CPU數(shù)量和內(nèi)存尺寸。
? ? ? ? ? (3)Spark://hostname:port:Standalone模式症革,需要部署Spark到相關(guān)節(jié)點(diǎn)筐咧,URL為Spark Master主機(jī)地址和端口。
? ? ? ? ? (4)Mesos://hostname:port:Mesos模式噪矛,需要部署Spark和Mesos到相關(guān)節(jié)點(diǎn)量蕊,URL為Mesos主機(jī)地址和端口。
? ? ? ? ? (5)YARN standalone/Yarn cluster:YARN模式一艇挨,主程序邏輯和任務(wù)都運(yùn)行在YARN集群中残炮。
? ? ? ? ? (6)YARN client:YARN模式二,主程序邏輯運(yùn)行在本地缩滨,具體任務(wù)運(yùn)行在YARN集群中势就。
? ? ? ? ? ? 此外還有一些用于調(diào)試的URL,因?yàn)楹蛻?yīng)用無關(guān)脉漏,我們?cè)谶@里就不列舉了苞冯。
? ? ? ?2.Local模式部署及程序運(yùn)行
? ? ? ? ? ? Local模式,顧名思義就是在本地運(yùn)行侧巨,如果不加任何配置舅锄,Spark默認(rèn)設(shè)置為L(zhǎng)ocal模式。以SparkPi為例刃泡,Local模式下的應(yīng)用程序的啟動(dòng)命令如下:
? ? ? ? ? ? ./bin/run-example org.apache.spark.examples.SparkPi local
? ? ? ? ? ?在SparkPi代碼的具體實(shí)現(xiàn)中括堤,是根據(jù)用戶傳入的參數(shù)來選擇運(yùn)行模式的宫莱,如果需要自己在代碼中指定運(yùn)行模式菱涤,可以通過在代碼中配置Master為L(zhǎng)ocal來實(shí)現(xiàn)蜜自,如以下程序所示勺疼。
? ? ? ? ?import org.apache.spark.{SparkConf, SparkContext}
? ? ? ? ?val conf = new SparkConf()
? ? ? ? .setMaster("local")
? ? ? ?.setAppName("My application")
? ? ? ?.set("spark.executor.memory", "1g")
? ? ? ? val sc = new SparkContext(conf)
? ? ? ? ? ? 當(dāng)然训措,為了使應(yīng)用程序能夠更靈活地在各種部署環(huán)境下使用掠归,不建議把與運(yùn)行環(huán)境相關(guān)的設(shè)置直接在代碼中寫死掀亩。
? ? ? ? ?3.Local本地模式內(nèi)部實(shí)現(xiàn)原理
? ? ? ? ? ? ? ?Local本地模式使用LocalBackend配合TaskSchedulerImpl芹啥,內(nèi)部邏輯結(jié)構(gòu)如下圖所示:
? ? ? ? ? ? LocalBackend響應(yīng)Scheduler的receiveOffers請(qǐng)求锻离,根據(jù)可用的CPU核的設(shè)定值[N]直接生成CPU資源返回給Scheduler铺峭,并通過Executor類在線程池中依次啟動(dòng)和運(yùn)行Scheduler返回的任務(wù)列表,其核心事件循環(huán)由內(nèi)部類LocalActor以Akka Actor的消息處理形式來實(shí)現(xiàn)汽纠。
實(shí)驗(yàn)環(huán)境
? ? ? ? ? ?Linux Ubuntu 14.04
? ? ? ? ? ?jdk-7u75-linux-x64
實(shí)驗(yàn)內(nèi)容
? ? ? ? ? ?在已經(jīng)安裝有jdk1.7的Linux系統(tǒng)的環(huán)境下卫键,進(jìn)行Spark local模式安裝。
實(shí)驗(yàn)步驟
? ? ? ? ? ? 1.Spark的運(yùn)行依賴jdk以及scala環(huán)境虱朵。在此已默認(rèn)安裝jdk1.7莉炉。
? ? ? ? ? ? 2.首先在linux上創(chuàng)建目錄/data/spark1,用于存儲(chǔ)所需文件碴犬。
切換目錄到/data/spark1目錄絮宁,使用wget命令,下載所需的Spark安裝包spark-1.6.0-bin-hadoop2.6.tgz以及Scala安裝包scala2.10.4.tgz服协。
此處建議使用scala-2.10.4版本绍昂。官網(wǎng)中指出,若使用scala2.11.x版本偿荷,需要重新編譯Spark窘游,并且編譯時(shí),需要指定Scala版本的類型跳纳。
關(guān)于Spark版本张峰,沒有嚴(yán)格要求。所以我們使用Spark1.6版本棒旗。
? ? ? ? ? ? ? 3.安裝scala喘批。切換目錄到/data/spark1目錄下,將scala-2.10.4.tgz解壓縮到/apps目錄下铣揉,并將解壓后的目錄名改為/apps/scala饶深。
? ? ? ? 使用vim打開用戶環(huán)境變量~/.bashrc。
? ? ? ? 代碼:?vim ?~/.bashrc
? ? ? ? 將scala的bin目錄逛拱,追加到用戶環(huán)境變量中敌厘,然后保存退出
? ? ? ? ?執(zhí)行source命令,使系統(tǒng)環(huán)境變量生效
? ? ? ? ?代碼:source ?~/.bashrc
? ? ? ? ? 4朽合,切換目錄到/data/spark1目錄下俱两,將spark的安裝包spark-1.6.0-bin-hadoop2.6.tgz,解壓縮到/apps目錄下曹步,并將解壓后的目錄名重命名為spark宪彩。
代碼 如下 :?
使用vim打開用戶環(huán)境變量~/.bashrc。
代碼:vim ~/.bashrc
將Spark的配置信息追加到用戶環(huán)境變量中讲婚,然后保存退出
執(zhí)行source命令尿孔,使用戶環(huán)境變量生效。
代碼:Source ~/.bashrc
? ? ? ? ? ?5,下面不需要對(duì)spark進(jìn)行任何配置活合,就可以啟動(dòng)spark-shell進(jìn)行任務(wù)處理了雏婶。
? ? ? ? ? ?切換目錄到/apps/spark/bin目錄下,啟動(dòng)spark shell白指,驗(yàn)證安裝完的spark是否可用留晚。可以啟動(dòng)本地模式告嘲。
執(zhí)行
? ? ? ? ? ? ? ?6倔丈,執(zhí)行測(cè)試。在Spark Shell中状蜗,使用Scala加載Spark安裝目錄下需五,文件README.md,并轉(zhuǎn)變?yōu)閞dd轧坎。
Val rdd =sc.textFile(“/apps/spark/README.md”)
對(duì)rdd進(jìn)行算子操作宏邮,統(tǒng)計(jì)文件的行數(shù)。
可以看到輸出為:
? Spark安裝完成缸血!
實(shí)驗(yàn)來自章魚大數(shù)據(jù)--------------------------------------------------------------------------------------------------------------------------------------------------實(shí)驗(yàn)來自章魚大數(shù)據(jù)