Spark-1.0.0 standalone分布式安裝教程


  Spark目前支持多種分布式部署方式:一、Standalone Deploy Mode;二Amazon EC2、;三、Apache Mesos;四、Hadoop YARN。第一種方式是單獨部署,不需要有依賴的資源管理器,其它三種都需要將spark部署到對應的資源管理器上。

  除了部署的多種方式之外,較新版本的Spark支持多種hadoop平台,比如從0.8.1版本開始分別支持Hadoop 1 (HDP1, CDH3)、CDH4、Hadoop 2 (HDP2, CDH5)。目前Cloudera公司的CDH5在用CM安裝時,可直接選擇Spark服務進行安裝。

  目前Spark最新版本是1.0.0。

  我們就以1.0.0版本,來看看如何實現Spark分布式集群的安裝:

一、Spark 1.0.0需要JDK1.6或更高版本,我們這里采用jdk 1.6.0_31;

二、Spark 1.0.0需要Scala 2.10或更高版本,我們這里采用scala 2.10.3;

三、https://spark.apache.org/downloads.html 下載合適的bin包來安裝,我們這里選擇CDH4版本的spark-1.0.0-bin-cdh4.tgz;下載到tongjihadoop165上;

四、解壓bin包:tar –zxf spark-1.0.0-bin-cdh4.tgz;

五、重命名:mv spark-1.0.0-bin-cdh4 spark-1.0.0-cdh4;

六、cd spark-1.0.0-cdh4 ;

  mv ./conf/spark-env.sh.template ./conf/spark-env.sh

七、vi ./conf/spark-env.sh 添加以下內容:

  export SCALA_HOME=/usr/lib/scala-2.10.3

  export JAVA_HOME=/usr/java/jdk1.6.0_31

  export SPARK_MASTER_IP=10.32.21.165

  export SPARK_WORKER_INSTANCES=3

  export SPARK_MASTER_PORT=8070

  export SPARK_MASTER_WEBUI_PORT=8090

  export SPARK_WORKER_PORT=8092

  export SPARK_WORKER_MEMORY=5000m

 

  SPARK_MASTER_IP這個指的是master的IP地址;SPARK_MASTER_PORT這個是master端口;SPARK_MASTER_WEBUI_PORT這個是查看集群運行情況的WEB UI的端口號;SPARK_WORKER_PORT這是各個worker的端口    號;SPARK_WORKER_MEMORY這個配置每個worker的運行內存。

八、vi ./conf/ slaves  每行一個worker的主機名,內容如下:

      10.32.21.165

  10.32.21.166

  10.32.21.167

九、(可選) 設置 SPARK_HOME 環境變量,並將 SPARK_HOME/bin 加入 PATH:

       vi /etc/profile ,添加內容如下:

       export SPARK_HOME=/usr/lib/spark-1.0.0-cdh4

export PATH=$SPARK_HOME/bin:$PATH

十、將tongjihadoop165上的spark復制到tongjihadoop166和tongjihadoop167上:

  sudo scp -r hadoop@10.32.21.165:/usr/lib/spark-1.0.0-cdh4  /usr/lib

  安裝scala時也可以這樣遠程拷貝文件並修改環境變量文件/etc/profile,改完之后別忘了source。

十一、執行   ./sbin/start-all.sh    啟動spark集群;

  如果start-all方式無法正常啟動相關的進程,可以在$SPARK_HOME/logs目錄下查看相關的錯誤信息。其實,你還可以像Hadoop一樣單獨啟動相關的進程,在master節點上運行下面的命令:

  在Master上執行:./sbin/start-master.sh

  在Worker上執行:./sbin/start-slave.sh 3 spark://10.32.21.165:8070 --webui-port 8090

十二、檢查進程是否啟動,執行jps命令,可以看到Worker進程或者Master進程。然后可以在WEB UI上查看http://tongjihadoop165:8090/可以看到所有的work 節點,以及他們的 CPU 個數和內存等信息。

十三、Local模式運行demo

  比如:./bin/run-example SparkLR 2 local   或者  ./bin/run-example SparkPi 2 local

  這兩個例子前者是計算線性回歸,迭代計算;后者是計算圓周率

十四、啟動交互式模式:./bin/spark-shell --master spark://10.32.21.165:8070 , 如果在conf/spark-env.sh中配置了MASTER(加上一句export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}),就可以直接用  ./bin/spark-shell啟動了。

  spark-shell作為應用程序,是將提交作業給spark集群,然后spark集群分配到具體的worker來處理,worker在處理作業的時候會讀取本地文件。

  這個shell是修改了的scala shell,打開一個這樣的shell會在WEB UI中可以看到一個正在運行的Application,如下圖:

  最下面的是運行完成的Applications,workers列表是集群的節點列表。

  我們可以在這個打開的shell下對HDFS上的數據做一些計算,在shell中依次輸入:

  A、val file = sc.textFile("hdfs://10.32.21.165:8020/1639.sta")  #這是加載HDFS中的文件

  B、file.map(_.size).reduce(_+_)         #這是計算文件中的字符個數    

  運行情況,如下圖:

 

       最終結果可以看出有346658513個字符。速度非常快用時不到3s。

  或者B階段執行val count = file.flatMap(line => line.split("\t")).map(word => (word, 1)).reduceByKey(_+_) 和count.saveAsTextFile("hdfs://10.32.21.165:8020/spark") 將計算結果存儲到HDFS上的/spark目錄下。

  也可以執行./bin/spark-shell --master local[2] ,啟動一個本地shell ,[2]可以指定線程數,默認是1。

  執行exit可以退出shell。

十五、執行   ./sbin/stop-all.sh   停止spark集群

       也可以通過單獨的進程的stop腳本終止

 

 

注意:三台機器spark所在目錄必須一致,因為master會登陸到worker上執行命令,master認為workerspark路徑與自己一樣。

 

參考:

1、  http://www.linuxidc.com/Linux/2014-06/103210p2.htm

2、  http://spark.apache.org/docs/latest/

3、  http://blog.csdn.net/myrainblues/article/details/22084445


免責聲明!

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



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