CentOS7+Hadoop2.7.3 Scala2.12.1安裝

已有的環境配置:CentOS7+Hadoop2.7.3
目標的環境配置:CentOS7+Hadoop2.7.3+Scala2.12.1

安裝過程參考鏈接:廈門大學數據庫實驗室Scala安裝 http://dblab.xmu.edu.cn/blog/929-2/

Step1:安裝Java

由於CentOS自帶java JDK,因此直接檢驗JAVA_HOME以及java version即可。
如果沒有自帶的jdk,需要按以下命令進行安裝。

#Java環境可選擇 Oracle 的 JDK
sudo apt-get install openjdk-7-jre openjdk-7-jdk #建議是JDK1.7或更高版本
#配置路徑
dpkg -L openjdk-7-jdk | grep '/bin/javac'
#配置一下 JAVA_HOME 環境變量
vim ~/.bashrc
export JAVA_HOME=JDK安裝路徑
#使環境變量生效
source ~/.bashrc    # 使變量設置生效

假設java JDK已經成功安裝,接下來則需要檢驗JAVA_HOME以及java version。

#檢驗一下java是否設置正確
echo $JAVA_HOME     # 檢驗變量值
java -version
$JAVA_HOME/bin/java -version  # 與直接執行 java -version 一樣

如果設置正確的話,$JAVA_HOME/bin/java -version 會輸出 java 的版本信息,且和 java -version 的輸出結果一樣。
在這裏插入圖片描述
這樣,Scala所需的 Java 運行環境就安裝好了。

Step2:安裝Scala

訪問Scala官網,下載Scala。需要下載.tgz格式的安裝包。
由於Hadoop的版本是2.7.3,考慮到之後可能還需要結合spark,需要考慮spark的版本問題。因此在大量搜尋資料之後,決定安裝scala2.12.1版本。
在這裏插入圖片描述
在Linux操作系統中安裝Scala的過程如下。

首先要指定Scala的安裝目錄,選擇安裝在“/usr/local/”目錄下,當前用戶登錄名是hadoop。然後,進入scala-2.12.1.tgz文件解壓縮到的“/usr/local/”目錄下,修改文件夾名稱,併爲hadoop用戶賦予權限。

sudo tar -zxf scala-2.11.8.tgz -C /usr/local   # 解壓到/usr/local中
cd /usr/local/
sudo mv ./scala-2.11.8/ ./scala         # 將文件夾名改爲scala
sudo chown -R hadoop ./scala        # 修改文件權限,用hadoop用戶擁有對scala目錄的權限

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
接着需要把scala命令添加到path環境變量中。這裏我們在 ~/.bashrc 中進行設置。可以採用gedit編輯器打開.bashrc文件:

gedit ~/.bashrc

然後,在.bashrc文件的最開頭位置,修改path環境變量設置,把scala命令所在的目錄“/usr/local/scala/bin”增加到path中,具體如下:

export PATH=$PATH:/usr/local/scala/bin

注意,上面的PATH和等號之間,不要加入任何空格,否則會出錯。修改後,保存退出。
在這裏插入圖片描述
接着還需要讓該環境變量生效,執行如下代碼:

source ~/.bashrc    # 使變量設置生效

輸入scala命令檢驗一下scala是否設置正確。

scala

輸入scala命令以後,屏幕上顯示scala和Java版本信息,並進入“scala>”提示符狀態,就可以開始使用Scala解釋器了,你就可以輸入scala語句來調試程序代碼了。
在這裏插入圖片描述

Step3:使用Scala解釋器

按照上述步驟完成安裝以後,如果是Windows系統,可以打開Windows系統的命令提示符界面(也就是運行命令行程序cmd.exe),然後,在界面中輸入“scala”命令,就可以運行Scala解釋器。如果是Linux系統,可以在命令提示符終端中,輸入“scala”命令,就可以運行Scala解釋器。
注意:由於前面的安裝過程中,安裝程序已經自動設置了path變量,所以,這不需要給出scala命令的路徑全稱,實際上,scala命令位於scala安裝目錄的bin目錄下。
運行Scala解釋器以後,就可以測試了,輸入一條語句,解釋器會立即執行語句並返回結果,這就是我們所說的REPL(Read-Eval-Print Loop,交互式解釋器),爲我們提供了交互式執行環境,表達式計算完成就會輸出結果,而不必等到整個程序運行完畢,因此可即時查看中間結果,並對程序進行修改,這樣可以在很大程度上提升開發效率。
在命令提示符界面中輸入“scala”命令後,會進入scala命令行提示符狀態(即“scala>”),可以在後面輸入命令。最後,可以使用命令“:quit”退出Scala解釋器

scala>   #可以在命令提示符後面輸入命令

scala> 8*2+5
res0: Int = 21

scala>:quit

在這裏插入圖片描述
也可以直接使用“Ctrl+D”組合鍵,退出Scala解釋器。

Step4:第一個Scala程序:Hello World

Scala融合了面向對象編程思想,所以,這裏採用一個包含了main()方法的大家比較熟悉的JVM應用程序,這裏以Hello World程序爲例進行說明。
登錄Linux系統,打開命令行終端(可以使用Ctr+Alt+T組合鍵來打開終端)。現在請在Scala安裝目錄/usr/local/scala下面新建一個myScala文件夾,用於存放自己的練習代碼文件(後面我們都會把練習代碼文件放在/usr/local/scala/myScala這個目錄下),創建目錄的命令如下:

cd /usr/local/scala
mkdir myScala

在這裏插入圖片描述
使用下面命令到達myScala目錄,並新建一個test.scala文件。

cd /usr/local/scala/myScala
gedit test.scala

#test.scala的代碼
object HelloWorld {
    def main(args: Array[String]){
        println("Hello, World!")
    }
}

在這裏插入圖片描述
關於上面代碼,需要重點說明兩點:
(1)在上面代碼中,定義了程序的入口main()方法。可以看出,關於main()方法的定義,Java和Scala是不同的,在Java中是用靜態方法(public static void main(String[] args)),而Scala中則必須使用對象方法,本例中,也就是HelloWorld對象中的main()方法。
(2)對象的命名HelloWorld可以不用和文件名稱一致,這裏對象名稱是HelloWorld,而文件名稱卻是test.scala。這點和Java是不同的,按照Java的命名要求,這裏的文件名稱就必須起名爲HelloWorld.scala,但是,在Scala中是沒有這個一致性要求的。
(3)Scala是大小寫敏感的,所以,不要輸入錯誤,比如把小寫開頭的object輸成大寫開頭的Object。文件名Test.scala和test.scala也是兩個不同的文件。

下面我們用scalac命令編譯test.scala代碼文件,並用scala命令執行,如下:

scalac test.scala //編譯的時候使用的是Scala文件名稱
scala -classpath . HelloWorld  //執行的時候使用的是HelloWorld對象名稱

注意,上面命令中一定要加入”-classpath .”,否則會出現“No such file or class on classpath: HelloWorld”。
上述命令執行後,會在屏幕上打印出“Hello, World!”。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章