SparkCore基礎(chǔ)(二)

* SparkCore基礎(chǔ)(二)

繼續(xù)探討SparkCore可缚,開門見山,不多廢話。

SparkApplication結(jié)構(gòu)探討

包含關(guān)系:

之前我們運(yùn)行過很多App了成肘,其實(shí)每一個(gè)App都包含若干個(gè)Job任務(wù);

而Job任務(wù)呢斧蜕,一般都是由RDD的Action動(dòng)作發(fā)出的eg:first双霍、count、collect等等批销;

一個(gè)Job任務(wù)包含多個(gè)Stage洒闸,各個(gè)Stage之間是互相依賴的,比如均芽,第一個(gè)stage沒有走完丘逸,是不會(huì)走第二個(gè)stage的,對于同一個(gè)stage掀宋,所有的task的業(yè)務(wù)邏輯相同深纲,而處理的數(shù)據(jù)不同;

一個(gè)Stage包含多個(gè)Task劲妙。

運(yùn)行構(gòu)成:

對于Spark Application的集群運(yùn)行情況來講湃鹊,都有兩個(gè)部分組成

** Driver:每個(gè)應(yīng)用都有一個(gè)driver,在其中的main方法中實(shí)例化SparkContext镣奋,從而創(chuàng)建RDD币呵,然后向Master或者ResourceManager申請資源來運(yùn)行Executor,調(diào)度Job任務(wù)

** Executor:相當(dāng)于MapReduce中的Map Task一樣侨颈,是一個(gè)JVM進(jìn)程余赢,用于運(yùn)行Task掸驱,以線程形式運(yùn)行

下面是Spark集群的一些概念簡述:

RDD進(jìn)一步探討

RDD是什么:

** ?是一系列分區(qū)的數(shù)據(jù)集合,類似于Hadoop中的split

** 每個(gè)分區(qū)都可以應(yīng)用某個(gè)函數(shù)去運(yùn)算

** RDD之間具有依賴關(guān)系没佑,例如毕贼,RDD1 轉(zhuǎn)換為RDD2時(shí),那么RDD2就依賴于RDD1

** 可以指定key-value形式的RDD的分區(qū)規(guī)則蛤奢,比如hash

** RDD可以選擇最優(yōu)的讀取數(shù)據(jù)的位置鬼癣,比如:從內(nèi)存讀?從本地讀啤贩?或者設(shè)置了多個(gè)副本待秃,決定從哪個(gè)副本讀數(shù)據(jù)是最優(yōu)的。

IDEA工具開發(fā)Spark

Step1痹屹、創(chuàng)建一個(gè)Scala項(xiàng)目

Step2章郁、創(chuàng)建項(xiàng)目名稱以及指定路徑后直接Finish

Step3、在File--Project Structure選項(xiàng)的Modules中創(chuàng)建目錄結(jié)構(gòu)如圖志衍,注意文件夾圖標(biāo)樣式暖庄,main和test中的resources文件夾圖標(biāo)是有區(qū)別的

Step4、在Libraries中點(diǎn)擊加號導(dǎo)入Spark相關(guān)依賴Jar(這里我導(dǎo)入的Jar是CDH-Spark根目錄下的lib目錄下的Jar楼肪,這里不需要導(dǎo)入example相關(guān)Jar)

Step5培廓、將HDFS的兩個(gè)配置文件拷入到resources目錄下

Step6、創(chuàng)建一個(gè)Scala-object春叫,編寫代碼如下:

運(yùn)行即可

IDEA打包SparkJar

我們也可以使用IDEA打包編寫好的SparkJar包然后使用spark-submit命令提交任務(wù)

Step1肩钠、點(diǎn)擊Artifacts標(biāo)簽后,點(diǎn)擊加號暂殖,選擇JAR-from modules from dependencies

Step2价匠、點(diǎn)擊紅框內(nèi)容后,出現(xiàn)藍(lán)框內(nèi)容

Step3呛每、搞定后踩窖,刪除掉關(guān)于Spark和Hadoop的相關(guān)依賴,打包自己的工程時(shí)莉给,不需要將Spark和Hadoop的Jar也打包入你的工程里毙石,這樣會(huì)增加你的工程的體積(官方描述:The user's jar should never include Hadoop or Spark libraries, however, these will be added at runtime.)廉沮,點(diǎn)擊減號刪除到如下所示:

Step4颓遏、OK后,選擇Build-Build Artifacts-Build滞时,然后去對應(yīng)目錄下叁幢,拷貝出Build好的Jar到Linux,什么坪稽?不知道生成的Jar在哪曼玩?你看看上圖中Output directory屬性

Step5鳞骤、運(yùn)行你的Jar

$ bin/spark-submit --master spark://z01:7077 /home/z/Desktop/FirstSpark.jar

Spark在Yarn上運(yùn)行

相關(guān)文檔:http://spark.apache.org/docs/1.6.1/running-on-yarn.html

運(yùn)行Spark應(yīng)用有兩種模式:

1、在Client端所在節(jié)點(diǎn)運(yùn)行

這種情況比較適用于調(diào)試應(yīng)用程序黍判,比如:

Yarn:

bin/spark-submit \

--master yarn \

--deploy-mode client \

/home/z/Desktop/FirstSpark.jar

2豫尽、在Cluster中運(yùn)行

Yarn:

$ bin/spark-submit \

--master yarn \

--deploy-mode cluster \

/home/z/Desktop/FirstSpark.jar

以上兩種模式的區(qū)別在于:

Client模式:

Spark App的Driver請求ResourceManager,產(chǎn)生一個(gè)ApplicationMaster顷帖,然后由ApplicationMaster向ResourceManager申請資源美旧,ResourceManager分配Container給NodeManager,然后由NodeManager運(yùn)行其上的Executor贬墩。

Cluster模式:

Driver運(yùn)行節(jié)點(diǎn)即ApplicationMaster節(jié)點(diǎn)榴嗅,后面的操作你懂得,跟Client模式差不多了陶舞。

注意:spark-shell只能在client模式下運(yùn)行嗽测,比如默認(rèn)deploty-mode其實(shí)如下

Standalone:

$ bin/spark-shell?--master spark://z01:7077 --deploy-mode client

Spark的廣播使用

廣播這個(gè)概念在不同的計(jì)算機(jī)領(lǐng)域中都有涉及,那么在Spark中肿孵,如果你想過濾掉一些特殊符號唠粥,在這樣的情境中,就可以使用廣播(不使用行不行停做?行厅贪!但消耗更多。)首先我們先上代碼:

代碼中雅宾,注意紅框部分养涮,我們使用廣播過濾掉了一些特殊字符的統(tǒng)計(jì)。如果不適用廣播眉抬,意味著list特殊字符集合中的所有信息都需要拷貝到所有的數(shù)據(jù)分區(qū)中贯吓,如果使用了廣播,只需要將數(shù)據(jù)廣播到指定的Executor中即可蜀变。

Spark中Maven項(xiàng)目的構(gòu)建

在構(gòu)建項(xiàng)目時(shí)悄谐,可以選擇使用mvn命令構(gòu)建,當(dāng)然也可以使用IDEA的可視化界面構(gòu)建库北,那么我們下面分別探討兩種方式:

方式一:環(huán)境-Linux(不推薦爬舰,當(dāng)然也要看喜好)

方式二:環(huán)境-Windows(推薦)

Step1寒瓦、打開IDEA工具,選擇Create new project杂腰,選擇Maven,點(diǎn)擊Create from archetype,留意紅框內(nèi)容

Step2惜颇、Next后皆刺,不必解釋過多了吧凌摄?如圖:

Step3、選擇你的Maven倉庫地址锨亏,默認(rèn)在.m2目錄下林说,可以自己指定,稍后會(huì)自動(dòng)下載相關(guān)依賴

Step4屯伞、Next后,編輯項(xiàng)目的一些基本信息珠移,finish即可末融,如圖:

Step5、打開pom.xml勾习,配置一些后邊課程我們可能會(huì)用到的依賴,剩下的目錄配置等等乾颁,和之前的我們學(xué)過的一樣

Step6艺栈、最后完成時(shí),你會(huì)發(fā)現(xiàn)導(dǎo)入的jar包在左邊的External Libraries中看到如下內(nèi)容

最后诅妹,在剛創(chuàng)建好的Maven工程中寫一個(gè)WordCount試試毅人?:)

* 總結(jié)

學(xué)會(huì)這些基礎(chǔ)操作后,可以進(jìn)行更多的拓展丈莺,比如分析一下apache的日志?請參看官方完整案例般此。


IT全棧公眾號:

QQ大數(shù)據(jù)技術(shù)交流群(廣告勿入):476966007


下一節(jié):SparkSQL基礎(chǔ)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铐懊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子科乎,更是在濱河造成了極大的恐慌贼急,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件空闲,死亡現(xiàn)場離奇詭異走敌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)掉丽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門捶障,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人项炼,你說我怎么就攤上這事∏疲” “怎么了空免?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扼菠。 經(jīng)常有香客問我坝咐,道長,這世上最難降的妖魔是什么墨坚? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮盗尸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泼各。我一直安慰自己,他們只是感情好逆巍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布莽使。 她就那樣靜靜地躺著,像睡著了一般灵再。 火紅的嫁衣襯著肌膚如雪庇勃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天鸳兽,我揣著相機(jī)與錄音罕拂,去河邊找鬼。 笑死爆班,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的戚嗅。 我是一名探鬼主播枢舶,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼躏尉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胀糜,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎距帅,沒想到半個(gè)月后怖竭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陡蝇,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年广匙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恼策。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡分唾,死狀恐怖狮斗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碳褒,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布睦授,位于F島的核電站摔寨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏删顶。R本人自食惡果不足惜佑笋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蒋纬。 院中可真熱鬧坚弱,春花似錦关摇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亭病,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間促煮,已是汗流浹背整袁。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坐昙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓襟士,卻偏偏與公主長得像嚷量,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子嗜历,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344