Spark大數(shù)據(jù)分析與實戰(zhàn)(Python+PySpark)課件 第1章 Spark大數(shù)據(jù)平臺與環(huán)境搭建_第1頁
Spark大數(shù)據(jù)分析與實戰(zhàn)(Python+PySpark)課件 第1章 Spark大數(shù)據(jù)平臺與環(huán)境搭建_第2頁
Spark大數(shù)據(jù)分析與實戰(zhàn)(Python+PySpark)課件 第1章 Spark大數(shù)據(jù)平臺與環(huán)境搭建_第3頁
Spark大數(shù)據(jù)分析與實戰(zhàn)(Python+PySpark)課件 第1章 Spark大數(shù)據(jù)平臺與環(huán)境搭建_第4頁
Spark大數(shù)據(jù)分析與實戰(zhàn)(Python+PySpark)課件 第1章 Spark大數(shù)據(jù)平臺與環(huán)境搭建_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第1章Spark大數(shù)據(jù)平臺與環(huán)境搭建Spark大數(shù)據(jù)分析與實戰(zhàn)01Spark大數(shù)據(jù)平臺介紹Spark大數(shù)據(jù)環(huán)境搭建0203Python核心語法概覽目錄CONTENTS01Spark大數(shù)據(jù)平臺介紹Spark是什么Spark與大數(shù)據(jù)的應(yīng)用場景Spark編程環(huán)境(PySpark)Spark應(yīng)用程序原理Spark是什么2009年,Spark誕生于伯克利大學(xué)的AMPLab實驗室2010年,伯克利大學(xué)正式開源了Spark項目2013年6月,Spark成為了Apache基金會下的項目2014年2月,Spark以飛快的速度成為了Apache的頂級項目2015年至今,Spark變得愈發(fā)火爆,國內(nèi)大量企業(yè)開始重點部署或者使用Spark平臺2016年Spark2.0發(fā)布2019年Spark3.0發(fā)布ApacheSpark在2009年誕生于的U.C.Berkeley的AMPLab實驗室,在2010

年被開源,2013年被捐贈給Apache軟件基金會(ApacheSoftwareFoundation),目前已發(fā)展到3.x版本Spark是什么ApacheSpark是一種用于大數(shù)據(jù)分析與處理的分布式系統(tǒng),是一個多語言的開源“數(shù)據(jù)引擎。Spark框架使用Scala語言編寫,借鑒MapReduce思想,保留了分布式并行計算的優(yōu)點,改進了其存在的明顯缺陷,提供了豐富的操作數(shù)據(jù)的API接口,大大提高了開發(fā)效率,并在全球各行各業(yè)得到了廣泛應(yīng)用Spark將中間計算數(shù)據(jù)優(yōu)先緩存在內(nèi)存中,迭代計算時直接從內(nèi)存中讀取,只在必要時才將部分數(shù)據(jù)寫入磁盤中,大幅提高了運算速度,還使用DAG(DirectedAcyclicGraph,有向無環(huán)圖)調(diào)度程序、查詢優(yōu)化器和物理執(zhí)行引擎,在進行離線批量處理數(shù)據(jù)時具有較高的性能,并且在實時流數(shù)據(jù)處理時也具有較高的吞吐量Spark是什么Spark提供了一個大數(shù)據(jù)分析處理的統(tǒng)一解決方案,可應(yīng)用于批處理、交互式查詢(SparkSQL)、實時流處理(SparkStreaming)、機器學(xué)習(MLlib)和圖計算(GraphX)等場景,這些不同類型的處理工作可以在同一個應(yīng)用中無縫實現(xiàn),企業(yè)使用一個平臺就可以實現(xiàn)不同的工程操作,減少了人力開發(fā)和平臺部署的成本SparkCore是Spark大數(shù)據(jù)平臺的核心模塊,它實現(xiàn)了Spark的分布式數(shù)據(jù)集、計算任務(wù)調(diào)度、內(nèi)存管理、錯誤恢復(fù)、存儲系統(tǒng)交互等基本功能SparkSQL模塊是強大的用來處理結(jié)構(gòu)化數(shù)據(jù)的程序包,可以方便地編寫SQL語句直接操作數(shù)據(jù)SparkStreaming是Spark提供的針對實時數(shù)據(jù)場合下的流式計算模塊SparkMLlib模塊提供了常見的機器學(xué)習程序庫,包括分類、回歸、聚類、協(xié)同過濾等功能SparkGraphX模塊則提供了圖計算的API,能在海量數(shù)據(jù)上自如地運行復(fù)雜的圖算法(像導(dǎo)航路徑的選擇就是使用圖計算的例子,并不是日常生活中的圖像處理)Spark是什么Spark相比Hadoop具有較大優(yōu)勢,但它并不是用來取代Hadoop的(Spark主要用于替換Hadoop的MapReduce計算模型)。Spark不僅支持HDFS等分布式文件系統(tǒng),在集群調(diào)度上還支持YARN、SparkStandalone等集群資源管理系統(tǒng)。Spark從誕生開始就已經(jīng)很好地融入了Hadoop開源大數(shù)據(jù)生態(tài)圈,并成為其中不可或缺的重要一員。不過,Spark對機器的硬件要求相比Hadoop更高,主要是內(nèi)存和CPU方面,只有這樣才能發(fā)揮出它的優(yōu)勢Spark當前主要分為2.x和3.x兩大系列版本,其中,3.x版本引入了一些新特性并在內(nèi)部做了優(yōu)化,考慮到2.x版本的發(fā)展時間較長且最為穩(wěn)定,且3.x和2.x兩者在一般的Spark應(yīng)用程序開發(fā)上并無差別,所以這里將以Spark2.4.8為例進行講解Spark與大數(shù)據(jù)的應(yīng)用場景Spark與Excel都是功能強大的數(shù)據(jù)處理工具,Excel是一個電子表格軟件,簡單易用,支持對各種數(shù)據(jù)的可視化展示,還支持VBA腳本編程,可以實現(xiàn)對數(shù)據(jù)的各種靈活處理和變換,但只能在單機上運行,處理的數(shù)據(jù)量有限,不適合大數(shù)據(jù)處理場合。Spark可以在數(shù)千臺計算機的集群環(huán)境下運行,具有強大的數(shù)據(jù)處理能力,這一點是Excel這類軟件無法比擬的Excel電子表格軟件Spark大數(shù)據(jù)處理環(huán)境Spark與大數(shù)據(jù)的應(yīng)用場景Spark是大數(shù)據(jù)領(lǐng)域的分布式計算平臺,國內(nèi)外許多公司都在使用Spark幫助簡化具有挑戰(zhàn)性的密集型計算任務(wù)美團生活服務(wù)電子商務(wù)平臺上的點擊、瀏覽、下單支付行為等都會產(chǎn)生海量的日志,通過匯總、處理、分析、挖掘與學(xué)習,為美團業(yè)務(wù)的各種推薦、搜索系統(tǒng)甚至企業(yè)戰(zhàn)略目標的制定提供客觀的數(shù)據(jù)支撐阿里在搜索和廣告業(yè)務(wù),通過Spark解決了多次迭代的機器學(xué)習算法和高計算復(fù)雜度的算法等問題,利用GraphX解決了許多生產(chǎn)方面的問題,如基于度分布的中樞節(jié)點發(fā)現(xiàn)、基于最大連通圖的社區(qū)發(fā)現(xiàn)等近年我國政府治理活動中的大數(shù)據(jù)應(yīng)用場景也不斷拓展,“最多跑一次”“掌上辦”等服務(wù)新模式不斷涌現(xiàn),浙江推行的“浙里辦”和“杭州城市數(shù)據(jù)大腦”便捷、高效的民生服務(wù)走在了全國的前列Spark編程環(huán)境(PySpark)Spark目前提供了包括Java、Scala、Python、R在內(nèi)的4種編程語言的API接口。隨著數(shù)據(jù)科學(xué)、人工智能的日益發(fā)展,特別是人工智能與大數(shù)據(jù)技術(shù)的結(jié)合,

加上Python語言具有像英語一樣的語法學(xué)習起來簡單易懂,通過PySpark使用Python語言就能進行Spark的編程工作Spark編程環(huán)境(PySpark)PySpark只是在Spark基礎(chǔ)上做了一層API接口的封裝,支持絕大多數(shù)的Spark框架功能,像SparkCore、SparkSQL、SparkStreaming、MLlib等,因此只要掌握了Python的基本語法,就能夠使用Python代碼來調(diào)用Spark的各種功能,減少了學(xué)習多編程語言的困擾在實際工作中,經(jīng)常要用到多種數(shù)據(jù)處理工具以滿足不同的業(yè)務(wù)需求,其中使用較多的是SQL、Pandas和Spark這三大工具,PySpark支持這幾種數(shù)據(jù)處理工具之間靈活切換和組合,為Spark的大數(shù)據(jù)處理提供了很好的補充Spark應(yīng)用程序原理Spark應(yīng)用程序通常運行在集群環(huán)境中,

一般包含ClusterManager集群管理節(jié)點、Master主節(jié)點、Worker工作節(jié)點等幾個部分,運行流程與普通單機應(yīng)用程序相比,差別較大(1)Client客戶端將代碼提交到集群的主節(jié)點,主節(jié)點隨即啟動一個Driver進程負責接收用戶代碼(2)Driver進程立即創(chuàng)建一個SparkContext對象向集群管理機申請計算資源,確定計算任務(wù)工作節(jié)點(3)SparkContext分析代碼,將代碼和數(shù)據(jù)劃分成若干個獨立片段發(fā)送給工作節(jié)點上的Executor進程(4)Executor進程計算完畢,會把生成的結(jié)果返回Driver進程匯總,輸出或保存到磁盤Spark應(yīng)用程序=

用戶代碼+

Driver+

Executor+Executor+…02Spark大數(shù)據(jù)環(huán)境搭建Linux系統(tǒng)安裝和配置Hadoop偽分布集群環(huán)境搭建Spark單機運行環(huán)境搭建Linux系統(tǒng)安裝和配置Linux虛擬機的安裝Ubuntu20.04操作系統(tǒng)基本使用具體步驟參見教材我們的Spark運行環(huán)境是搭建在Linux虛擬機上的,因此這里準備安裝Ubuntu20.04系統(tǒng),選用這一圖形環(huán)境的Linux的目的,是為了后續(xù)方便寫代碼具體步驟參見教材Linux系統(tǒng)安裝和配置Ubuntu20.04是桌面版,默認是不支持遠程登錄功能,為方便起見,我們將openssh-server安裝進來以支持sshd遠程終端連接服務(wù)為了避免版本沖突,這里需要先卸載Ubuntu內(nèi)置的openssh-client,在安裝openssh-server時會自動安裝正確版本的openssh-clientLinux系統(tǒng)安裝和配置安裝vim軟件包,它是默認的vi編輯器(簡稱vi)的增強版,支持一些更豐富的功能,如不同顏色的高亮代碼顯示等。當vim安裝完畢后,在終端輸入vi或vim命令,實際啟動的就是這個增強版的vim編輯器將Ubuntu20.04自帶的防火墻禁用,以避免在遠程終端連接時出現(xiàn)問題,在運行Hadoop和Spark時也要禁用防火墻Windows自帶的記事本是一個簡單易用的文本編輯器,在Ubuntu20.04操作系統(tǒng)桌面環(huán)境中也有一個類似的TextEditor圖形化文本編輯器,用戶可在應(yīng)用程序列表中找到,也可通過終端命令來啟動Vi編輯器模式切換(命令/編輯)Vi編輯器常用編輯命令Linux系統(tǒng)安裝和配置vi是絕大多數(shù)Linux/Unix類系統(tǒng)的一個默認編輯器,日常工作中幾乎隨時會用到,掌握它也是Linux學(xué)習的一個必修內(nèi)容,因為大部分服務(wù)器上安裝的Linux系統(tǒng)沒有附帶桌面環(huán)境,無法直接使用圖形化文本編輯器Linux系統(tǒng)安裝和配置Windows上常用的遠程連接工具有PuTTY、SecureCRT、XShell等,其實還有一個功能更全面的終端工具MobaXterm,還支持直接上傳文件到遠程服務(wù)器使用首先MobaXterm連接遠程Linux之前,需要在Linux終端窗體中輸入ipaddr命令查看當前虛擬機的IP地址Linux系統(tǒng)安裝和配置在MobaXterm界面左上角單擊Session圖標,打開連接設(shè)置窗體,在這個窗體中列出了MobaXterm支持的各種遠程連接類型,單擊SSH圖標,輸入虛擬機的IP地址,指定登錄所用的賬戶spark,單擊OK按鈕即可Linux系統(tǒng)安裝和配置連接遠程Linux時,需要輸入對應(yīng)的賬戶密碼,在彈出的是否要保存密碼的窗體中,勾選Donotshowthismessageagain(不再顯示本確認信息)復(fù)選框,單擊No按鈕不保存登錄密碼Linux系統(tǒng)安裝和配置MobaXterm成功連接遠程服務(wù)器后,可以像在Linux操作系統(tǒng)本地一樣執(zhí)行命令,還可以將Windows本地文件拖放上傳到遠程服務(wù)器Linux系統(tǒng)安裝和配置MobaXterm還會將連接使用過的服務(wù)器信息保存在收藏欄中,雙擊保存的連接信息即可自動連接,或單擊鼠標右鍵選擇Editsession(編輯)或Deletesession(刪除)對連接信息進行管理Hadoop偽分布集群環(huán)境搭建Spark是一個完全獨立的大數(shù)據(jù)處理框架,不依賴于其他大數(shù)據(jù)平臺,但作為Hadoop大數(shù)據(jù)生態(tài)的重要一員,Spark通常還會搭配HDFS和YARN一起使用。這里嘗試搭建一個單機環(huán)境下最小配置的Hadoop偽分布集群環(huán)境(1)JDK的安裝配置以上是將JDK解壓縮到/usr/local目錄下,并創(chuàng)建一個軟鏈接指向JDK的解壓縮目錄(軟鏈接相當于Windows的快捷方式)Hadoop偽分布集群環(huán)境搭建(1)JDK的安裝配置修改/etc/profile配置文件,在其中添加有關(guān)JDK的環(huán)境變量設(shè)置Hadoop偽分布集群環(huán)境搭建(1)JDK的安裝配置回到Linux終端窗體測試一下JDK的配置是否正常。如果出現(xiàn)以下信息,則說明JDK的配置是正確的,JDK的安裝也就完成了JDK安裝完畢最好重新啟動一下虛擬機,這樣設(shè)置的環(huán)境變量就會在Linux系統(tǒng)全局生效。否則即使當前Linux終端執(zhí)行過source命令,在另一個新開Linux終端執(zhí)行java命令很可能就會失敗,需要重新執(zhí)行一次source命令才行Hadoop偽分布集群環(huán)境搭建(2)

Linux免密登錄考慮到遠程登錄服務(wù)sshd已經(jīng)運行,因此可先在本機中通過ssh命令測試一下遠程連接是否正常Hadoop偽分布集群環(huán)境搭建(2)

Linux免密登錄先通過ssh-keygen命令生成免密登錄所需的密鑰信息Hadoop偽分布集群環(huán)境搭建(2)

Linux免密登錄通過ssh-copy-id命令,把本機的公鑰復(fù)制到遠程主機的authorized_keys文件上,以便雙方在連接通信時使用Hadoop偽分布集群環(huán)境搭建(2)

Linux免密登錄在本機通過ssh命令再次進行遠程連接,測試是否免密登錄功能,正常情況下此時不再需要輸入密碼,ssh就能夠連接成功Hadoop、Spark等大數(shù)據(jù)平臺之所以需要進行免密登錄的原因,比如在主節(jié)點上啟動Hadoop集群時,主節(jié)點要自動將其他節(jié)點上的相應(yīng)服務(wù)程序啟動,此時就要借助免密登錄,以便主節(jié)點遠程登錄到其他節(jié)點機器上執(zhí)行啟動服務(wù)程序的命令,相當于“一只手直接伸進對方機器中進行操作”的效果Hadoop偽分布集群環(huán)境搭建(3)

Hadoop的安裝Hadoop的安裝比較簡單,也是先解壓縮hadoop-2.6.5.tar.gz軟件包,然后像JDK一樣建立一個軟鏈接這里創(chuàng)建jdk和hadoop鏈接文件的目的是為了后續(xù)維護上的便利。如果直接將帶版本號的JDK和Hadoop軟件包名稱寫入/etc/profile配置文件,將來在遇到升級或修改軟件版本時,就必須同步修改/etc/profile配置文件,而使用軟鏈接的方式,只需將鏈接文件指向新版本的目錄即可,而不用修改/etc/profile配置文件。此外,有的地方將jdk1.8.0_201或hadoop-2.6.5這種帶版本號的文件夾名名直接改成類似jdk、hadoop這樣的目錄名,此時從文件夾名稱就看不出是什么版本了,這樣也會造成一些不便Hadoop偽分布集群環(huán)境搭建(3)

Hadoop的安裝將解壓縮的hadoop-2.6.5目錄的用戶和組的權(quán)限調(diào)整一下,方便在啟動Hadoop時能夠完全控制這個目錄,避免因為文件的訪問權(quán)限問題導(dǎo)致無法進行操作Hadoop偽分布集群環(huán)境搭建(3)

Hadoop的安裝現(xiàn)在可以測試一下Hadoop是否能夠正常使用Hadoop偽分布集群環(huán)境搭建(4)

HDFS的配置HDFS用來提供分布式存儲功能,所需的相關(guān)配置主要在hdfs-site.xml文件中。不過,由于HDFS是Hadoop三大模塊(HDFS+MapReduce+YARN)的基礎(chǔ)組件,所以還會涉及hadoop-env.sh和core-site.xml這兩個Hadoop核心配置文件的修改Hadoop偽分布集群環(huán)境搭建(4)

HDFS的配置切換到Hadoop的配置文件目錄,修改其中的hadoop-env.sh運行環(huán)境,找到里面的JAVA_HOME環(huán)境變量。由于Hadoop沒有使用Linux操作系統(tǒng)的JAVA_HOME環(huán)境變量,而是重新定義了一個JAVA_HOME環(huán)境變量,所以就要告知Hadoop所依賴的JDK安裝位置Hadoop偽分布集群環(huán)境搭建(4)

HDFS的配置修改Hadoop核心配置文件core-site.xml,在里面增加HDFS地址端口和臨時工作目錄信息Hadoop偽分布集群環(huán)境搭建(4)

HDFS的配置修改HDFS配置文件hdfs-site.xml,在其中指定NameNode和DataNode的數(shù)據(jù)保存位置。其中,NameNode負責管理文件系統(tǒng),DataNode負責存儲數(shù)據(jù)Hadoop偽分布集群環(huán)境搭建(4)

HDFS的配置查看slaves配置文件的內(nèi)容,這個文件中保存了運行DateNode進程的節(jié)點信息。由于我們配置的是單節(jié)點環(huán)境,slaves文件中默認是localhost,即本機,所以不用進行任何修改Hadoop偽分布集群環(huán)境搭建(4)

HDFS的配置配置文件修改完畢,首次運行HDFS服務(wù)之前,還要初始化HDFS的文件系統(tǒng),相當于平時的磁盤格式化操作,這個工作只執(zhí)行一次。如果要重新進行初始化,應(yīng)先清除相關(guān)目錄中的內(nèi)容(即NameNode和DataNode對應(yīng)的目錄,這樣HDFS存儲的數(shù)據(jù)也會丟失)Hadoop偽分布集群環(huán)境搭建(4)

HDFS的配置啟動HDFS服務(wù),在執(zhí)行過程中會分別運行NameNode、SecondaryNameNode以及DataNode進程Hadoop偽分布集群環(huán)境搭建(4)

HDFS的配置使用jps命令查看HDFS服務(wù)的進程是否正常運行,如果Java進程列表中有NameNode、SecondaryNameNode、DataNode這3個進程在運行,則說明HDFS啟動是正常的Hadoop偽分布集群環(huán)境搭建(5)YARN的配置YARN是一個通用的Hadoop集群資源調(diào)度平臺,負責為應(yīng)用程序提供服務(wù)器計算資源(主要是CPU和內(nèi)存),為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度。由于Spark支持運行在YARN集群管理服務(wù)之上,因此接下來將配置一下YARN,主要涉及yarn-env.sh和yarn-site.xml兩個文件的修改Hadoop偽分布集群環(huán)境搭建(5)YARN的配置打開yarn-site.xml文件,在其中增加與內(nèi)存檢查相關(guān)的設(shè)置。這是因為虛擬機使用的內(nèi)存和CPU資源比較有限,若要求必須有多少內(nèi)存和CPU核,一些應(yīng)用程序可能就無法正常啟動。當然,在正式的生產(chǎn)環(huán)境中要去掉這兩個參數(shù)設(shè)置Hadoop偽分布集群環(huán)境搭建(5)YARN的配置配置完畢,現(xiàn)在可以啟動YARN服務(wù)相關(guān)的程序,在執(zhí)行過程中會分別運行ResourceManager和NodeManager這兩個進程Hadoop偽分布集群環(huán)境搭建(6)HDFS和YARN的測試經(jīng)過前面的一系列配置,現(xiàn)在的HDFS和YARN服務(wù)都已經(jīng)在正常運行,它們的啟動腳本分別是start-dfs.sh和start-yarn.sh,停止腳本分別是stop-dfs.sh和stop-yarn.sh,這些腳本均位于/usr/local/hadoop路徑下的sbin目錄而不是bin目錄使用vi修改/etc/profile配置文件,在其中添加有關(guān)Hadoop環(huán)境變量的設(shè)置Hadoop偽分布集群環(huán)境搭建(6)HDFS和YARN的測試執(zhí)行source命令使/etc/profile配置文件的內(nèi)容修改生效,測試一下是否能夠正常操作HDFS,比如創(chuàng)建目錄,上傳文件等Hadoop偽分布集群環(huán)境搭建(6)HDFS和YARN的測試在Ubuntu20.04里面啟動瀏覽器,訪問http://localhost:50070即可查看HDFS的WebUI管理頁面Hadoop偽分布集群環(huán)境搭建(6)HDFS和YARN的測試在Ubuntu20.04瀏覽器中訪問http://localhost:8088,可以查看YARN的WebUI管理頁面Spark單機運行環(huán)境搭建(1)Spark的安裝配置將Spark安裝軟件包解壓到/usr/local目錄下,并創(chuàng)建一個軟鏈接文件指向Spark目錄,同時修改目錄的所屬用戶和組Spark單機運行環(huán)境搭建(1)Spark的安裝配置開始配置Spark運行環(huán)境,所有配置文件均位于conf目錄下Spark單機運行環(huán)境搭建(1)Spark的安裝配置使用vi修改/etc/profile配置文件,在其中添加有關(guān)Spark的環(huán)境變量設(shè)置Spark單機運行環(huán)境搭建(1)Spark的安裝配置執(zhí)行source命令使/etc/profile配置文件的內(nèi)容修改生效,然后測試配置好的Spark能否正常工作如果一切正常,則終端窗體上會輸出計算得到的pi的近似值,但這個值是不固定的,每次運行輸出的pi值都是會變化的Spark單機運行環(huán)境搭建(2)SparkShell交互編程環(huán)境Spark安裝目錄的bin文件夾中包含了一些實用的工具命令腳本,包括spark-submit、spark-shell、pyspark等。其中,spark-shell和pyspark都是交互式操作方式的Spark編程環(huán)境,前者支持Scala,后者支持Python,它們都是采用“輸入一條執(zhí)行一條”的工作模式,對于學(xué)習階段的確是比較方便的Spark單機運行環(huán)境搭建(2)SparkShell交互編程環(huán)境當SparkShell啟動后默認支持運行Scala代碼。我們先輸入下面兩行簡單的Scala代碼進行測試(不理解也沒關(guān)系)Spark單機運行環(huán)境搭建(2)SparkShell交互編程環(huán)境新打開一個Linux終端窗體,在里面輸入jps命令查看HDFS服務(wù)是否正在運行,如果沒有運行就要先將HDFS服務(wù)啟動,正如在配置HDFS服務(wù)時所做的那樣Spark單機運行環(huán)境搭建(2)SparkShell交互編程環(huán)境現(xiàn)在可以驗證Spark能否正常訪問HDFS上的文件。前面在測試HDFS時已經(jīng)上傳過一個文件,HDFS的路徑為/mydata/hello.txt,下面準備在SparkShell中將這個文件的數(shù)據(jù)讀取出來。繼續(xù)回到SparkShell的窗體中輸入下面的代碼通過上述測試,說明Spark的安裝配置是正確的Spark單機運行環(huán)境搭建(2)SparkShell交互編程環(huán)境要退出SparkShell交互編程環(huán)境,可以按下鍵盤上的Ctrl+D快捷鍵,或輸入:quit(冒號也要輸入)并按回車鍵,這樣就退回到終端的命令行提示符狀態(tài)Spark單機運行環(huán)境搭建(3)python3.6的安裝Ubuntu20.04默認安裝了python3.8,但是Spark2.4.8最高只能支持到python3.6,從Spark3.x開始才支持python3.8。如果直接使用默認安裝的python3.8,容易造成Spark的兼容性問題,所以這里準備在Ubuntu20.04虛擬機中另外安裝一下python3.6的運行環(huán)境。我們先查看一下Ubuntu20.04安裝的Python相關(guān)程序文件Spark單機運行環(huán)境搭建(3)python3.6的安裝從輸出的文件列表中可以看出,python3實際是一個鏈接文件,它指向了python3.8命令程序。我們可以分別運行python3和python3.8命令,以確認它們是否為同一個Spark單機運行環(huán)境搭建(3)python3.6的安裝現(xiàn)在有兩種做法:一種是將系統(tǒng)默認安裝的python3.8卸載,替換成python3.6,不過這種做法存在一定風險,因為可能會影響到系統(tǒng)中一些程序的使用;另一種是在系統(tǒng)同時保留多個Python版本,然后根據(jù)實際需要切換使用(也有現(xiàn)成的工具輔助Python的多版本管理),我們準備采取第2種做法由于Ubuntu軟件源不含python3.6的預(yù)編譯版本,為簡單起見,我們這里使用一個第三方的軟件源DeadsnakesPPASpark單機運行環(huán)境搭建(3)python3.6的安裝現(xiàn)在可以正式開始安裝python3.6了,安裝完畢后再查看一下python3.6的啟動程序當python3.6成功安裝后,在/usr/bin目錄下會多出兩個可執(zhí)行程序,即python3.6和python3.6m,其中python3.6m在內(nèi)存分配方式上做了優(yōu)化,在實際使用時任選其一即可(這里“m”就是指memory內(nèi)存)Spark單機運行環(huán)境搭建(3)python3.6的安裝Spark包含一個名為“pyspark”的交互式編程腳本,它需在Python的運行環(huán)境中才能使用。為了使pyspark腳本能夠找到正確的Python運行環(huán)境,可以在運行腳本之前設(shè)置一個名為PYSPARK_PYTHON的環(huán)境變量,我們將其添加到/etc/profile配置文件中(或添加到Spark的spark-env.sh配置文件也可以)Spark單機運行環(huán)境搭建(4)PySparkShell交互編程環(huán)境當python3.6運行環(huán)境準備就緒后,就可以啟動PySparkShell交互式編程環(huán)境了從PySparkShell啟動輸出的提示信息中可以看出,Spark2.4.8使用的是python3.6,這也再次證明之前的配置是正確的Spark單機運行環(huán)境搭建(4)PySparkShell交互編程環(huán)境這里測試一下PySparkShell訪問本地和HDFS文件的功能。首先確認HDFS服務(wù)是否正常運行,具體步驟可參考前述內(nèi)容,這里假定HDFS已正常運行測試完畢,直接按Ctrl+D快捷鍵,或者輸入quit()就可以退出PySparkShell交互式編程環(huán)境的界面,回到終端的命令行提示符狀態(tài)Spark單機運行環(huán)境搭建(5)Pip的安裝配置Pip是一個Python包管理工具,提供了Python軟件庫的查找、下載、安裝和卸載等功能。實際上,Pip本身也是Python標準庫中的一個包,只是這個包比較特殊,它是用來管理Python標準庫中的其他包。Ubuntu20.04默認沒有附帶Pip包管理工具,下面通過apt命令在線安裝進來Spark單機運行環(huán)境搭建(5)Pip的安裝配置Pip工具安裝完畢,就要考慮如何處理系統(tǒng)中現(xiàn)存的兩個Python版本,即python3.6和python3.8。由于Ubuntu20.04中的python3命令默認指向python3.8,pip和pip3腳本命令也都是用來管理python3.8軟件包的,因此就面臨一個問題,如何分別管理python3.6和python3.8的軟件包呢?當然,使用python3.6-mpip或python3.8-mpip這樣的命令形式進行軟件包安裝是可以的,如果有更直接的辦法,比如使用pip腳本命令管理python3.6的軟件包,使用pip3腳本命令管理python3.8的軟件包,這樣自然就把它們隔離開了前面配置過的PYSPARK_PYTHON環(huán)境變量,它的目的是讓pyspark腳本能夠找到合適的Python運行環(huán)境。假如未設(shè)置過PYSPARK_PYTHON環(huán)境變量,pyspark腳本默認會調(diào)用系統(tǒng)的python命令來啟動后續(xù)過程(相當于配置PYSPARK_PYTHON=python的結(jié)果)?;诖耍梢钥紤]創(chuàng)建一個名為python的鏈接文件指向python3.6,同時配置pip命令管理python3.6的軟件包。與此對應(yīng)的,保留python3鏈接文件指向python3.8,并維持pip3管理python3.8的軟件包的功能不變。經(jīng)過這樣的安排,python3.6和python3.8就可以使用它們各自的命令和包管理工具,而且相互不存在沖突(這樣的選擇不是必須的,只是提供一種可行的做法)Spark單機運行環(huán)境搭建(5)Pip的安裝配置先創(chuàng)建一個/usr/bin/python文件鏈接到python3.6程序,然后分別查看一下pip和pip3兩個命令文件中前兩行的內(nèi)容Spark單機運行環(huán)境搭建(5)Pip的安裝配置先創(chuàng)建一個/usr/bin/python文件鏈接到python3.6程序,然后分別查看一下pip和pip3兩個命令文件中前兩行的內(nèi)容Spark單機運行環(huán)境搭建(5)Pip的安裝配置分別修改一下/usr/bin/pip文件和/usr/bin/pip3兩個文件Spark單機運行環(huán)境搭建(5)Pip的安裝配置分別修改一下/u

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論