Spark編譯及spark開發環境搭建


最近需要將生產環境的spark1.3版本升級到spark1.6(盡管spark2.0已經發布一段時間了,穩定可靠起見,還是選擇了spark1.6),同時需要基於spark開發一些中間件,因此需要搭建一套windows下的spark的開發環境,方便代碼的編寫和調試。中間遇到了比較多的問題,在此也做一個記錄/總結。

Spark編譯

編譯條件:

  • 官方給出的spark預編譯版本是不支持spark on hive的,同時也不能將spark作為hive的執行引擎。如果需要獲得這些支持,則需要自己對spark進行編譯之后再安裝使用。編譯spark前,確保系統已經正確安裝maven且maven版本最好在3.3.9或更高的版本。
  • 設定maven編譯內存參數,避免outofmemory錯誤。set MAVEN_OPTS= -Xms2048m -Xmx2048m -XX:MaxPermSize=1024m 
  • windows/linux環境都可以編譯。

編譯步驟:

  • 進入spark官方網址,選定spark版本后,在選定源碼包,開始下載。
  • 解壓后進入對應目錄,執行下列命令開始編譯
windows下執行:
mvn --tgz -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0 -Phive -Phive-thriftserver -DskipTests clean package
linux下除了可執行上面的命令外,還可以執行:
./make-distribution.sh --tgz --name 2.6.0 -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0 -Phive -Phive-thriftserver -Pspark-ganglia-lgpl -Pkinesis-asl
其中 -Phadoop-2.6 -Dhadoop.version=2.6.0  指定安裝spark時hadoop版本,一定要對應。 -Phive -Phive-thriftserver讓其支持Hive。 -DskipTests能避免測試不通過時發生的錯誤。

Spark安裝:

安裝前,確保Hadoop集群、Mysql、hive已經安裝且能正常使用。

解壓安裝,按照網上通用的方法安裝后,還需要:
  • 將hive/conf/hive-site.xml、hadoop/conf/core-site.xml、hdfs-site.xml拷入spark/conf目錄下。
  • 如果hive元數據庫配置的為mysql數據庫,需要將mysql-driver(mysql-connector-java-5.1.38-bin.jar)拷貝至spark安裝目錄的lib目錄下。
驗證安裝:
進入spark安裝目錄的bin目錄下,進入spark-shell交互式環境:
./spark-shell --driver-class-path /home/hadoop/spark-1.6.0-bin-hadoop2.6/lib/mysql-connector-java-5.1.38-bin.jar 
假設hive中存在testDb數據庫且存在表testDb.test,執行下列命令,spark將連接Hive的元數據庫並查詢對於的數據:
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc);
hiveContext.sql("use testDb");
hiveContext.sql("show tables").collect().foreach(println);
hiveContext.sql("select * from testDb.test limit 10").collect().foreach(println);

沒報錯且輸出數據正常,則說明spark的編譯、安裝正確。


Windows下Spark開發環境的搭建:

通常在推薦系統、報表系統等項目中,還是需要基於spark做一些迭代計算,搭建一個可用的spark開發環境對開發、代碼調試還是非常有用的。
下面簡要記錄寫該過程中的關鍵步驟:

  1. 下載winutils及hadoop.dll,其中-Dhadoop.home.dir指向winutils所在目錄,hadoop.dll放入系統盤下。
  2. IDE增加以下運行參數:-Dhadoop.home.dir="D:\\hadoop" -Xms128m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m
  3. 將hive/conf/hive-site.xml、hadoop/conf/core-site.xml、hdfs-site.xml拷入項目resources目錄下。
  4. 如果是spark1.6及以上版本版本需將Jackson 版本改為 2.4.4,否則報錯:NoSuchMethodError: com.fasterxml.jackson.module.scala.deser.BigDecimalDeserializer
這樣子差不多就可以正常使用spark做開發了。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM