參考博文:
https://www.cnblogs.com/nucdy/p/6776187.html
一、 部署本地spark環境
1.下載並安裝好jdk1.8,配置完環境變量。
2.Spark環境變量配置
- 下載:http://spark.apache.org/downloads.html
我下載的是spark-2.3.0-bin-hadoop2.7.tgz,spark版本是2.3,對應的hadoop版本是2.7.
- 解壓
- 配置系統環境變量:
將F:\spark-2.3.0-bin-hadoop2.7\bin添加到系統Path變量,同時新建SPARK_HOME變量,變量值為:F:\spark-2.3.0-bin-hadoop2.7
3.Hadoop相關包的安裝(參考:https://www.cnblogs.com/wuxun1997/p/6847950.html ;https://blog.csdn.net/kaluoye/article/details/77984882)
spark是基於hadoop之上的,運行過程中會調用相關hadoop庫,如果沒配置相關hadoop運行環境,會提示相關出錯信息,雖然也不影響運行。
我下載的是hadoop-2.7.6.tar.gz.
- 解壓
- 配置系統環境變量:
將相關庫添加到系統Path變量中:F:\hadoop-2.7.6\bin;同時新建HADOOP_HOME變量,變量值為:F:\hadoop-2.7.6。
下載window下適應的包,包含了hadoop.dll和winutils。資源:http://pan.baidu.com/s/1jHVuaxg,下載解壓后全部拷貝到hadoop解壓后對應的bin文件夾。
- 配置hadoop的四個XML文件,我的路徑為F:\hadoop-2.7.6\etc目錄下
core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/hadoop/data/dfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/hadoop/data/dfs/datanode</value> </property> </configuration>
mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>
- 啟動windows命令行窗口,進入hadoop-2.7.6\bin目錄,執行下面2條命令,先格式化namenode再啟動hadoop
F:\hadoop-2.7.6\bin>hadoop namenode -format
此步會報錯:Hadoop Error: JAVA_HOME is incorrectly set.
原因:由於我的jdk安裝在c盤的programe files 目錄下,JAVA_HOME 的值有空格,啟動不了,可以把JAVA_HOME 改成C:\progra~1\XXX
(參考:https://blog.csdn.net/wen3011/article/details/54907731)
- 進入hadoop的sbin目錄,運行start-all.cmd
F:\hadoop-2.7.6\sbin>start-all.cmd
F:\hadoop-2.7.6\sbin>jps 4944 DataNode 5860 NodeManager 3532 Jps 7852 NameNode 7932 ResourceManager
通過jps命令可以看到4個進程都拉起來了,到這里hadoop的安裝啟動已經完事了。
接着我們可以用瀏覽器到localhost:8088看mapreduce任務,到localhost:50070->Utilites->Browse the file system看hdfs文件。
如果重啟hadoop無需再格式化namenode,只要stop-all.cmd再start-all.cmd就可以了。
上面拉起4個進程時會彈出4個窗口:DataNode;NameNode;NodeManager;ResourceManager,可以查看詳細。
二、Python環境
Spark提供了2個交互式shell, 一個是pyspark(基於python), 一個是spark_shell(基於Scala). 這兩個環境其實是並列的, 並沒有相互依賴關系, 所以如果僅僅是使用pyspark交互環境, 而不使用spark-shell的話, 甚至連scala都不需要安裝.
- 啟動pyspark驗證
在windows下命令行中啟動pyspark,如圖:
三、在pycharm中配置開發環境
1.配置Pycharm
打開PyCharm,創建一個Project。然后選擇“Run” ->“Edit Configurations”
選擇 “Environment variables” 增加SPARK_HOME目錄與PYTHONPATH目錄。
-
SPARK_HOME:Spark安裝目錄
-
PYTHONPATH:Spark安裝目錄下的Python目錄
2.測試程序
# -*- coding: utf-8 -*- __author__ = 'kaylee' import os import sys os.environ['SPARK_HOME']="F:\spark-2.3.0-bin-hadoop2.76" sys.path.append("F:\spark-2.3.0-bin-hadoop2.7\python") try: from pyspark import SparkContext from pyspark import SparkConf print('Successfully imported Spark Modules') except ImportError as e: print('Can not import Spark Modules', e) sys.exit(1)
如果程序可以正常輸出: "Successfully imported Spark Modules"就說明環境已經可以正常執行。
注意,有一步很容易漏:
Settings->Project Structure->Add Content Root->F:\spark-2.3.0-bin-hadoop2.7\python\lib\py4j-0.10.6-src.zip
注意:
可能會報沒有 py4j ( 它是python用來連接java的中間件)
可以用命令安裝:pip install py4j