本文展示了在之前搭建的Hadoop分布式集群的基礎上如何搭建Spark分布式集群環境
一、已有環境
ubuntu 14.04
hadoop 2.7.1 集群安裝參考
三臺機器
master、slave1、slave2
二、scala安裝
1.Scala官網下載地址:http://www.scala-lang.org/download/
2.安裝步驟
tar -zxvf scala-2.11.8.tgz
sudo mv scala-2.11.8 /home/cms/
修改/etc/profile
export PATH=$SCALA_HOME/bin
export CLASSPATH=$SCALA_HOME/lib```
立即生效
```source /etc/profile```
3.測試
```scala -version```

####三、安裝spark
1.Spark官方下載鏈接:
http://spark.apache.org/downloads.html
2.解壓安裝
```tar -zxvf spark-2.0.1-bin-hadoop2.7```
```spark-2.0.1-bin-hadoop2.7 /home/cms/```
修改/etc/profile
```export SPARK_HOME=$HOME/scala-2.11.8
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin
export CLASSPATH=$SPARK_HOME/lib```
立即生效
```source /etc/profile```
3.修改權限
```sudo chown -R cms spark-2.0.1-bin-hadoop2.7```
4.配置spark,進入到conf目錄
```cp spark-env.sh.template spark-env.sh```
添加內容
export SCALA_HOME=$HOME/scala-2.11.8
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_HOME=$HOME/hadoop-2.7.1
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=$HOME/spark-2.0.1-bin-hadoop2.7
SPARK_DRIVER_MEMORY=1G
JAVA_HOME 指定 Java 安裝目錄;
SCALA_HOME 指定 Scala 安裝目錄;
SPARK_MASTER_IP 指定 Spark 集群 Master 節點的 IP 地址;
SPARK_WORKER_MEMORY 指定的是 Worker 節點能夠分配給 Executors 的最大內存大小;
HADOOP_CONF_DIR 指定 Hadoop 集群配置文件目錄。
```vim slaves```
在slaves文件下填上slave主機名:
slave1
slave2
####四、配置slave機器
將配置好的spark、scala文件夾分發給所有slaves吧
sudo scp -r spark-2.0.1-bin-hadoop2.7 cms@slave1:/home/cms
sudo scp -r spark-2.0.1-bin-hadoop2.7 cms@slave2:/home/cms
sudo scp -r scala-2.11.8 cms@slave1:/home/cms
sudo scp -rscala-2.11.8 cms@slave2:/home/cms
修改/etc/profile,不再累述
####五、啟動spark
```start-all.sh``` 啟動hadoop集群
```start-master.sh start-slaves.sh```
啟動主節點和從節點
jps


####六、測試
進入Spark的Web管理頁面: http://master:8080

####七、運行實例
1.準備
在HDFS上放置文件1.txt
cat 1.txt
we rj lo
we ko ls
we rt ou
```hadoop fs -put 1.txt /tmp/1.txt```
2.spark-shell運行
是Spark自帶的一個Scala交互Shell,可以以腳本方式進行交互式執行
進入Spark-Shell
只需要執行```spark-shell```即可:
在Spark-Shell中我們可以使用scala的語法進行簡單的測試

上面的操作中創建了一個RDD file,執行了兩個簡單的操作:
count()獲取RDD的行數
first()獲取第一行的內容
操作完成后,Ctrl D組合鍵退出Shell。
3.pyspark
pyspark類似spark-shell,是一個Python的交互Shell。
執行```pyspark```啟動進入pyspark:

操作完成后,Ctrl D組合鍵退出Shell。
3.使用pyspark連接master再次進行上述的文件行數測試,如下圖所示,注意把MASTER參數替換成你實驗環境中的實際參數:

刷新master的web頁面,可以看到新的Running Applications
,如下圖所示:

####八、停止服務
```stop-master.sh stop-slaves.sh```
####九、參考文檔
[Spark On YARN 集群安裝部署](http://wuchong.me/blog/2015/04/04/spark-on-yarn-cluster-deploy/)
[Spark 1.6.1分布式集群環境搭建](https://my.oschina.net/jackieyeah/blog/659741)
[spark集群安裝與配置](http://www.itdadao.com/articles/c15a489218p0.html)