Spark 集羣安裝

3Spark集羣安裝

3.1安裝

3.1.1機器部署

準備兩臺以上Linux服務器,安裝好JDK1.7

3.1.2下載Spark安裝包

 

 

http://www.apache.org/dyn/closer.lua/spark/spark-1.5.2/spark-1.5.2-bin-hadoop2.6.tgz

上傳解壓安裝包

上傳spark-1.5.2-bin-hadoop2.6.tgz安裝包到Linux

解壓安裝包到指定位置

tar -zxvf spark-1.5.2-bin-hadoop2.6.tgz -C /usr/local

3.1.3配置Spark

進入到Spark安裝目錄

cd /usr/local/spark-1.5.2-bin-hadoop2.6

進入conf目錄並重命名並修改spark-env.sh.template文件

cd conf/

mv spark-env.sh.template spark-env.sh

vi spark-env.sh

在該配置文件中添加如下配置

export JAVA_HOME=/usr/java/jdk1.7.0_45

export SPARK_MASTER_IP=node1.itcast.cn

export SPARK_MASTER_PORT=7077

保存退出

重命名並修改slaves.template文件

mv slaves.template slaves

vi slaves

在該文件中添加子節點所在的位置(Worker節點)

node2.itcast.cn

node3.itcast.cn

node4.itcast.cn

保存退出

將配置好的Spark拷貝到其他節點上

scp -r spark-1.5.2-bin-hadoop2.6/ node2.itcast.cn:/usr/local/

scp -r spark-1.5.2-bin-hadoop2.6/ node3.itcast.cn:/usr/local/

scp -r spark-1.5.2-bin-hadoop2.6/ node4.itcast.cn:/usr/local/

 

Spark集羣配置完畢,目前是1Master3Work,在node1.itcast.cn上啓動Spark集羣

/usr/local/spark-1.5.2-bin-hadoop2.6/sbin/start-all.sh

 

啓動後執行jps命令,主節點上有Master進程,其他子節點上有Work進行,登錄Spark管理界面查看集羣狀態(主節點):http://node1.itcast.cn:8080/

 

到此爲止,Spark集羣安裝完畢,但是有一個很大的問題,那就是Master節點存在單點故障,要解決此問題,就要藉助zookeeper,並且啓動至少兩個Master節點來實現高可靠,配置方式比較簡單:

Spark集羣規劃:node1node2Masternode3node4node5Worker

安裝配置zk集羣,並啓動zk集羣

停止spark所有服務,修改配置文件spark-env.sh,在該配置文件中刪掉SPARK_MASTER_IP並添加如下配置

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk1,zk2,zk3 -Dspark.deploy.zookeeper.dir=/spark"

1.node1節點上修改slaves配置文件內容指定worker節點

2.node1上執行sbin/start-all.sh腳本,然後在node2上執行sbin/start-master.sh啓動第二個Master

4、執行Spark程序

4.1、執行第一個spark程序

/usr/local/spark-1.5.2-bin-hadoop2.6/bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://node1.itcast.cn:7077 \

--executor-memory 1G \

--total-executor-cores 2 \

/usr/local/spark-1.5.2-bin-hadoop2.6/lib/spark-examples-1.5.2-hadoop2.6.0.jar \

100

該算法是利用蒙特·卡羅算法求PI

4.2、啓動Spark Shell

spark-shellSpark自帶的交互式Shell程序,方便用戶進行交互式編程,用戶可以在該命令行下用scala編寫spark程序。

4.2.1、啓動spark shell

/usr/local/spark-1.5.2-bin-hadoop2.6/bin/spark-shell \

--master spark://node1.itcast.cn:7077 \

--executor-memory 2g \

--total-executor-cores 2

 

參數說明:

--master spark://node1.itcast.cn:7077 指定Master的地址

--executor-memory 2g 指定每個worker可用內存爲2G

--total-executor-cores 2 指定整個集羣使用的cup核數爲2

 

注意:

如果啓動spark shell時沒有指定master地址,但是也可以正常啓動spark shell和執行spark shell中的程序,其實是啓動了sparklocal模式,該模式僅在本機啓動一個進程,沒有與集羣建立聯繫。

 

Spark Shell中已經默認將SparkContext類初始化爲對象sc。用戶代碼如果需要用到,則直接應用sc即可

4.2.2、在spark shell中編寫WordCount程序

1.首先啓動hdfs

2.hdfs上傳一個文件到hdfs://node1.itcast.cn:9000/words.txt

3.spark shell中用scala語言編寫spark程序

sc.textFile("hdfs://node1.itcast.cn:9000/words.txt").flatMap(_.split(" "))

.map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://node1.itcast.cn:9000/out")

 

4.使用hdfs命令查看結果

hdfs dfs -ls hdfs://node1.itcast.cn:9000/out/p*

 

說明:

scSparkContext對象,該對象時提交spark程序的入口

textFile(hdfs://node1.itcast.cn:9000/words.txt)hdfs中讀取數據

flatMap(_.split(" "))map在壓平

map((_,1))將單詞和1構成元組

reduceByKey(_+_)按照key進行reduce,並將value累加

saveAsTextFile("hdfs://node1.itcast.cn:9000/out")將結果寫入到hdfs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章