Jupyter與Spark開發(fā)環(huán)境配置指南

Jupyter與Spark開發(fā)環(huán)境配置指南

什么是Spark仆嗦?

Spark是使用大量數(shù)據(jù)進(jìn)行計算的框架辉阶。為什么需要Spark?比如瘩扼,一個易于讀入內(nèi)存的小型數(shù)據(jù)集谆甜,Gb級的,你可能會使用Pandas集绰,R或其他工具加載整個數(shù)據(jù)集店印,并且之后進(jìn)行一些清洗和可視化,如果使用合適的計算機(jī)(或云計算基礎(chǔ)設(shè)施)倒慧,你將輕松完成而沒有計算性能相關(guān)的麻煩。

現(xiàn)在你必須處理1Tb(或更大)的數(shù)據(jù)集,并訓(xùn)練一個機(jī)器學(xué)習(xí)算法纫谅。即使使用強(qiáng)大的電腦也是瘋狂的炫贤。Spark 提供了處理這些數(shù)據(jù)怪物所需的兩個功能:

  • 并行計算:你使用的不是一臺而是多臺計算機(jī)來加速
  • 容錯:如果某臺計算機(jī)在處理過程中間掛起,則必須能夠恢復(fù)付秕。

Spark如何在內(nèi)部工作原理超出了本教程的范圍兰珍,假設(shè)你已經(jīng)熟悉了。無論如何询吴,你不需要Spark的知識來設(shè)置并運行自己的集群掠河。

什么是Spark集群,“獨立”是什么意思猛计?

Spark集群

Spark集群是一些運行Spark并且一起工作的計算機(jī)唠摹。一個集群包括:

  • Master:是安排一切工作的電腦之一。它分配工作并管理一切奉瘤。
  • Slaves:是完成工作的電腦勾拉。他們按照Map Reduce模式處理大量數(shù)據(jù)集的塊。任一計算機(jī)可以同時成為Master和 Slaves盗温。

獨立

這意味著集群中每臺計算機(jī)都安裝了Spark藕赞。正在使用中的集群管理器由Spark提供。還有其他的集群管理器卖局,如Apache Mesos和Hadoop YARN斧蜕。

要求

按照本教程,你需要:

  • 至少兩臺電腦:這就是一個集群砚偶。
  • Linux:它也適用于OSX批销,你必須能夠運行shell腳本。到目前為止蟹演,還沒有看到Spark在傳統(tǒng)Windows上運行风钻。

對于本教程,我已經(jīng)使用了帶有Ubuntu 17.04的MacBook Air酒请,以及運行Ubuntu 16.04 LTS的Linux子系統(tǒng)的Windows 10骡技。

如果不符合這些要求,請不要擔(dān)心羞反,請按照以下步驟操作:

  • 下載Oracle Virtualbox布朦。
  • 下載Linux。
  • 在Virtualbox中創(chuàng)建虛擬機(jī)昼窗,并在其上安裝Linux是趴。

就是這樣,你有2臺Linux系統(tǒng)運行集群澄惊。

警告:同時運行2臺虛擬機(jī)在同一臺計算機(jī)上唆途,可以用于學(xué)習(xí)和原型設(shè)計富雅,但是將失去在真實集群中的性能提升!

教程

步驟1:安裝Java

注意:必須對所有計算機(jī)執(zhí)行此步驟肛搬。

Spark需要Java來運行没佑。我的建議使用OPEN JDK8。在終端中運行如下命令:

1

測試Java安裝類型:

2

可以看到以下輸出:

3

步驟2:安裝Spark

下載Spark温赔。在本教程中使用了2.2.0 pre-built蛤奢。可以去Spark下載頁面并從那里下載陶贼,如果無法訪問圖形桌面啤贩,并且必須使用命令行才能運行:

4

之后,主目錄中有Spark壓縮包拜秧。解壓并移動到home文件夾(推薦但不是必需的)痹屹,以防將其下載到「下載」文件夾中。

解壓縮:

5

移動(可選):

6

最后設(shè)置所需的環(huán)境變量SPARK_HOME腹纳。

轉(zhuǎn)到主目錄痢掠,并使用文本編輯器打開「.bashrc」文件:

7

在文件末尾添加如下內(nèi)容。當(dāng)打開計算機(jī)或開始交互時嘲恍,它將設(shè)置變量足画。將來該文件夾??的名稱可能會更改,并且與此處寫入的文件夾名稱不匹配佃牛,但過程是類似的淹辞。

8

保存文件。如果你正在使用nano做ctrl+x俘侠,鍵入y并按return下來完成它象缀。

現(xiàn)在可以檢查Spark安裝。去Spark文件夾并執(zhí)行pyspark:

9

如果一切正常安裝爷速,可以看到類似于此的輸出:

[圖片上傳失敗...(image-1e8f8f-1511414085008)]

到目前為止央星,你可能會在Spark初始化時看到此警告:

11

要解決這個問題,必須安裝Hadoop惫东。這是可選的莉给,因為Spark可以運行,但是我猜使用Hadoop可能會有某些性能改進(jìn)廉沮。

步驟3(可選):安裝Hadoop

安裝Hadoop的過程和Spark幾乎是一樣的颓遏,我會快速完成。這是一個可選步驟滞时,并不需要運行集群叁幢。你也可以稍后決定。安裝Hadoop的步驟是:

  • 下載Hadoop坪稽÷妫可以自由安裝任何喜歡的版本鳞骤,但版本應(yīng)當(dāng)高于2.7,因為它是Spark的要求演训。這和我們安裝Spark一樣弟孟。等效的命令行表達(dá)式。
  • 在home目錄中解壓縮样悟。
  • .bashrc文件末尾添加以下內(nèi)容:
12
  • 通過啟動pyspark測試Hadoop安裝,確保警告沒有再次出現(xiàn)庭猩。

步驟4:啟動master服務(wù)器

在啟動主服務(wù)器之前窟她,必須檢查ip以將其作為主機(jī)參數(shù)傳遞。鍵入以下命令:

13

可以看到類似的輸出:

14

復(fù)制第二個inet中的值蔼水。這是<your_master_ip>震糖。在這個例子中應(yīng)該復(fù)制192.168.1.143

現(xiàn)在趴腋,轉(zhuǎn)到Spark安裝目錄并輸入:

[圖片上傳失敗...(image-4fc397-1511414085008)]

可以看到看到類似的輸出:

16

現(xiàn)在吊说,在啟動master服務(wù)器的計算機(jī)中訪問localhost:8080,如果無法訪問Web瀏覽器优炬,但是將其他設(shè)備連接到同一個專用網(wǎng)絡(luò)(例如手機(jī))颁井,通過<your_master_ip>:8080進(jìn)行訪問。在該URL中蠢护,可以訪問master服務(wù)器Web用戶界面雅宾。

master_web_ui

在這個網(wǎng)站葵硕,你可以看到在Spark Logo后面的一個URL參數(shù)類似的spark://<your_master_ip>:7077眉抬。這個URL非常重要,因為在將slaves連接到集群時懈凹,將需要這個URL蜀变,我將其命名<your_master_url>

步驟5:連接slaves

現(xiàn)在你有一臺master服務(wù)器運行介评,是時候啟動幾臺slave服務(wù)器來完成這項工作库北。要啟動slave服務(wù)器,必須使用從master服務(wù)器Web界面復(fù)制的URL,在Spark安裝路徑鍵入以下命令:

[圖片上傳失敗...(image-ca004b-1511414085008)]

你應(yīng)該看到一個非常類似于master的輸出威沫。

在要連接到集群的每臺計算機(jī)上執(zhí)行此操作贤惯。在本教程中,運行2個slaves棒掠。

之后孵构,如果再次訪問master服務(wù)器Web界面,在「Workers」中看到幾行烟很,均是啟動的slave服務(wù)器颈墅。還有一些有用的信息蜡镶,如worker的內(nèi)存、狀態(tài)恤筛、使用的核心和ip官还。

[圖片上傳失敗...(image-e5cc5c-1511414085008)]

也可以點擊Spark Web應(yīng)用程序中的鏈接,然后轉(zhuǎn)到工作頁面和任務(wù)頁面毒坛。由于沒有任何運行的應(yīng)用程序連接到集群望伦,那么無法訪問正在運行和已完成的任務(wù)頁面。

到目前為止煎殷,我們已經(jīng)有一個運行完整的Spark集群屯伞。

步驟6:連接Jupyter

充分利用Spark是與Jupyter這樣的交互式工具集成的好主意。如果您已經(jīng)安裝并運行Jupyter豪直,請?zhí)^以下幾行劣摇,我將介紹如何設(shè)置本地Jupyter服務(wù)器。

安裝Jupyter

安裝Jupyter最簡單的方法是使用conda弓乙。如果你有Anaconda Python發(fā)行版末融,則計算機(jī)中已經(jīng)安裝了conda。如果沒有暇韧,我強(qiáng)烈建議你試一試Anconda勾习。如果不想安裝完整的Anaconda Python(它包含大量庫,需要大約350Mb)锨咙,可以選擇Miniconda语卤,一款僅包含Python和conda的輕型版本。

如果使用命令行酪刀,只需使用curl下載安裝文件(shell腳本)并執(zhí)行'./'

一旦在計算機(jī)中安裝了conda粹舵,我們將創(chuàng)建一個名為「jupyter」的conda虛擬環(huán)境,避免造成混亂:

19

現(xiàn)在有一個干凈的虛擬環(huán)境來安裝Jupyter骂倘。要激活此環(huán)境類型:

20

在環(huán)境激活后眼滤,在命令提示符的開始處可以看到(jupyter):

21

這意味著環(huán)境已被激活,并且以后所做的更改(安裝庫等)都將在此環(huán)境虛擬環(huán)境生效历涝。

要安裝Jupyter诅需,請鍵入以下命令:

22

這個命令將安裝Jupyter notebook及其所有的依賴項(IPython,Jupyter等)荧库,所以你不必?fù)?dān)心設(shè)置這些東西堰塌。

現(xiàn)在是時候啟動Jupyter notebook,并測試安裝分衫。鍵入:

23

如果Jupyter正確安裝场刑,那么可以在Web瀏覽器中訪問localhost:8888/tree,并查看Jupyter文件目錄蚪战。

24

安裝 findspark

findspark是一個Python庫牵现,?可以自動導(dǎo)入和像其他Python庫使用PySpark铐懊。還有其他選擇可以集成(為Spark創(chuàng)建一個jupyter配置文件),但是最新的findspark是更快更簡單的一個瞎疼。

要安裝findspark科乎,請運行以下命令:

25

已經(jīng)在jupyter虛擬環(huán)境中安裝了findpark。

創(chuàng)建第一個Spark應(yīng)用

要創(chuàng)建一個Spark應(yīng)用并使用數(shù)據(jù)制作酷炫的東西贼急,請在Jupyter單元格中運行以下腳本:

26

這個腳本只是初始化findspark茅茂,所以你可以導(dǎo)入PySpark作為一個庫,并用你的master URL和應(yīng)用名稱(個人決定)創(chuàng)建一個Spark Context實例竿裂。

為了測試效果玉吁,你可以在Jupyter notebook中顯示sc,并且會看到如下輸出:

27

當(dāng)運行長期的任務(wù)腻异,可以點擊鏈接并轉(zhuǎn)到應(yīng)用網(wǎng)站ui,這是非常有趣的这揣。

還應(yīng)連接到master服務(wù)器Web界面(localhost:8080<your_master_ip>:8080)悔常,并在Running Applications部分中查看新內(nèi)容,如下所示:

28

要關(guān)閉master服務(wù)器和slave服務(wù)器给赞,請在Spark安裝目錄下運行以下命令:

29

要關(guān)閉jupyter虛擬環(huán)境机打,只需運行以下命令:

30

就這樣!

更多課程和文章盡在微信號:「datartisan數(shù)據(jù)工匠」

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末片迅,一起剝皮案震驚了整個濱河市残邀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柑蛇,老刑警劉巖芥挣,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耻台,居然都是意外死亡空免,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門盆耽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹋砚,“玉大人,你說我怎么就攤上這事摄杂“痈溃” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵析恢,是天一觀的道長墨坚。 經(jīng)常有香客問我,道長氮昧,這世上最難降的妖魔是什么框杜? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任浦楣,我火速辦了婚禮,結(jié)果婚禮上咪辱,老公的妹妹穿的比我還像新娘振劳。我一直安慰自己,他們只是感情好油狂,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布历恐。 她就那樣靜靜地躺著,像睡著了一般专筷。 火紅的嫁衣襯著肌膚如雪弱贼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天磷蛹,我揣著相機(jī)與錄音吮旅,去河邊找鬼。 笑死味咳,一個胖子當(dāng)著我的面吹牛庇勃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播槽驶,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼责嚷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掂铐?” 一聲冷哼從身側(cè)響起罕拂,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎全陨,沒想到半個月后爆班,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡烤镐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年蛋济,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炮叶。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡碗旅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镜悉,到底是詐尸還是另有隱情祟辟,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布侣肄,位于F島的核電站旧困,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吼具,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一僚纷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拗盒,春花似錦怖竭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至登夫,卻和暖如春广匙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恼策。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工鸦致, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涣楷。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓蹋凝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親总棵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容