前言
因為之前研究的方向是分布式系統,重點放在了Hadoop分布式文件系統上。現如今,社會對機器學習的需求勢如破竹。為了調整研究方向,而且不拋棄原本的研究成果,研究反向便從分布式系統轉為分布式機器學習算法(剛起步,可能這種說法會不太正確)。Spark MLlib是Apache Spark的可擴展的機器學習庫,並提供有Scala,Java,Python的API。Mahout 是 Apache旗下的一個開源項目,提供了一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序。Mahout包含許多實現,包括聚類、分類、推薦過濾、頻繁子項挖掘。此外,通過使用 Apache Hadoop 庫,Mahout 可以有效地擴展到雲中。因此,從今往后重點將會放在Spark Mlib和Mahout上。本文着重描述Spark環境的搭建以及環境測試。
1 基本環境搭建
1.1 環境變量配置
使用vim編輯環境變量文件:/etc/profile:
1 #install vim 2 sudo apt-get install vim 3 #edit env. profile 4 sudo vim /etc/profile
在/etc/profile文件末尾添加如下內容(為了方便以后更深入學習機器學習,以下配置文件包含protobuf,Mahout等配置。注意:各軟件的安裝位置需要按需修改):
1 #Java env. 2 export JAVA_HOME=/your_Java_home 3 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 4 export PATH=$JAVA_HOME/bin:/usr/local/protobuf/bin:$PATH 5 6 #Scala env. 7 export SCALA_HOME=/your_Scala_home 8 export PATH=$SCALA_HOME/bin:$PATH 9 10 #Spark env. 11 export SPARK_HOME=/your_Spark_home 12 export PATH=$SPARK_HOME/bin:$PATH 13 14 #Python env. 15 export PYTHONPATH=/your_python_home 16 17 #Hadoop env. 18 export HADOOP_HOME=/your_hadoop_home 19 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop 20 export PATH=$PATH:$HADOOP_HOME/bin 21 export HADOOP_HOME_WARN_SUPPRESS=not_null 22 23 #Mahout env. 24 export MAHOUT_HOME=/your_Mahout_home 25 export MAHOUT_CONF_DIR=$MAHOUT_HOME/conf 26 export PATH=$MAHOUT_HOME/conf:$MAHOUT_HOME/bin:$PATH
由於進行Spark基本環境測試時,使用了Hadoop文件操作功能(上傳),另需部署Hadoop偽分布式環境。本文着重描述Spark環境搭建,因此不再贅述Hadoop環境搭建。
2 基本環境測試及結果
2.1 啟動Hadoop
首先,進入Hadoop根目錄,如圖紅框所示。
其次,使用如下命令啟動Hadoop。(備注:注釋行命令也可啟動Hadoop,不過此方法已經被取代了。)
最后,通過jps查看Hadoop各個組件是否正確啟動。若出現異常,請查閱相關官方文檔。
1 #./sbin/start-all.sh 2 ./sbin/start-dfs.sh
2.2 啟動Spark
由於環境變量配置好了,因此直接使用pyspark啟動python shell模式的spark。(官方文檔中提供有Scala模式的spark啟動模式)
至此,命令行環境搭建已經完畢。可使用官方文檔提供的案例進行測試。注意:需要提前上傳測試文件到HDFS。可查閱相關的Hadoop Shell命令。
3 IDE環境搭建
3.1 Edit Configurations
紅框是需要注意的地方。
重點一:需要新建一個空python文件才能進行配置。
重點二:Environment variables中的PYTHONPATH是配置Spark根目錄下的python。
3.2 Project Settings
為了確保測試代碼的庫都完整導入,需要進行Project的Settings修改。
File->Settings->Project Structure->如圖所示,將spark路徑下的py4j和pyspark庫添加到Add Conetent Root中。(若此步驟之后仍有報錯,可能需要先使用pip install py4j。)
4 IDE環境測試及結果
4.1 Word Count測試
重點一:sc位於pyspark.shell中。
重點二:若textFile指定HDFS上的文件,需要事先上傳測試文件。(官方文檔中寫明,可以使用本地文件)
重點三:saveAsTextFile將結果存儲到HDFS上時,不能多次存到同一個文件夾。(注意:這個名字是文件夾,結果會有三個文件,或者更多個文件?)
重點四:Process finished with exit code 0。此時才表示成功執行測試案例。
4.2 查看測試結果集
使用Hadoop Shell命令查看wc_output_02文件夾下,存在三個文件。可進一步使用cat命令查看結果。
總結
整個環境搭建過程中,未遇到特大的問題。官方文檔中提供的Examples可以在命令行中直接使用,但在pycharm上則需要添加部分語句,不過算是比較容易解決的小問題。