国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Spark在Windows下的環(huán)境搭建

2019-11-14 09:19:37
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

由于Spark是用Scala來(lái)寫的,所以Spark對(duì)Scala肯定是原生態(tài)支持的,因此這里以Scala為主來(lái)介紹Spark環(huán)境的搭建,主要包括四個(gè)步驟,分別是:JDK的安裝,Scala的安裝,Spark的安裝,Hadoop的下載和配置。為了突出”From Scratch”的特點(diǎn)(都是標(biāo)題沒選好的緣故),所以下面的步驟稍顯有些啰嗦,老司機(jī)大可不必閱讀,直接跳過(guò)就好。   

一.JDK的安裝與環(huán)境變量的設(shè)置

1.1 JDK的安裝

  JDK(全稱是javaTM Platform Standard Edition Development Kit)的安裝,下載地址是Java SE Downloads,一般進(jìn)入頁(yè)面后,會(huì)默認(rèn)顯示一個(gè)最新版的JDK,如下圖所示,當(dāng)前最新版本是JDK 8,更為詳細(xì)具體的地址是Java SE Development Kit 8 Downloads:

  上圖中兩個(gè)用紅色標(biāo)記的地方都是可以點(diǎn)擊的,點(diǎn)擊進(jìn)去之后可以看到這個(gè)最新版本的一些更為詳細(xì)的信息,如下圖所示:

  首先,這里主要包含有8u101和8u102這兩個(gè)版本,Java給出的官方說(shuō)明是:

“Java SE 8u101 includes important security fixes. Oracle strongly recommends that all Java SE 8 users upgrade to this release. Java SE 8u102 is a patch-set update, including all of 8u101 plus additional features (described in the release notes). ”

  也就是說(shuō)Java推薦所有開發(fā)人員從以前的版本升級(jí)到JDK 8u101,而JDK 8u102則除了包括101的所有特性之外,還有一些其他的特性。對(duì)于版本的選擇,自行選擇就好了,其實(shí)對(duì)于普通開發(fā)人員來(lái)說(shuō),體現(xiàn)不了太大的區(qū)別,我這里就是使用的JDK 8u101版本。

  選好8u101版本后,再選擇你的對(duì)應(yīng)開發(fā)平臺(tái),由于我的機(jī)器是64位的,所以我這里選擇Windows64位的版本。記得在下載之前,必須要接受上方的許可協(xié)議,在上圖中用紅色圈出。      除了下載最新版本的JDK,也可以在Oracle Java Archive下載到歷史版本的JDK,但官方建議只做測(cè)試用。      JDK在windows下的安裝非常簡(jiǎn)單,按照正常的軟件安裝思路去雙擊下載得到的exe文件,然后設(shè)定你自己的安裝目錄(安裝目錄在設(shè)置環(huán)境變量的時(shí)候需要用到)即可。   

1.2 環(huán)境變量的設(shè)置

  接下來(lái)設(shè)置相應(yīng)的環(huán)境變量,設(shè)置方法為:在桌面右擊【計(jì)算機(jī)】--【屬性】--【高級(jí)系統(tǒng)設(shè)置】,然后在系統(tǒng)屬性里選擇【高級(jí)】--【環(huán)境變量】,然后在系統(tǒng)變量中找到“Path”變量,并選擇“編輯”按鈕后出來(lái)一個(gè)對(duì)話框,可以在里面添加上一步中所安裝的JDK目錄下的bin文件夾路徑名,我這里的bin文件夾路徑名是:F:/PRogram Files/Java/jdk1.8.0_101/bin,所以將這個(gè)添加到path路徑名下,注意用英文的分號(hào)“;”進(jìn)行分割。這樣設(shè)置好后,便可以在任意目錄下打開的cmd命令行窗口下運(yùn)行

java -version11

觀察是否能夠輸出相關(guān)java的版本信息,如果能夠輸出,說(shuō)明JDK安裝這一步便全部結(jié)束了。

  全部流程如下圖所示(后續(xù)軟件安裝的系統(tǒng)變量設(shè)置都是這套流程):

1.3 一些題外話

    這里講兩句題外話,各位看官不關(guān)心的話可以跳過(guò)這里,不影響后續(xù)的安裝步驟。   在軟件安裝的時(shí)候,相信各位沒少遇到過(guò)環(huán)境變量和系統(tǒng)變量,所以這里就來(lái)扒一扒令人頭疼的PATH, CLASSPATH和JAVA_HOME等參數(shù)的具體含義。

1.3.1 環(huán)境變量、系統(tǒng)變量和用戶變量

環(huán)境變量包括系統(tǒng)變量和用戶變量系統(tǒng)變量的設(shè)置針對(duì)該操作系統(tǒng)下的所有用戶起作用;用戶變量的設(shè)置只針對(duì)當(dāng)前用戶起作用

如果對(duì)這些概念還不是特別熟悉的,建議先看完下面幾個(gè)點(diǎn)之后,再回過(guò)頭來(lái)看這三句話。

1.3.2 PATH

  也就是上一步設(shè)置的系統(tǒng)變量,告訴操作系統(tǒng)去哪里找到Java.exe的執(zhí)行路徑,當(dāng)你在命令行窗口冷不丁的敲上如下命令的時(shí)候,

java -version11

操作系統(tǒng)首先會(huì)一驚,What the hell does “java” mean? 不過(guò)吐槽歸吐槽,活還是得干,于是悠悠的記起來(lái)了蓋茨爸爸說(shuō)過(guò)的三句話:

當(dāng)你看不懂命令行窗口中的一個(gè)命令的時(shí)候,你首先去你所在的當(dāng)前目錄下找找,是否有這個(gè)命令的.exe程序?如果有,那就用它來(lái)啟動(dòng)執(zhí)行;如果沒有,千萬(wàn)別放棄,記得要去Path系統(tǒng)變量下的那些目錄下去找一找,如果找到了,啟動(dòng)并執(zhí)行命令;如果上面兩個(gè)地方依然還沒找到,那你就撒個(gè)嬌,報(bào)個(gè)錯(cuò)好了。

所以我們將JDK安裝目錄下的bin文件夾添加到Path系統(tǒng)變量的目的也就在這里,告訴操作系統(tǒng):如果在當(dāng)前目錄下找不到j(luò)ava.exe,就去Path系統(tǒng)變量里的那些路徑下挨個(gè)找一找,直到找到j(luò)ava.exe為止。那為什么要設(shè)置bin文件夾,而不是JDK安裝的根目錄呢?原因就在于根目錄下沒有java.exe啊,只有bin文件夾下才有啊喂……

如果只是在命令行窗口下運(yùn)行一下java的命令,那其實(shí)也可以不設(shè)置系統(tǒng)變量,只是每次在命令行窗口運(yùn)行java的命令時(shí),都必須帶上一長(zhǎng)串路徑名,來(lái)直接指定java.exe的位置,如下所示。

C:/Users/weizierxu>F:/Program Files/Java/jdk1.8.0_101/bin/java.exe -version'F:/Program' 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件。123123

注意:這里報(bào)錯(cuò)的原因并不是說(shuō)直接指定java.exe的路徑名這種方式有問(wèn)題,而是命令行下無(wú)法解析帶有空格的路徑名,所以需要用到雙引號(hào),如下:

C:/Users/weizierxu>"F:/Program Files"/Java/jdk1.8.0_101/bin/java.exe -versionjava version "1.8.0_101"Java(TM) SE Runtime Environment (build 1.8.0_101-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)12341234

1.3.3 CLASSPATH

  CLASSPATH是在Java執(zhí)行一個(gè)已經(jīng)編譯好的class文件時(shí),告訴Java去哪些目錄下找到這個(gè)class文件,比如你的程序里用到某個(gè)Jar包(Jar包里的都是已經(jīng)編譯好的class文件),那么在執(zhí)行的時(shí)候,Java需要找到這個(gè)Jar包才行,去哪找呢?從CLASSPATH指定的目錄下,從左至右開始尋找(用分號(hào)區(qū)分開的那些路徑名),直到找到你指定名字的class文件,如果找不到就會(huì)報(bào)錯(cuò)。這里做一個(gè)實(shí)驗(yàn),就能明白具體是什么意思了。  首先,我在F:/Program Files/Java目錄下,利用Windows自帶的記事本寫了一個(gè)類似于Hello World的程序,保存為testClassPath.java文件(注意后綴名得改成java),內(nèi)容如下:

public class testClassPath{ public static void main(String[] args){ System.out.println("Hello, this is a test on CLASSPATH!"); }}1234512345

然后,我將cmd的當(dāng)前目錄切換到(通過(guò)cd命令)F:/Program Files/Java目錄下,然后用javac命令來(lái)對(duì)這個(gè).java文件進(jìn)行編譯,如下圖所示: 從上圖中可以看到,javac命令可以正常使用(沒有任何輸出的就表明正確編譯了),這是因?yàn)閳?zhí)行該命令的javac.exe同樣存在于JDK安裝路徑下的bin目錄中,而這個(gè)目錄我們已經(jīng)添加到Path系統(tǒng)變量中去了,所以cmd能夠認(rèn)識(shí)這個(gè)命令。這個(gè)時(shí)候可以看到F:/Program Files/Java目錄下多了一個(gè)testClassPath.class文件。不過(guò)運(yùn)行這個(gè)class文件的時(shí)候,報(bào)錯(cuò)了。這個(gè)時(shí)候,CLASSPATH就派上用場(chǎng)了,和1.2節(jié)中對(duì)Path系統(tǒng)變量設(shè)置的方法一樣,這里在CLASSPATH(如果系統(tǒng)變量的列表中沒有CLASSPATH這個(gè)選項(xiàng),那么點(diǎn)擊新建,然后添加路徑即可)中最后面添加上;.,英文的分號(hào)表示和前面已有的路徑分割開,后面的小點(diǎn).表示當(dāng)前目錄的意思。這個(gè)時(shí)候記得要另起一個(gè)新的cmd窗口,然后利用cd命令切換到testClassPath.class所在目錄,然后再去執(zhí)行,便可以成功得到結(jié)果了。

F:/Program Files/Java>java testClassPathHello, this is a test on CLASSPATH!1212

  因此,和Path變量不同的是,Java在執(zhí)行某個(gè)class文件的時(shí)候,并不會(huì)有默認(rèn)的先從當(dāng)前目錄找這個(gè)文件,而是只去CLASSPATH指定的目錄下找這個(gè)class文件,如果CLASSPATH指定的目錄下有這個(gè)class文件,則開始執(zhí)行,如果沒有則報(bào)錯(cuò)(這里有去當(dāng)前目錄下找這個(gè)class文件,是因?yàn)楫?dāng)前路徑通過(guò).的方式,已經(jīng)添加到了CLASSPATH系統(tǒng)變量中)。  上面講的指定CLASSPATH系統(tǒng)變量的方法,都是直接寫死在系統(tǒng)變量中的,為了避免造成干擾(比如多個(gè)同名class文件存在于多個(gè)路徑中,這些路徑都有添加到CLASSPATH系統(tǒng)變量中,由于在找class文件的時(shí)候,是從左往右掃描CLASSPATH系統(tǒng)變量中的路徑的,所以在利用java testClassPath方法執(zhí)行的時(shí)候,運(yùn)行的便是位置在CLASSPATH系統(tǒng)變量中最左邊的那個(gè)路徑中,對(duì)應(yīng)的class文件,而這顯然不是我們想要的結(jié)果),因此在諸如Eclipse等等這些IDE中,并不需要人為手動(dòng)設(shè)定CLASSPATH系統(tǒng)變量,而是只設(shè)定當(dāng)前程序的特定的CLASSPATH系統(tǒng)變量,這樣便不會(huì)影響到其他程序的運(yùn)行了。

1.3.4 JAVA_HOME

JAVA_HOME并不是Java本身所需要的參數(shù),而是其他的一些第三方工具需要這個(gè)參數(shù)來(lái)配置它們自己的參數(shù),它存在的意義無(wú)非是告訴那些軟件,我的JDK安裝在這個(gè)目錄下,你如果要用到我的Java程序的話,直接來(lái)我這個(gè)目錄下找就好了,而JAVA_HOME就是JDK的安裝路徑名。比如我的JDK安裝在F:/Program Files/Java/jdk1.8.0_101目錄下(注意該目錄下的bin目錄,就是在1.3.2節(jié)里Path系統(tǒng)變量中要添加的值),那么JAVA_HOME里要添加的值便是F:/Program Files/Java/jdk1.8.0_101,以后碰到類似HOME的系統(tǒng)變量,都是軟件的安裝目錄。

二. Scala的安裝

  首先從DOWNLOAD PREVIOUS VERSIONS下載到對(duì)應(yīng)的版本,在這里需要注意的是,Spark的各個(gè)版本需要跟相應(yīng)的Scala版本對(duì)應(yīng),比如我這里使用的Spark 1.6.2就只能使用Scala 2.10的各個(gè)版本,目前最新的Spark 2.0就只能使用Scala 2.11的各個(gè)版本,所以下載的時(shí)候,需要注意到這種Scala版本與Spark版本相互對(duì)應(yīng)的關(guān)系。我這里現(xiàn)在用的是Scala 2.10.6,適配Spark從1.3.0到Spark 1.6.2之間的各個(gè)版本。在版本頁(yè)面DOWNLOAD PREVIOUS VERSIONS選擇一個(gè)適合自己需要的版本后,會(huì)進(jìn)入到該版本的具體下載頁(yè)面,如下圖所示,記得下載二進(jìn)制版本的Scala,點(diǎn)擊圖中箭頭所指,下載即可:

  下載得到Scala的msi文件后,可以雙擊執(zhí)行安裝。安裝成功后,默認(rèn)會(huì)將Scala的bin目錄添加到PATH系統(tǒng)變量中去(如果沒有,和JDK安裝步驟中類似,將Scala安裝目錄下的bin目錄路徑,添加到系統(tǒng)變量PATH中),為了驗(yàn)證是否安裝成功,開啟一個(gè)新的cmd窗口,輸入scala然后回車,如果能夠正常進(jìn)入到Scala的交互命令環(huán)境則表明安裝成功。如下圖所示:如果不能顯示版本信息,并且未能進(jìn)入Scala的交互命令行,通常有兩種可能性: - Path系統(tǒng)變量中未能正確添加Scala安裝目錄下的bin文件夾路徑名,按照J(rèn)DK安裝中介紹的方法添加即可。 - Scala未能夠正確安裝,重復(fù)上面的步驟即可。

三. Spark的安裝

  Spark的安裝非常簡(jiǎn)單,直接去Download Apache Spark。有兩個(gè)步驟:

選擇好對(duì)應(yīng)Hadoop版本的Spark版本,如下圖中所示;然后點(diǎn)擊下圖中箭頭所指的spark-1.6.2-bin-hadoop2.6.tgz,等待下載結(jié)束即可。

  這里使用的是Pre-built的版本,意思就是已經(jīng)編譯了好了,下載來(lái)直接用就好,Spark也有源碼可以下載,但是得自己去手動(dòng)編譯之后才能使用。下載完成后將文件進(jìn)行解壓(可能需要解壓兩次),最好解壓到一個(gè)盤的根目錄下,并重命名為Spark,簡(jiǎn)單不易出錯(cuò)。并且需要注意的是,在Spark的文件目錄路徑名中,不要出現(xiàn)空格,類似于“Program Files”這樣的文件夾名是不被允許的。

  解壓后基本上就差不多可以到cmd命令行下運(yùn)行了。但這個(gè)時(shí)候每次運(yùn)行spark-shell(spark的命令行交互窗口)的時(shí)候,都需要先cd到Spark的安裝目錄下,比較麻煩,因此可以將Spark的bin目錄添加到系統(tǒng)變量PATH中。例如我這里的Spark的bin目錄路徑為D:/Spark/bin,那么就把這個(gè)路徑名添加到系統(tǒng)變量的PATH中即可,方法和JDK安裝過(guò)程中的環(huán)境變量設(shè)置一致,設(shè)置完系統(tǒng)變量后,在任意目錄下的cmd命令行中,直接執(zhí)行spark-shell命令,即可開啟Spark的交互式命令行模式。

四.HADOOP下載

  系統(tǒng)變量設(shè)置后,就可以在任意當(dāng)前目錄下的cmd中運(yùn)行spark-shell,但這個(gè)時(shí)候很有可能會(huì)碰到各種錯(cuò)誤,這里主要是因?yàn)镾park是基于Hadoop的,所以這里也有必要配置一個(gè)Hadoop的運(yùn)行環(huán)境。在Hadoop Releases里可以看到Hadoop的各個(gè)歷史版本,這里由于下載的Spark是基于Hadoop 2.6的(在Spark安裝的第一個(gè)步驟中,我們選擇的是Pre-built for Hadoop 2.6),我這里選擇2.6.4版本,選擇好相應(yīng)版本并點(diǎn)擊后,進(jìn)入詳細(xì)的下載頁(yè)面,如下圖所示,選擇圖中紅色標(biāo)記進(jìn)行下載,這里上面的src版本就是源碼,需要對(duì)Hadoop進(jìn)行更改或者想自己進(jìn)行編譯的可以下載對(duì)應(yīng)src文件,我這里下載的就是已經(jīng)編譯好的版本,即圖中的’hadoop-2.6.4.tar.gz’文件。

     下載并解壓到指定目錄,然后到環(huán)境變量部分設(shè)置HADOOP_HOME為Hadoop的解壓目錄,我這里是F:/Program Files/hadoop,然后再設(shè)置該目錄下的bin目錄到系統(tǒng)變量的PATH下,我這里也就是F:/Program Files/hadoop/bin,如果已經(jīng)添加了HADOOP_HOME系統(tǒng)變量,也可以用%HADOOP_HOME%/bin來(lái)指定bin文件夾路徑名。這兩個(gè)系統(tǒng)變量設(shè)置好后,開啟一個(gè)新的cmd,然后直接輸入spark-shell命令。

  正常情況下是可以運(yùn)行成功并進(jìn)入到Spark的命令行環(huán)境下的,但是對(duì)于有些用戶可能會(huì)遇到空指針的錯(cuò)誤。這個(gè)時(shí)候,主要是因?yàn)镠adoop的bin目錄下沒有winutils.exe文件的原因造成的。這里的解決辦法是:    - 去 https://github.com/steveloughran/winutils 選擇你安裝的Hadoop版本號(hào),然后進(jìn)入到bin目錄下,找到winutils.exe文件,下載方法是點(diǎn)擊winutils.exe文件,進(jìn)入之后在頁(yè)面的右上方部分有一個(gè)Download按鈕,點(diǎn)擊下載即可。 - 下載好winutils.exe后,將這個(gè)文件放入到Hadoop的bin目錄下,我這里是F:/Program Files/hadoop/bin。 - 在打開的cmd中輸入 F:/Program Files/hadoop/bin/winutils.exe chmod 777 /tmp/Hive 這個(gè)操作是用來(lái)修改權(quán)限的。注意前面的F:/Program Files/hadoop/bin部分要對(duì)應(yīng)的替換成實(shí)際你所安裝的bin目錄所在位置。

  經(jīng)過(guò)這幾個(gè)步驟之后,然后再次開啟一個(gè)新的cmd窗口,如果正常的話,應(yīng)該就可以通過(guò)直接輸入spark-shell來(lái)運(yùn)行Spark了。 正常的運(yùn)行界面應(yīng)該如下圖所示:從圖中可以看到,在直接輸入spark-shell命令后,Spark開始啟動(dòng),并且輸出了一些日志信息,大多數(shù)都可以忽略,需要注意的是兩句話:

Spark context available as sc.SQL context available as sqlContext.1212

Spark contextSQL context分別是什么,后續(xù)再講,現(xiàn)在只需要記住,只有看到這兩個(gè)語(yǔ)句了,才說(shuō)明Spark真正的成功啟動(dòng)了。

五. Python下的PySpark

  針對(duì)Python下的Spark,和Scala下的spark-shell類似,也有一個(gè)PySpark,它同樣也是一個(gè)交互式的命令行工具,可以對(duì)Spark進(jìn)行一些簡(jiǎn)單的調(diào)試和測(cè)試,和spark-shell的作用類似。對(duì)于需要安裝Python的來(lái)說(shuō),這里建議使用Python(x,y),它的優(yōu)點(diǎn)就是集合了大多數(shù)的工具包,不需要自己再單獨(dú)去下載而可以直接import來(lái)使用,并且還省去了繁瑣的環(huán)境變量配置,下載地址是Python(x,y) - Downloads,下載完成后,雙擊運(yùn)行安裝即可。因?yàn)楸窘坛讨饕許cala為主,關(guān)于Python的不做過(guò)多講解。

六. 小結(jié)

  至此,基本的Spark本地調(diào)試環(huán)境便擁有了,對(duì)于初步的Spark學(xué)習(xí)也是足夠的。但是這種模式在實(shí)際的Spark開發(fā)的時(shí)候,依然是不夠用的,需要借助于一個(gè)比較好用的IDE來(lái)輔助開發(fā)過(guò)程。下一講就主要講解ItelliJ IDEA以及Maven的配置過(guò)程。 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 隆回县| 海南省| 蕲春县| 澜沧| 合肥市| 平谷区| 泽普县| 木里| 梁平县| 莆田市| 桂平市| 元江| 通海县| 来安县| 美姑县| 柳江县| 叶城县| 大足县| 东明县| 三门县| 女性| 屏山县| 旌德县| 岳阳市| 忻州市| 临桂县| 正安县| 达孜县| 吉林市| 德化县| 临清市| 榆中县| 张北县| 财经| 临潭县| 邻水| 越西县| 理塘县| 昌都县| 武功县| 石景山区|