spark在windows下的安裝


 
Windows下最簡的開發環境搭建
這里的spark開發環境, 不是為apache spark開源項目貢獻代碼, 而是指基於spark的大數據項目開發.

Spark提供了2個交互式shell, 一個是pyspark(基於python), 一個是spark_shell(基於scala). 這兩個環境其實是並列的, 並沒有相互依賴關系, 所以如果僅僅是使用pyspark交互環境, 而不使用spark-shell的話, 甚至連scala都不需要安裝.

====================
pyspark運行環境配置:
====================
有空要完整將這篇文章翻譯 https://districtdatalabs.silvrback.com/getting-started-with-spark-in-python

1. 安裝python2.7,  Windows下官方推薦使用 anaconda 版本的 Python 2.7, 已經包含了很多科學計算包,https://store.continuum.io/cshop/anaconda/,  將python加到path環境變量中

2. 安裝jdk. pyspark運行環境其實不依賴scala, 但jdk是必需的.  安裝jdk1.7,   將java加到path環境變量中, 並設置JAVA_HOME環境變量.

3. 從apache spark網站下載spark-1.1.0-bin-hadoop2.4.tgz預編譯包, 並解壓.
   選擇預編譯包, 免去了從源碼直接編譯的麻煩.   
  
4. 修正spark-class2.cmd 腳本
           
     在啟動spark shell, 碰到了個錯誤:
     Failed to initialize compiler: object scala.runtime in compiler mirror not found.

     根據谷老師的提示, 修改了spark-class2.cmd文件, 具體在第91行設置 JAVA_OPTS 變量時, 再額外加一個選項 -Dscala.usejavacp=true , 即能解決這個問題.
               
      另外, 在使用Spark Sql, 按照example查詢people.txt, 碰到了 StackOverflowError 問題,
        經查詢 http://f.dataguru.cn/thread-351552-1-1.html, 需要修改JVM的 thread stack size. 同樣還是91行, 增加 -Xss10m  選項即可.

          
        最終91行為:
        set JAVA_OPTS=-XX:MaxPermSize=128m %OUR_JAVA_OPTS% -Xms%OUR_JAVA_MEM% -Xmx%OUR_JAVA_MEM%  -Dscala.usejavacp=true -Xss10m    
        
5. 補配hadoop環境變量 HADOOP_HOME

   啟動pyspark shell后, 運行一個簡單 parallelize+collect 就會報錯, 具體錯誤是, Could not locate executable null\bin\winutils.exe in the Hadoop binaries.  
   顯然, spark這是要知道winutils.exe的全路徑,  所以第一要安裝winutils.exe, 第二要讓spark知道安裝到哪里了.  谷歌得到的信息是winutils.exe 是Hadoop windows 下的一個binary.
   我理解原因是, Spark driver程序的機器不必安裝的Hadoop, 但仍然需要配置一下Hadoop運行環境, 這包括 HADOOP_HOME 環境變量, 以及 winutils.exe 程序.  
    64 bit 編譯包下載地址,  https://github.com/srccodes/hadoop-common-2.2.0-bin/archive/master.zip
    32 bit 版本下載: http://yunpan.cn/csHEXGEaqVrLT 訪問密碼 8199 ,詳見作者博客<<Hadoop:Windows 7 32 Bit 編譯與運行>> http://www.cnblogs.com/smartbooks/p/3694760.html   
       
   下載解壓后, 命令行中運行一下 winutils.exe, 看看是否和你的windows兼容. 如果兼容的話, 設置HADOOP_HOME為 C:\Program\hadoop-common-2.2.0-bin-master
   參考文章: http://www.srccodes.com/p/article/39/error-util-shell-failed-locate-winutils-binary-hadoop-binary-path
   
6. 補配spark環境變量 SPARK_HOME, 同上
 這步對於交互式環境並不是必須的, 但對於scala/python語言編程是必須的
 
7. 執行pyspark 驗證是否可以工作
    在shell中, 輸入 sc.parallelize(range(1000)).count()  ,得到了正確的值
    


scala版本環境搭建,
安裝 scala-2.11.4.msi, 並將scala的bin目錄放到OS 的PATH 環境變量, 其它步驟參考上面.  
 
監控spark的作業
http://localhost:4040/stages/

為 pyspark  shell 增加代碼補全功能之方法1 ---- 使用DreamPie
bin/pyspark 是一個交互性的shell, 但是沒有代碼提示功能.  我比較喜歡DreamPie, 將下面代碼存為c:/pyspark_shell.py, 然后在DreamPie執行execfile(r'c:\pyspark_shell.py'), 即能得到一個帶代碼提示環境.

 

# -*- coding:utf- 8 -*- 
# file: c:\pyspark_shell.py
# 使用, 在dreampie輸入, 即得到了pyspark交互shell: execfile( ' c:\pyspark_shell.py ')
__author__  =  " Hari Sekhon "
__version__ =  " 0.1 "

# https: // github.com/harisekhon/toolbox/blob/master/.ipython-notebook-pyspark.00-pyspark-setup.py
import glob
import os
import sys
 
spark_home=r ' c:\program1\spark-1.1.1-bin-hadoop2.4 ' 
hadoop_home=r ' c:\program1\hadoop-common-2.2.0-bin-master '
python_bin=r ' c:\pythonenv\Python27 '

# 這步是將pyspark和py4j 加到 PYTHONPATH. 我測試了直接Windows的PYTHONPATH加下面的路徑, 並不管用
sys.path.insert( 0, os.path.join(spark_home,  ' python ')) # add pyspark
sys.path.insert( 0, os.path.join(spark_home, r ' python\build '))  # add py4j

# 這步是設置了 SPARK_HOME 和 HADOOP_HOME 
# 我測試了即使是在Windows設置了環境變量, 也不管用  
# 所以在程序中, 設置了 SPARK_HOME 和 HADOOP_HOME 
os.environ[ ' SPARK_HOME ']=spark_home
os.environ[ ' HADOOP_HOME ']=hadoop_home

#在worker機器上, 需要將python放到操作系統的Path環境變量中, 我手工設置了PATH環境變量,
#但在代碼中卻讀PATH環境變量, 卻發現沒有python路徑,
#無奈我在pyspark_shell.py 代碼中將python加到path環境變量.
os.environ[ ' PATH ']=os.environ[ ' PATH ']+ ' ; '+python_bin

#執行D:\program\spark- 1.1. 1-bin-hadoop2. 4\python\pyspark\shell.py
execfile(os.path.join(spark_home,r ' python\pyspark\shell.py '))

 

為 pyspark  shell 增加代碼補全功能之方法2 ---- 使用ipython qtconsole

這個方法比方法1簡單一些, 使用ipython 的自動補全功能.

 

rem ========================================
rem Launch pyspark in ipython qtconsole
rem ========================================

setlocal

set ANACONDA_PY_HOME=D:\pythonenv\python277
SET SPARK_HOME=D:\program\spark-1.5.2-bin-hadoop2.6

set PYSPARK_PYTHON=%ANACONDA_PY_HOME%\python.exe
set PYSPARK_DRIVER_PYTHON=%ANACONDA_PY_HOME%\Scripts\ipython.exe
set PYSPARK_DRIVER_PYTHON_OPTS=qtconsole

%SPARK_HOME%\bin\pyspark.cmd

endlocal

 

 

 

Spark 1.5 在我的Windows下運行(機器只有3GB內存), 報如下錯誤,
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
顯然是內存不足, 最終的解決方法是: 在OS系統環境變量中, 加上 _JAVA_OPTIONS, 取值為 -Xms300m -Xmx700m -XX:PermSize=64m -XX:MaxPermSize=256m -Dscala.usejavacp=true -Xss10m          
我試着在spark-class2.cmd 和 spark-env.cmd 中設置_JAVA_OPTIONS變量, 但沒有成功.
小內存設置:
_JAVA_OPTIONS: -Xms300m -Xmx700m -XX:PermSize=64m -XX:MaxPermSize=256m -Dscala.usejavacp=true -Xss10m    
大內存設置:
_JAVA_OPTIONS: -Xms800m -Xmx1500m -XX:PermSize=64m -XX:MaxPermSize=256m


免責聲明!

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



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