在安裝後hadoop以後,接下來須要安裝的就是Spark。html
具體步驟參見上一篇博文java
爲了方便,我直接是進入到了/usr/local文件夾下面進行下載spark-2.2.0
node
wget https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0-bin-hadoop2.7.tgz
文件的解壓與更名shell
tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz
rm -rf spark-2.2.0-bin-hadoop2.7.tgz
爲了我後面方便配置spark
,在這裏我把文件夾的名字給改了緩存
mv spark-2.2.0-bin-hadoop2.7 spark-2.2.0
vi /etc/profile
在最尾巴加入網絡
export SPARK_HOME=/usr/local/spark-2.2.0 export PATH=$PATH:$SPARK_HOME/bin
打開spark-2.2.0
文件夾ssh
cd spark-2.2.0
此處須要配置的文件爲兩個
spark-env.sh
和slaves
oop
首先咱們把緩存的文件spark-env.sh.template
改成spark
識別的文件spark-env.sh
源碼分析
cp conf/spark-env.sh.template conf /spark-env.sh
spark-env.sh
文件vi conf/spark-env.sh
在最尾巴加入spa
export JAVA_HOME=/usr/java/jdk1.8.0_141 export SCALA_HOME=/usr/scala-2.11.7 export HADOOP_HOME=/usr/local/hadoop-2.7.2 export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.2/etc/hadoop export SPARK_MASTER_IP=SparkMaster export SPARK_WORKER_MEMORY=4g export SPARK_WORKER_CORES=2 export SPARK_WORKER_INSTANCES=1
變量說明
slaves
文件vi conf/slaves
在最後面修成爲
SparkWorker1 SparkWorker2
SparkWorker1
和SparkWorker2
的配置在此咱們使用rsync
命令
rsync -av /usr/local/spark-2.2.0/ SparkWorker1:/usr/local/spark-2.2.0/
rsync -av /usr/local/spark-2.2.0/ SparkWorker2:/usr/local/spark-2.2.0/
Spark
集羣由於咱們只須要使用
hadoop
的HDFS
文件系統,因此咱們並不用把hadoop
所有功能都啓動。
hadoop
的HDFS
文件系統start-dfs.sh
可是在此會遇到一個狀況,就是使用
start-dfs.sh
,啓動以後,在SparkMaster
已經啓動了namenode
,但在SparkWorker1
和SparkWorker2
都沒有啓動了datanode
,這裏的緣由是:datanode
的clusterID
和namenode
的clusterID
不匹配。是由於SparkMaster
屢次使用了hadoop namenode -format
格式化了。
==解決的辦法:==
在SparkMaster
使用
cat /usr/local/hadoop-2.7.2/hdfs/name/current/VERSION
查看clusterID
,並將其複製。
在SparkWorker1
和SparkWorker2
上使用
vi /usr/local/hadoop-2.7.2/hdfs/name/current/VERSION
將裏面的clusterID
,更改爲爲SparkMaster
VERSION裏面的clusterID
作了以上兩步以後,即可從新使用start-dfs.sh
開啓HDFS文件系統。
啓動以後使用jps
命令能夠查看到SparkMaster
已經啓動了namenode
,SparkWorker1
和SparkWorker2
都啓動了datanode
,說明hadoop
的HDFS
文件系統已經啓動了。
Spark
由於
hadoop/sbin
以及spark/sbin
均配置到了系統的環境中,它們同一個文件夾下存在一樣的start-all.sh
文件。最好是打開spark-2.2.0
,在文件夾下面打開該文件。
./sbin/start-all.sh
成功打開以後使用jps
在SparkMaster
、parkWorker1
和SparkWorker2
節點上分別能夠看到新開啓的Master
和Worker
進程。
成功打開Spark
集羣以後能夠進入Spark
的WebUI
界面,能夠經過
SparkMaster_IP:8080
訪問,可見有兩個正在運行的Worker節點。
Spark-shell
使用
spark-shell
即可打開Spark
的shell
同時,由於shell
在運行,咱們也能夠經過
SparkMaster_IP:4040
訪問WebUI
查看當前執行的任務。
到此咱們的Spark集羣就搭建完畢了。搭建spark集羣原來知識網絡是挺龐大的,涉及到Linux基本操做,設計到ssh,設計到hadoop、Scala以及真正的Spark。在此也遇到很多問題,經過翻閱書籍以及查看別人的blog獲得瞭解決。在此感謝分享知識的人。
參見 王家林/王雁軍/王家虎的《Spark 核心源碼分析與開發實戰》
文章出自kwongtai'blog,轉載請標明出處!