搭建虛擬機Spark環境

一、安裝虛擬機及Ubuntu

虛擬機選擇VirtualBox,操作系統選擇Ubuntu的server版。

這兩個軟件都是免費的,可以在官網上用迅雷下載得到。

1 安裝虛擬機

這個過程比較簡單。直接雙擊以及下一步就搞定了。

最后記得在加載Ubuntu的iso之前設置下網絡模式。在網卡2上記得配置Host-Only模式,這樣可以讓Windows通過SSH以及Samba去訪問虛擬機。

另外還可以通過Ctrl+G來配置全局的網絡環境。一般來說可以不用這么做。

2 安裝Ubuntu

在virtualBox中加載ubuntu的iso后就可以啟動安裝程序。需要注意的是要選English語言,不然如果選中文簡體會造成后面亂碼的情況。雖然可能在SSH終端中不亂,但是為了省事還是選English吧。

另外在選擇額外軟件的時候記得把SSH和Samba都選上,不過如果錯過了后面用adp-get安裝也可以。

3 配置Ubuntu環境

通過安裝和重啟把Ubuntu裝好后,接下來就是如何通過SSH以及Samba來使用ubuntu了。

3.1 配置eth1

eth0是讓ubuntu通過虛擬機的NAT(網絡地址轉換)來直接訪問外網。

eht1是讓Windows通過Host-Only模式來連接Ubuntu,這樣可以互相ping通并使用SSH以及Samba。

在ubuntu中ifconfig,可以看到eth1可能并沒有啟動起來。那么需要在/etc/network/interfaces中加入eth1的配置:設置為靜態IP,并自動啟動。


paul@spark-PC:~$ cat /etc/network/interfaces

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

iface eth0 inet dhcp

#Virtualbox Host-only mode

auto eth1

iface eth1 inet static

address 192.168.56.101

netmask 255.255.255.0

#network 192.168.56.0


寫好后再重新啟動下網絡:

paul@spark-PC:~$ sudo /etc/init.d/networking restart

此時再ifconfig,就可以看到eth1的網絡信息了。

不過有可能你會很悲劇,發現上面這個命令在執行中顯示stop fail,然后顯然不能再次start,這時候你可以再試試sudo service networking restart,不過八九不離十還是不行。這時候索性來個痛快sudo ifdown -a && sudo ifup -a,這時候會顯示網卡都關閉和打開好了。然后可能會發現依然不能正常和Windows通信。這時候再sudo reboot 吧,重啟后應該就萬事ok了。(再補充下,如果你一開始遇到這個問題,那么可能你需要以后每次打開虛擬機后都要reboot下,不然可能網絡還是不通。)

然后可以在Windows中ping 192.168.56.101以及在ubuntu中ping 192.168.56.1看看互相是否都能ping通。

這時使用MobaXtermPro9建立SSH連接就可以和ubuntu在SSH上交互了。

3.2 配置Samba

配置Samba的用處在于后面可能會使用Windows的IDE。如果純粹只是傳輸文件的話,其實MobaXtermPro已經可以輕松通過可視化sftp搞定了。

如果之前沒有安裝Samba,那么就sudo apt-get insall samba來安裝下。

在自己的home目錄中創建一個用于Samba分享的目錄:

mkdir share/ ? ?//如果配置的共享目錄不存在則創建

sudo chown -R paul.paul share/ ? ?//設置共享目錄歸屬為 你的系統用戶

sudo chmod 777 share/ ? ?//將共享目錄屬性設置為 777

說明:share你可以隨便起個名字做為共享文件夾

為了以防萬一:sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

然后在對/etc/samba/smb.conf修改,在文件最后添加:


[share]

path = /home/paul/share

available = yes

browseable = yes

public = yes

writable = yes

valid users = paul

create mask = 0700

directory mask = 0700

force user = paul

force group = paul


添加完畢后,再把用戶添加進去

sudo?smbpasswd -a paul ?//系統用戶名字

重啟samba服務器

sudo testparm?? 驗證一下配置參數有沒有問題,如果有問題在回去修改

sudo /etc/init.d/samba restart(有可能在init.d下面沒有samba這個服務。那么就換成smbd,或者用下面這兩行命令)

sudo service samba restart

sudo service smbd restart

現在可以在Windows的映射網絡驅動器中添加網盤了。

二、在Ubuntu下安裝Spark

Spark基本不依賴于別的軟件,只需要一個jdk7以及以上的環境就夠了。當然后面用到Python以及Scala的時候還需要安裝這兩個。

1、安裝jdk8

1、首先到Oracle官網上下載最新版的jdk,比如這次是jdk-8u121-linux-i586.tar.gz

2、將jdk-8u121-linux-i586.tar.gz拷貝到/usr/lib/jdk/目錄下面,這里如果沒有jdk文件夾,則創建該文件夾,命令:(可以使用Xmoba的sftp傳輸)

sudo mkdir jdk? //創建文件夾jdk

復制到剛剛創建的目錄后

sudo tar -zxvf jdk-7u51-linux-i586.tar.gz? ? //解壓縮文件

3、設置環境變量,用vim打開/etc/profile文件

sudo vim /etc/profile

在文件的最后面增加:

export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_121

export JRE_HOME=/usr/lib/jdk/jdk1.8.0_121/jre

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

保存并關閉文件

4、將系統默認的jdk修改過來

sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk/jdk1.8.0_121/bin/java 300

sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jdk/jdk1.8.0_121/bin/javac 300

sudo update-alternatives --config java

sudo update-alternatives --config javac

5、檢測Java是否安裝成功,

輸入:

java -version

顯示如下說明成功(具體jdk版本根據自己下載的可能不一樣):

java version "1.8.0_121"

Java(TM) SE Runtime Environment (build 1.8.0_121-b13)

Java HotSpot(TM) Client VM (build 25.121-b13, mixed mode)

2、Spark的quick start

到了這里就開始真的接觸使用spark了。最開始的quick start比較簡單,就是把在官網上下載好的最新版本的預編譯過的包安裝解壓出來就可以了。我自己下載的時候解壓的最新版本是:tar -zxvf spark-2.1.0-bin-hadoop2.7.tgz

然后按照Spark官網的spark.apache.org/docs/latest/quick-start.html說明

進行一些操作,檢查下是否有問題。比如./bin/run-example SparkPi 10 2>/dev/null如果能顯示Pi is roughly 3.141059141059141就說明spark所需的環境都裝好了。

3、 給Python配置pyspark

在單獨使用python,代碼中import pyspark時會遇到問題:不是無法加載pyspark就是py4j的庫找不到。這需要在環境變量中告訴python這些包的路徑。

在~/.bashrc中添加

export SPARK_HOME=/home/paul/tools/spark-2.1.0-bin-hadoop2.7

export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH

這樣Python中就可以任意使用了,而不是必須走spark的submit的bin了。比如don‘’t run your py file as:python filename.pyinstead use:spark-submit filename.py

接下來還要再研究用Java,(use Maven to compile an application JAR)

4、 在Windows中配置maven

為什么要在Windows中使用maven,主要是寄希望于win平臺下編譯產生的jar能夠在ubuntu上提交給spark運行。

首先還是下載maven,我自己配合maven使用的IDE是IntelliJ IDEA。idea直接在官網下載最新版本即可,然后在http://idea.lanyus.com/上獲得注冊碼完成注冊。下載maven也是從官網下載最新版本然后解壓。按照解壓出來的README指示配置下環境變量就ok了。不過我自己還是按照網上的說法自己配的復雜一些的環境變量。

使用系統屬性設置環境變量。

M2_HOME=C:\Program Files\apache-maven-3.5.0

M2=%M2_HOME%\bin

MAVEN_OPTS=-Xms256m -Xmx512m

添加字符串 “;%M2%” 到系統“Path”變量末尾

再運行mvn -version就可以看到mvn的一些基本信息了。

接下來開始在idea中創建maven的spark項目了。(可以在google中搜索spark maven看到很多示例)

首先在idea中選擇新建一個project,然后在project中選擇maven,但是在接下來的界面中不選擇任何archetype,點擊next。然后在GroupID中輸入自己公司的名字,比如com.paulHome.app,artifactId輸入firstSpark-App。版本號寫1.0.繼續next。project name和location隨便填寫,然后finish。

再緊接著顯示出的pom.xml中在version之后仿照spark的quick start添加:

然后在選中src/main/java之后新建一個java類文件出來,比如取名叫firstSparkMain

然后輸入spark的quick start的demo代碼

這里將類名字從SimpleApp改為了firstSparkMain

期間先不要急著在idea中build,因為右下狀態欄中顯示還在下載一些依賴文件。這時候要等一等。如果不想等,那么可以cmd到這個工程目錄下,用命令mvn package,然后你會發現還是需要下載,還是要等。(另外可以添加國內的鏡像加速maven的下載依賴的速度。)

比如加載國內阿里的鏡像:

記得把原文件中間的注釋行刪掉

對于直接用命令mvn來說需要修改下載安裝目錄下的conf目錄中的settings.xml文件。把mirror的配置修改為上面圖片中的信息。對于使用idea來說,可以在file->setting中搜索maven。然后修改user settings file為修改后的xml,或者干脆使用自己下載的maven。不管哪種設置只要是把修改的setting配置上去就可以了。

這些搞定后,就可以通過命令行mvn package或者idea的build來生成jar了。(我這邊由于第一次使用idea所以在scheme和代碼的字體格式上也做了修改。)

使用命令行mvn是在工程目錄下面的target目錄下就生成了firstSpark-app-1.0.jar

使用idea是需要先在file->project structure->Artifacts中“+”來添加一個jar生成方式。然后通過build->build Artifacts..就在out目錄下生成了一個firstSparkApp.jar(不過這個文件非常大有80M,比mvn生成的大不少)

至此這部分工作就大功告成了。接下來就是把jar放到ubuntu上運行了。

(第一次使用maven和idea:感覺maven太偉大了,idea比起eclipse來說也更有意思些)

5、在ubuntu的spark下運行

將生成的jar拷到ubuntu中,然后按照spark的quick start中的描述來運行:

比如./spark-2.1.0-bin-hadoop2.7/bin/spark-submit --class "firstSparkMain" --master local[4] firstSparkApp.jar

或者./spark-2.1.0-bin-hadoop2.7/bin/spark-submit --class "firstSparkMain" --master local[4] firstSpark-app-1.0.jar

第一個是idea生成的80多M的jar,第二個是mvn生成的只有3K多的jar。這兩個都能正常運行,結果為:Lines with a: 62, lines with b: 30 ? ? ?暫時沒有搞明白這兩個jar的差別是啥。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內容