本文展示了在之前搭建的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```
![](http://upload-images.jianshu.io/upload_images/1908836-6a0270619ab4bc77.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####三、安装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
![](http://upload-images.jianshu.io/upload_images/1908836-d29ff61ba6ff236c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1908836-275116824a1fde81.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####六、测试
进入Spark的Web管理页面: http://master:8080
![](http://upload-images.jianshu.io/upload_images/1908836-a26d4232f5383514.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####七、运行实例
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的语法进行简单的测试
![](http://upload-images.jianshu.io/upload_images/1908836-137833880fdce8b8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
上面的操作中创建了一个RDD file,执行了两个简单的操作:
count()获取RDD的行数
first()获取第一行的内容
操作完成后,Ctrl D组合键退出Shell。
3.pyspark
pyspark类似spark-shell,是一个Python的交互Shell。
执行```pyspark```启动进入pyspark:
![](http://upload-images.jianshu.io/upload_images/1908836-19a5c6e96b7504f3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
操作完成后,Ctrl D组合键退出Shell。
3.使用pyspark连接master再次进行上述的文件行数测试,如下图所示,注意把MASTER参数替换成你实验环境中的实际参数:
![](http://upload-images.jianshu.io/upload_images/1908836-16d34fe34b73df01.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
刷新master的web页面,可以看到新的Running Applications
,如下图所示:
![](http://upload-images.jianshu.io/upload_images/1908836-661fd1b4fd234b7c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####八、停止服务
```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)