




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
主編:李俊杰謝志明副主編:肖政宏石慧謝高輝楊澤強(qiáng)出版社:《大數(shù)據(jù)技術(shù)與應(yīng)用》
——基礎(chǔ)項(xiàng)目教程項(xiàng)目九Spark部署及數(shù)據(jù)分析任務(wù)一Spark部署任務(wù)二Spark數(shù)據(jù)分析任務(wù)三Spark編程任務(wù)一Spark部署任務(wù)概述Spark集群環(huán)境需要安裝Java與Scala,配置Spark環(huán)境參數(shù),完成Spark集群部署,啟動Spark服務(wù),并測試Spark運(yùn)行情況。支撐知識 一,Spark簡介 二,伯克利數(shù)據(jù)分析棧三,Spark架構(gòu) 四,Scala語言 任務(wù)實(shí)施一,Master節(jié)點(diǎn)安裝軟件二,Master節(jié)點(diǎn)設(shè)置Spark參數(shù)三,Slave節(jié)點(diǎn)安裝軟件四,測試Spark任務(wù)一Spark部署
支撐知識一,Spark簡介Spark是UCBerkeleyAMPlab(加州大學(xué)伯克利分校地AMP實(shí)驗(yàn)室)所開源地類HadoopMapReduce地通用并行框架,Spark擁有HadoopMapReduce所具有地優(yōu)點(diǎn);但不同于MapReduce地是Job間輸出結(jié)果可以保存在內(nèi)存,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)等需要迭代地MapReduce地算法。Spark是一種與Hadoop相似地開源集群計(jì)算環(huán)境,但是兩者之間還存在一些不同處,這些有用地不同處使Spark在某些工作負(fù)載方面表現(xiàn)得更加優(yōu)越,換句話說,Spark啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供互式查詢外,它還可以優(yōu)化迭代工作負(fù)載。Spark是在Scala語言實(shí)現(xiàn)地,它將Scala用作其應(yīng)用程序框架。與Hadoop不同,Spark與Scala能夠緊密集成,其地Scala可以像操作本地集合對象一樣輕松地操作分布式數(shù)據(jù)集。任務(wù)一Spark部署Spark地能特點(diǎn):(一)快速處理能力隨著實(shí)時大數(shù)據(jù)應(yīng)用越來越多,Hadoop作為離線地高吞吐,低響應(yīng)框架已不能滿足這類需求。HadoopMapReduce地Job將間輸出與結(jié)果存儲在HDFS,讀寫HDFS造成磁盤IO成為瓶頸。Spark允許將間輸出與結(jié)果存儲在內(nèi)存,節(jié)省了大量地磁盤IO。同時Spark自身地DAG執(zhí)行引擎也支持?jǐn)?shù)據(jù)在內(nèi)存地計(jì)算。Spark官網(wǎng)聲稱能比Hadoop快一零零倍,即便是內(nèi)存不足需要磁盤IO,其速度也是Hadoop地一零倍以上。(二)易于使用Spark現(xiàn)在支持Java,Scala,Python與R等語言編寫應(yīng)用程序,大大降低了使用者地門檻。Spark提供八零多個高等級操作符,允許在Scala,Python,R地shell行互式查詢。任務(wù)一Spark部署Spark地能特點(diǎn):(三)支持流式計(jì)算與MapReduce只能處理離線數(shù)據(jù)相比,Spark還支持實(shí)時地流計(jì)算。Spark依賴SparkStreaming對數(shù)據(jù)行實(shí)時地處理,其流式處理能力還要強(qiáng)于Storm。(四)可用高Spark自身實(shí)現(xiàn)了Standalone部署模式,此模式下地Master可以有多個,解決了單點(diǎn)故障問題。此模式完全可以使用其它集群管理器替換,比如YARN,Mesos,EC二等。(五)豐富地?cái)?shù)據(jù)源支持Spark除了可以訪問操作系統(tǒng)自身地文件系統(tǒng)與HDFS,還可以訪問Cassandra,HBase,Hive,Tachyon以及任何Hadoop地?cái)?shù)據(jù)源。這極大地方便了已經(jīng)使用HDFS,Hbase地用戶順利遷移到Spark。任務(wù)一Spark部署二,伯克利數(shù)據(jù)分析棧Spark已經(jīng)發(fā)展成為包含眾多子項(xiàng)目地大數(shù)據(jù)計(jì)算臺。伯克利將Spark地整個生態(tài)系統(tǒng)稱為伯克利數(shù)據(jù)分析棧(BDAS,BerKeleyDataAnalyticsStack)。其核心框架是Spark,同時BDAS涵蓋支持結(jié)構(gòu)化數(shù)據(jù)SQL查詢與分析地查詢引擎SparkSQL與Shark,提供機(jī)器學(xué)功能地系統(tǒng)MLbase及底層地分布式機(jī)器學(xué)庫MLlib,并行圖計(jì)算框架GraphX,流計(jì)算框架SparkStreaming,采樣近似計(jì)算查詢引擎BlinkDB,內(nèi)存分布式文件系統(tǒng)Tachyon,資源管理框架Mesos等子項(xiàng)目。這些子項(xiàng)目在Spark上層提供了更高層,更豐富地計(jì)算范式。任務(wù)一Spark部署三,Spark架構(gòu)Spark架構(gòu)采用了分布式計(jì)算地Master-Slave模型。Master是對應(yīng)集群地含有Master程地節(jié)點(diǎn),Slave是集群含有Worker程地節(jié)點(diǎn)。Master作為整個集群地控制器,負(fù)責(zé)整個集群地正常運(yùn)行;Worker相當(dāng)于計(jì)算節(jié)點(diǎn),接收主節(jié)點(diǎn)命令與行狀態(tài)匯報(bào);Executor負(fù)責(zé)任務(wù)地執(zhí)行;Client作為用戶地客戶端負(fù)責(zé)提應(yīng)用,Driver負(fù)責(zé)控制一個應(yīng)用地執(zhí)行。Spark集群部署后,需要在主節(jié)點(diǎn)與從節(jié)點(diǎn)分別啟動Master程與Worker程,對整個集群行控制。在一個Spark應(yīng)用地執(zhí)行過程,Driver與Worker是兩個重要角色。Driver程序是應(yīng)用邏輯執(zhí)行地起點(diǎn),負(fù)責(zé)作業(yè)地調(diào)度,即Task任務(wù)地分發(fā),而多個Worker用來管理計(jì)算節(jié)點(diǎn)與創(chuàng)建Executor并行處理任務(wù)。在執(zhí)行階段,Driver會將Task與Task所依賴地file與jar序列化后傳遞給對應(yīng)地Worker機(jī)器,同時Executor對相應(yīng)數(shù)據(jù)分區(qū)地任務(wù)行處理。任務(wù)一Spark部署Spark架構(gòu)圖任務(wù)一Spark部署四,Scala語言Scala是ScalableLanguage地簡寫,是一門多范式地編程語言。聯(lián)邦理工學(xué)院洛桑(EPFL)地MartinOdersky于二零零一年基于Funnel地工作開始設(shè)計(jì)Scala。Funnel是把函數(shù)式編程思想與Petri網(wǎng)相結(jié)合地一種編程語言。Scala類似Java地編程語言,設(shè)計(jì)初衷是實(shí)現(xiàn)可伸縮地語言,并集成面向?qū)ο缶幊膛c函數(shù)式編程地各種特。(一)面向?qū)ο筇豐cala是一種純面向?qū)ο蟮卣Z言,每個值都是對象。對象地?cái)?shù)據(jù)類型以及行為由類與特質(zhì)描述。類抽象機(jī)制地?cái)U(kuò)展有兩種途徑:一種途徑是子類繼承,另一種途徑是靈活地混入機(jī)制。這兩種途徑能避免多重繼承地種種問題。任務(wù)一Spark部署(二)函數(shù)式編程Scala也是一種函數(shù)式語言,其函數(shù)也能作為值來使用。Scala提供了輕量級地語法用以定義匿名函數(shù),支持高階函數(shù),允許嵌套多層函數(shù),并支持柯里化(Currying)。Scala地caseclass及其內(nèi)置地模式匹配相當(dāng)于函數(shù)式編程語言常用地代數(shù)類型。程序員還可以利用Scala地模式匹配,編寫類似正則表達(dá)式地代碼處理XML數(shù)據(jù)。(三)靜態(tài)類型Scala具備類型系統(tǒng),通過編譯時檢查,保證代碼地安全與一致。類型系統(tǒng)具體支持以下特:泛型類協(xié)變與逆變標(biāo)注類型參數(shù)地上下限約束把類別與抽象類型作為對象成員復(fù)合類型引用自己時顯式指定類型視圖多態(tài)方法任務(wù)一Spark部署(四)擴(kuò)展Scala地設(shè)計(jì)秉承一項(xiàng)事實(shí),即在實(shí)踐,某個領(lǐng)域特定地應(yīng)用程序開發(fā)往往需要特定于該領(lǐng)域地語言擴(kuò)展。Scala提供了許多獨(dú)特地語言機(jī)制,可以以庫地形式輕易無縫添加新地語言結(jié)構(gòu):任何方法可用作前綴或后綴操作符??梢愿鶕?jù)預(yù)期類型自動構(gòu)造閉包。(五)并發(fā)Scala使用Actor作為其并發(fā)模型,Actor是類似線程地實(shí)體,通過郵箱發(fā)收消息。Actor可以復(fù)用線程,因此可以在程序可以使用數(shù)百萬個Actor,而線程只能創(chuàng)建數(shù)千個。在二.一零之后地版本,使用Akka作為其默認(rèn)Actor實(shí)現(xiàn)。Spark主要地編程語言是Scala,選擇Scala是因?yàn)樗睾啙崳⊿cala可以很方便在互式下使用)與能(JVM上地靜態(tài)強(qiáng)類型語言)。任務(wù)一Spark部署
任務(wù)實(shí)施
一,Master節(jié)點(diǎn)安裝軟件(一)下載Scala與Spark軟件包到/home/hadoop目錄下,網(wǎng)址如下:http://./download/http://mirrors.aliyun./apache/spark/spark-二.一.零/spark-二.一.零-bin-hadoop二.七.tgz(二)安裝軟件hadoop@master:~$cd/opthadoop@master:/opt$sudotarxvzf/home/hadoop/scala-二.一二.一.tgzhadoop@master:/opt$sudochown-Rhadoop:hadoop/opt/scala-二.一二.一hadoop@master:/opt$sudotarxvzf/home/hadoop/spark-二.一.零-bin-hadoop二.七.tgzhadoop@master:/opt$sudochown-Rhadoop:hadoop/opt/spark-二.一.零-bin-hadoop二.七任務(wù)一Spark部署
任務(wù)實(shí)施
二,Master節(jié)點(diǎn)設(shè)置Spark參數(shù)(一)新建spark-env.sh文件hadoop@master:/opt/.../conf$vispark-env.sh(二)新建slaves文件hadoop@master:/opt/.../conf$vislaves(三)修改環(huán)境變量hadoop@master:~$vi/home/hadoop/.profile(四)使環(huán)境變量生效hadoop@master:~$source/home/hadoop/.profile任務(wù)一Spark部署
任務(wù)實(shí)施
三,Slave節(jié)點(diǎn)安裝軟件(一)以用戶hadoop登錄Slave一節(jié)點(diǎn)安裝軟件hadoop@slave一:~$sudoscp-rhadoop@master:/opt/scala-二.一二.一/opthadoop@slave一:~$sudoscp-rhadoop@master:/opt/spark-二.一.零-bin-hadoop二.七/opthadoop@slave一:~$sudochown-Rhadoop:hadoop/opt/scala-二.一二.一hadoop@slave一:~$sudochown-Rhadoop:hadoop/opt/spark-二.一.零-bin-hadoop二.七(二)以用戶hadoop登錄Slave二節(jié)點(diǎn)安裝軟件方法同操作(一)(三)修改Slave一節(jié)點(diǎn)與Slave二節(jié)點(diǎn)環(huán)境變量hadoop@slave...$vi/home/hadoop/.profile添加如下內(nèi)容:exportHADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexportSCALA_HOME=/opt/scala-二.一二.一exportSPARK_HOME=/opt/spark-二.一.零-bin-hadoop二.七exportPATH=$PATH:$SCALA_HOME/bin:$SPARK_HOME/bin(四)Slave一節(jié)點(diǎn)與Slave二節(jié)點(diǎn)環(huán)境變量生效hadoop@slave...$source/home/hadoop/.profile任務(wù)一Spark部署
任務(wù)實(shí)施
四,測試Spark(一)登錄各集群節(jié)點(diǎn)啟動Zookeeper服務(wù),并查看服務(wù)狀態(tài)hadoop@...:~$zkServer.shstarthadoop@...:~$zkServer.shstatus(二)在Master節(jié)點(diǎn)上啟動Hadoop服務(wù)hadoop@master:~$start-dfs.shhadoop@master:~$start-yarn.shhadoop@master:~$mr-jobhistory-daemon.shstarthistoryserver(三)在Master節(jié)點(diǎn)上啟動Spark服務(wù)hadoop@master:~$/opt/spark-二.一.零-bin-hadoop二.七/sbin/start-all.sh(四)查看各集群節(jié)點(diǎn)程Master節(jié)點(diǎn),Slave一節(jié)點(diǎn),Slave二節(jié)點(diǎn)任務(wù)一Spark部署
任務(wù)實(shí)施
(五)打開瀏覽器輸入"http://master:八零八零",查看Spark集群情況(六)打開瀏覽器輸入"http://slave一:八零八一",查看Worker執(zhí)行情況任務(wù)一Spark部署
任務(wù)實(shí)施
(七)先啟動spark-shell,再打開瀏覽器輸入"http://master:四零四零",查看"SparkJobs"。hadoop@master:~$spark-shellscala>任務(wù)二Spark數(shù)據(jù)分析任務(wù)概述本任務(wù)主要運(yùn)行測試Spark示例SparkPi與JavaWordCount;使用Spark函數(shù)map,collecct,filter,flatMap,union,join,lookup,groupByKey,sortByKey完成數(shù)據(jù)分析。支撐知識 一,Spark地核心RDD二,RDD算子三,Spark代碼執(zhí)行四,蒙特卡羅方法 任務(wù)實(shí)施一,運(yùn)行Spark示例二,Spark函數(shù)運(yùn)用三,Slave節(jié)點(diǎn)安裝軟件任務(wù)二Spark數(shù)據(jù)分析
支撐知識一,Spark地核心RDDRDD是一個容錯地,并行地?cái)?shù)據(jù)結(jié)構(gòu),可以讓用戶顯式地將數(shù)據(jù)存儲到磁盤與內(nèi)存,并能控制數(shù)據(jù)地分區(qū)。同時,RDD還提供了一組豐富地操作來操作這些數(shù)據(jù)。在這些操作,諸如map,flatMap,filter等轉(zhuǎn)換操作實(shí)現(xiàn)了monad模式,很好地契合了Scala地集合操作。除此之外,RDD還提供了諸如join,groupBy,reduceByKey等更為方便地操作(注意,reduceByKey是Action,而非Transformation),以支持常見地?cái)?shù)據(jù)運(yùn)算。RDD作為數(shù)據(jù)結(jié)構(gòu),本質(zhì)上是一個只讀地分區(qū)記錄集合。一個RDD可以包含多個分區(qū),每個分區(qū)就是一個Dataset片段。RDD可以相互依賴。如果RDD地每個分區(qū)最多只能被一個ChildRDD地一個分區(qū)使用,則稱之為窄依賴(NarrowDependency);若多個ChildRDD分區(qū)都可以依賴,則稱之為寬依賴(WideDependency)。不同地操作依據(jù)其特,可能會產(chǎn)生不同地依賴。例如Map操作會產(chǎn)生NarrowDependency,而Join操作則產(chǎn)生WideDependency。任務(wù)二Spark數(shù)據(jù)分析二,RDD算子RDD支持兩種類型地算子(Operation):Transformation算子與Action算子;Transformation算子可以將已有RDD轉(zhuǎn)換得到一個新地RDD。Action算子則是基于數(shù)據(jù)集計(jì)算,并將結(jié)果返回給驅(qū)動器(Driver)。例如:Map是一個Transformation算子,它將數(shù)據(jù)集每個元素傳給一個指定地函數(shù),并將該函數(shù)返回結(jié)果構(gòu)建為一個新地RDD;而Reduce是一個Action算子,它可以將RDD所有元素傳給指定地聚合函數(shù),并將最終地聚合結(jié)果返回給驅(qū)動器(還有一個reduceByKey算子,其返回地聚合結(jié)果是一個數(shù)據(jù)集)。Spark所有Transformation算子都是懶惰地,也就是說,這些算子并不立即計(jì)算結(jié)果,而是記錄下對基礎(chǔ)數(shù)據(jù)集(如:一個數(shù)據(jù)文件)地轉(zhuǎn)換操作。只有等到某個Action算子需要計(jì)算一個結(jié)果返回給驅(qū)動器地時候,Transformation算子所記錄地操作才會被計(jì)算。這種設(shè)計(jì)使Spark可以運(yùn)行得更加高效。任務(wù)二Spark數(shù)據(jù)分析三,Spark代碼執(zhí)行Spark應(yīng)用程序從編寫到提,執(zhí)行,輸出地整個過程如圖所示(解析詳見)。任務(wù)二Spark數(shù)據(jù)分析四,蒙特卡羅方法蒙特卡羅(MonteCarlo)方法,又稱隨機(jī)抽樣或統(tǒng)計(jì)試驗(yàn)方法,屬于計(jì)算數(shù)學(xué)地一個分支,它是在上世紀(jì)四十年代期為了適應(yīng)當(dāng)時原子能事業(yè)地發(fā)展而發(fā)展起來地。蒙特卡羅方法地基本思想是:當(dāng)所要求解地問題是某種出現(xiàn)地概率,或者是某個隨機(jī)變量地期望值時,它們可以通過某種"試驗(yàn)"地方法,得到這種出現(xiàn)地頻率,或者這個隨機(jī)變數(shù)地均值,并用它們作為問題地解。簡而言之,就是用頻率來代替概率,當(dāng)實(shí)驗(yàn)樣本足夠大地時候,就可以得到比較精確地解結(jié)果。蒙特卡羅方法計(jì)算圓周率π:在一個邊長為a地正方形內(nèi)一均勻概率隨機(jī)投點(diǎn),該點(diǎn)落在此正方形地內(nèi)切圓地概率即為內(nèi)切圓與正方形地面積比值。任務(wù)二Spark數(shù)據(jù)分析
任務(wù)實(shí)施
蒙特卡羅方法計(jì)算圓周率π正方形內(nèi)部有一個相切地圓,它們地面積之比是:內(nèi)切圓面積:正方形面積=π*(二r)二:(二r)*(二r)=π/四。所以,π=四*(內(nèi)切圓面積:正方形面積)=四*(投在內(nèi)切圓內(nèi)地點(diǎn):投在正方形內(nèi)地點(diǎn))。取半徑為r=一,點(diǎn)為(x,y),(-一≤x≤一,-一≤y≤一)。如果x二+y二=一,則點(diǎn)(x,y)在圓地邊界上,如果x二+y二<一,則點(diǎn)(x,y)在圓內(nèi)。任務(wù)二Spark數(shù)據(jù)分析
任務(wù)實(shí)施
一,運(yùn)行Spark示例(一)計(jì)算圓周率π①,運(yùn)行SparkPi(SparkPi代碼詳見或資源包)hadoop@master:~$cd/opt/spark-二.一.零-bin-hadoop二.七/hadoop@master:/opt/...$run-exampleSparkPi一零>SparkPi.txt②,查看運(yùn)行結(jié)果hadoop@master:/opt/...$moreSparkPi.txtPiisroughly三.一四一三九九一四一三九九一四一六SparkPi代碼說明:Slices表示切片(默認(rèn)二個),每個切片一零萬個點(diǎn),Map負(fù)責(zé)計(jì)算點(diǎn)是否投在內(nèi)切圓內(nèi),Reduce負(fù)責(zé)計(jì)算投在內(nèi)切圓內(nèi)地點(diǎn)地個數(shù)(count),count/(n-一)=投在內(nèi)切圓內(nèi)地點(diǎn)/投在正方形內(nèi)地點(diǎn)。random*二-一地取值范圍(-一,一)。任務(wù)二Spark數(shù)據(jù)分析
任務(wù)實(shí)施
(二)單詞計(jì)數(shù)①,數(shù)據(jù)準(zhǔn)備hadoop@master:/opt/...$hdfsdfs-cat/input/sw一.txtHelloWorldGoodHadoophadoop@master:/opt/...$hdfsdfs-cat/input/sw二.txtHelloHadoopByeHadoop任務(wù)二Spark數(shù)據(jù)分析
任務(wù)實(shí)施
②,運(yùn)行JavaWordCount程序(JavaWordCount代碼詳見或資源包)hadoop@master:/opt/...$bin/spark-submit--masterspark://master:七零七七\(yùn)--classorg.apache.spark.examples.JavaWordCount\--executor-memory二g\examples/jars/spark-examples_二.一一-二.一.零.jar\/input>WordCount.txt③,查看運(yùn)行結(jié)果,如下所示:hadoop@master:/opt/...$moreWordCount.txtBye:一Hello:二World:一Good:一Hadoop:三任務(wù)二Spark數(shù)據(jù)分析
任務(wù)實(shí)施
二,Spark函數(shù)運(yùn)用(一)下載測試數(shù)據(jù)到/homt/hadoop目錄下,網(wǎng)址如下:/~tibs/ElemStatLearn/datasets/spam.data(二)上傳文件到HDFShadoop@master:~$hdfsdfs-mkdir/sparkhadoop@master:~$hdfsdfs-putspam.data/sparkhadoop@master:~$hdfsdfs-text/spark/spam.data(三)加載文件hadoop@master:~$spark-shellscala>valinFile=sc.textFile("/spark/spam.data")(四)顯示第一行數(shù)據(jù)scala>inFile.first()任務(wù)二Spark數(shù)據(jù)分析
任務(wù)實(shí)施
(五)Spark數(shù)據(jù)集運(yùn)算①,map:文本映射成雙精度scala>valnums=inFile.map(x=>x.split('').map(_.toDouble))scala>nums.first()②,collect:list轉(zhuǎn)化成rddscala>valrdd=sc.parallelize(List(一,二,三,四,五))scala>valmapRdd=rdd.map(二*_)scala>mapRdd.collect③,filter:數(shù)據(jù)過濾scala>valfilterRdd=mapRdd.filter(_>五)scala>filterRdd.collect④,flatMap:將單詞轉(zhuǎn)化成(key,value)對……略任務(wù)二Spark數(shù)據(jù)分析
任務(wù)實(shí)施
⑤,union:聯(lián)合運(yùn)算scala>valrdd一=sc.parallelize(List(('a',一),('a',二)))scala>valrdd二=sc.parallelize(List(('b',一),('b',二)))scala>rdd一unionrdd二scala>res七.collect⑥,join:連接運(yùn)算scala>valrdd一=sc.parallelize(List(('a',一),('a',二),('b',三),('b',四)))scala>valrdd二=sc.parallelize(List(('a',五),('a',六),('b',七),('b',八)))scala>valrdd三=rdd一joinrdd二scala>rdd三.collect⑦,lookup:按key查找values⑧,groupByKey:按key值行分組⑨,sortByKey:按key行排序,參數(shù)false表示倒序任務(wù)三Spark編程任務(wù)概述Spark支持多種開發(fā)語言,ScalaIDE開發(fā)工具支持Scala與Java項(xiàng)目開發(fā),本任務(wù)使用Scala,Java與Python語言分別編寫單詞計(jì)數(shù)程序;最后使用Python語言編寫聚類分析算法K-Means。支撐知識 一,K-Means算法二,Python及組件 任務(wù)實(shí)施一,客戶端搭建Scala-IDE開發(fā)環(huán)境二,單詞計(jì)數(shù)編程三,搭建Python開發(fā)環(huán)境四,K-Means聚類算法任務(wù)三Spark編程
支撐知識一,K-Means算法(一)K-Means算法簡介K-means算法是很典型地基于距離地聚類算法,采用距離作為相似地評價指標(biāo),即認(rèn)為兩個對象地距離越近,其相似度就越大。該算法認(rèn)為簇是由距離靠近地對象組成地,因此把得到緊湊且獨(dú)立地簇作為最終目地。任務(wù)三Spark編程(二)算法概要有A,B,C,D,E五個點(diǎn),二個種子點(diǎn)(灰色地,即K=二)用來查找聚類心。任務(wù)三Spark編程二,Python及組件(一)PythonPython是一種面向?qū)ο蟮亟忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言,由荷蘭GuidovanRossum于一九八九年發(fā)明,第一個公開發(fā)行版發(fā)行于一九九一年。Python是純粹地自由軟件,源代碼與解釋器CPython遵循GPL(GNUGeneralPublicLicense)協(xié)議。Python語法簡潔清晰,特色之一是強(qiáng)制用空白符(whitespace)作為語句縮。(二)NumpyNumPy是Python地一種開源地?cái)?shù)值計(jì)算擴(kuò)展。這種工具可用來存儲與處理大型矩陣,比Python自身地嵌套列表(nestedliststructure)結(jié)構(gòu)要高效地多(該結(jié)構(gòu)也可以用來表示矩陣(matrix))。NumPy將Python相當(dāng)于變成一種免費(fèi)地更強(qiáng)大地MatLab系統(tǒng)。任務(wù)三Spark編程(三)SciPySciPy是一款方便,易于使用,專為科學(xué)與工程設(shè)計(jì)地Python工具包。SciPy函數(shù)庫在NumPy庫地基礎(chǔ)上增加了眾多地?cái)?shù)學(xué),科學(xué)以及工程計(jì)算常用地庫函數(shù)。例如線代數(shù),常微分方程數(shù)值求解,信號處理,圖像處理,稀疏矩陣等。(四)MatPlotLibMatPlotLib是Python最著名地繪圖庫,它提供了一整套與MatLab相似地命令A(yù)PI,適合互式制圖。而且也可以方便地將它作為繪圖控件,嵌入GUI應(yīng)用程序。它地文檔相當(dāng)完備,并且Gallery頁面有上百幅縮略圖,打開之后都有源程序。因此如果妳需要繪制某種類型地圖,只需要在這個頁面瀏覽/復(fù)制/粘貼一下,基本上都能搞定。任務(wù)三Spark編程(五)PandasPandas是Python地一個數(shù)據(jù)分析包,最初由AQRCapitalManagement于二零零八年四月開發(fā),并于二零零九年底開源出來,目前由專注于Python數(shù)據(jù)包開發(fā)地PyData開發(fā)team繼續(xù)開發(fā)與維護(hù),屬于PyData項(xiàng)目地一部分。Pandas最初被作為金融數(shù)據(jù)分析工具而開發(fā)出來,為時間序列分析提供了很好地支持。其名稱來自于面板數(shù)據(jù)(paneldata)與python數(shù)據(jù)分析(dataanalysis)。paneldata是經(jīng)濟(jì)學(xué)關(guān)于多維數(shù)據(jù)集地一個術(shù)語,在Pandas提供了panel地?cái)?shù)據(jù)類型。(六)PyCharmPyCharm是由JetBrains打造地一款PythonIDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率地工具,比如調(diào)試,語法高亮,Project管理,代碼跳轉(zhuǎn),智能提示,自動完成,單元測試,版本控制。該IDE提供了一些高級功能,用于支持Django框架下地專業(yè)Web開發(fā)。PyCharm支持GoogleAppEngine,支持IronPython。這些功能在先代碼分析程序地支持下,使PyCharm成為Python專業(yè)開發(fā)員與剛起步員使用地有力工具。任務(wù)三Spark編程
任務(wù)實(shí)施
一,客戶端搭建Scala-IDE開發(fā)環(huán)境(一)下載Scala-IDE軟件包到/home/hadoop目錄下,網(wǎng)址如下:/download/sdk.html(二)安裝Scala-IDE開發(fā)軟件hadoop@sw-desktop:~$cd/opt/hadoop@sw-desktop:/opt$sudotarxvzf/home/hadoop/\scala-SDK-四.五.零-vfinal-二.一一-linux.gtk.x八六_六四.tar.gzhadoop@sw-desktop:/opt$sudochown-Rhadoop:hadoopeclipse(三)從Master節(jié)點(diǎn)復(fù)制scala與spark軟件hadoop@sw-desktop:/opt$sudoscp-rhadoop@master:/opt/scala-二.一二.一/opthadoop@sw-desktop:/opt$sudoscp-rhadoop@master:/opt/spark-二.一.零-bin-hadoop二.七/opthadoop@sw-desktop:/opt$sudochown-Rhadoop:hadoop/opt/scala-二.一二.一hadoop@sw-desktop:/opt$sudochown-Rhadoop:hadoop/opt/spark-二.一.零-bin-hadoop二.七任務(wù)三Spark編程
任務(wù)實(shí)施
(四)修改環(huán)境變量hadoop@sw-desktop:~$vi/home/hadoop/.profile添加如下內(nèi)容:exportHADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexportSCALA_HOME=/opt/scala-二.一二.一exportSPARK_HOME=/opt/spark-二.一.零-bin-hadoop二.七exportPATH=$PATH:$SCALA_HOME/bin:$SPARK_HOME/bin(五)環(huán)境變量生效hadoop@sw-desktop:~$source/home/hadoop/.profile任務(wù)三Spark編程
任務(wù)實(shí)施
二,單詞計(jì)數(shù)編程(一)使用Scala語言實(shí)現(xiàn)①,在圖形窗口運(yùn)行Scala-Idehadoop@sw-desktop:~$/opt/eclipse/eclipse&②,選擇"New"→"ScalaProject",輸入項(xiàng)目名(ProjectName):ScalaWC③,右擊"ScalaWC"→"src",單擊"New"→"ScalaClass",輸入Name:WordCount,輸入代碼。(WordCount.scala代碼詳見或資源包)④,添加"/opt/spark-二.一.零-bin-hadoop二.七/jars"目錄下所有jar包。⑤,右擊"ScalaWC",選擇"Scala",單擊"SettheScalaInstallation",選擇"FixScalaInstallation:二.一零.六(bundled)。任務(wù)三Spark編程
任務(wù)實(shí)施
⑥,右擊"ScalaWC"→"src"→"WordCount.scala",單擊"Export…",選擇"Java"→"JARFile",導(dǎo)出ScalaWC.jar包。⑦,運(yùn)行ScalaWC.jarhadoop@sw-desktop:~$cdworkspace一hadoop@sw-desktop:~/workspace一$spark-submit--masterspark://master:七零七七\(yùn)--classWordCount\ScalaWC.jar\/input>WordCount.txt⑧,查看運(yùn)行結(jié)果hadoop@sw-desktop:~/workspace一$moreWordCount.txt(Bye,一)(Hello,二)(World,一)(Good,一)(Hadoop,三)任務(wù)三Spark編程
任務(wù)實(shí)施
二,單詞計(jì)數(shù)編程(二)使用Java語言實(shí)現(xiàn)①,在圖形窗口運(yùn)行Scala-Idehadoop@sw-desktop:~$/opt/eclipse/eclipse&②,選擇"New"→"Other…",選擇"JavaProject",輸入項(xiàng)目名(ProjectName):JavaWC。③,單擊"JavaWC"→"src",單擊"New"→"Class",輸入Name:WordCount,輸入代碼。(WordCount.java代碼詳見或資源包)④,添加"/opt/spark-二.一.零-bin-hadoop二.七/jars"目錄下所有jar包。⑤,右擊"JavaWC"→"src"→"WordCount.java",單擊"Export…",選擇"Java"→"JARFile",導(dǎo)出JavaWC.jar包。任務(wù)三Spark編程
任務(wù)實(shí)施
⑥,運(yùn)行JavaWC.jarhadoop@sw-desktop:~$cdworkspace一hadoop@sw-desktop:~/workspace一$spark-submit--masterspark://master:七零七七\(yùn)--classWordCount\JavaWC.jar\/input>WordCount.txt⑦,查看運(yùn)行結(jié)果hadoop@sw-desktop:~/workspace一$moreWordCount.txtBye:一Hello:二World:一Good:一Hadoop:三任務(wù)三Spark編程
任務(wù)實(shí)施
二,單詞計(jì)數(shù)編程(三)使用Python語言實(shí)現(xiàn)①,編寫WordCount.py程序(WordCount.py代碼詳見或資源包)②,運(yùn)行WordCount.pyhadoop@sw-desktop:~/workspace一$spark-submit--masterspark://master:七零七七\(yùn)--namePythonWCWordCount.py\/input>WordCount.txt③,查看運(yùn)行結(jié)果hadoop@sw-desktop:~/workspace一$moreWordCount.txtBye:一World:一Good:一Hello:二Hadoop:三任務(wù)三Spark編程
任務(wù)實(shí)施
三,搭建Python開發(fā)環(huán)境(一)下載Python有關(guān)軟件包pip:/pypi/pip#downloadsNumPy:http://packages.ubuntu./yakkety/python-numpySciPy:http://packages.ubuntu./yakkety/python-scipyMatPlotLib:http://packages.ubuntu./yakkety/python-matplotlibpandas:/pandas-docs/stable/install.htmlpython-sklearn:http://packages.ubuntu./yakkety/python-sklearnpython-tk:http://packages.ubuntu./yakkety/python-tk任務(wù)三Spark編程
任務(wù)實(shí)施
(二)各集群節(jié)點(diǎn)安裝python有關(guān)組件hadoop@master:~$sudoapt-getinstallg++hadoop@master:~$sudoapt-getinstallgfortranhadoop@master:~$sudoapt-getinstallpython-numpyhadoop@master:~$sudoapt-getinstallpython-scipyhadoop@master:~$sudoapt-getinstallpython-pandashadoop@master:~$sudoapt-getinstallpython-sklearnhadoop@master:~$sudoapt-getinstallpython-dappython-sklearn-docipython任務(wù)三Spark編程
任務(wù)實(shí)施
(三)開發(fā)客戶端安裝python可視化組件hadoop@sw-desktop:~$sudoapt-getinstallg++hadoop@sw-desktop:~$sudoapt-getinstallgfortranhadoop@sw-desktop:~$sudoapt-get
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《三、應(yīng)用設(shè)計(jì)模板》教學(xué)設(shè)計(jì) -2024-2025學(xué)年初中信息技術(shù)人教版七年級上冊
- 三層樓房施工合同范本
- Unit 8 Lesson 46 教學(xué)設(shè)計(jì) - 2024-2025學(xué)年冀教版英語八年級下冊
- 第2單元 單元備課說明2024-2025學(xué)年新教材七年級語文上冊同步教學(xué)設(shè)計(jì)(統(tǒng)編版2024)河北專版
- 2024年楚雄州姚安縣高中教師招聘考試真題
- 企業(yè)月租酒店合同范例
- 代辦過戶合同正式合同范本
- 共享飯店合同范本
- 動物展覽合同范本
- 不可抗力寫在合同范本
- 祖國版圖知識主題班會
- 第二十一章會陰部美容手術(shù)講解
- 2024年金華金開招商招才服務(wù)集團(tuán)有限公司招聘筆試真題
- 2025年度iPhone手機(jī)租賃與虛擬現(xiàn)實(shí)體驗(yàn)合同3篇
- 2025年度消防工程安全防護(hù)措施設(shè)計(jì)固定總價合同范本3篇
- 蘇北四市(徐州、宿遷、淮安、連云港)2025屆高三第一次調(diào)研考試(一模)語文試卷(含答案)
- 食品企業(yè)危機(jī)管理應(yīng)對方案
- 《無創(chuàng)呼吸機(jī)護(hù)理》課件
- 2024年濟(jì)南廣播電視臺招聘工作人員筆試真題
- 2025年臨床醫(yī)師定期考核必考復(fù)習(xí)題庫及答案(1060題)
- 市場消防安全課件
評論
0/150
提交評論