基于原来部署过Hadoop 2.7.1的5台虚拟机(ubuntuServer1~ubuntuServer5)来进行Spark的Standalone部署。
1、下载Spark。
下载的是不含Hadoop的版本:spark-1.6.0-bin-without-hadoop
2、将spark安装到各机器上的/usr/lib目录下。
安装后路径为: /usr/lib/spark-1.6.0-without-hadoop
3、在各机器上创建spark用户,用户组设置为hadoop。
sudo useradd spark -g hadoop -m
4、设置spark用户的ssh免登录
达到从server1到其它机器的ssh免登录。
在server1的spark用户下执行:
ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa
将生成的证书内容放到authorized_keys文件中:
cat .ssh/id_dsa.pub >> .ssh/authorized_keys
然后将authorized_keys用scp的方式拷贝到各机器spark用户的.ssh目录下
验证一下从server1的spark用户下,ssh到其它机器上,是否是免登录。
5、在各机器上的spark的conf目录下,创建spark-env.sh,内容如下:
JAVA_HOME=/usr/lib/jdk1.8.0_66
SPARK_HOME=/usr/lib/spark-1.6.0-without-hadoop
SPARK_DIST_CLASSPATH=`/usr/lib/hadoop-2.7.1/bin/hadoop classpath`
SPARK_MASTER_IP=ubuntuServer1
SPARK_WORKER_DIR=/home/spark
SPARK_LOG_DIR=/home/spark/logs
SPARK_PID_DIR=/home/spark/pid
(以前将Hadoop 2.7.1安装在/usr/lib/hadoop-2.7.1下了。)
6、conf目录下编辑slaves文件,内容:
ubuntuServer2
ubuntuServer3
ubuntuServer4
ubuntuServer5
7、在server1上切换到spark用户,启动spark:
/usr/lib/spark-1.6.0-without-hadoop/sbin/start-all.sh
8、web查看
http://ubuntuServer1:8080:可以看到有4个worker;
http://ubuntuServer2:8081:查看该worker上的内容
9、连接spark
在Windows机器上执行:
spark-shell –master spark://ubuntuServer1:7077
scala> val textFile = sc.textFile(“hdfs://ubuntuServer1:9000/user/hdfs/input/hadoop-env.sh”)
scala> textFile.count()
这儿使用window的本地文件或虚拟机上的本地文件都不行。想运行spark-shell时指定–deploy-mode为cluster,也没有运行起来,提示spark shell不支持cluster。可明明在spark-shell –help的提示信息中有这个选项。
最后使用hadoop上的文件 ,可以正常执行了。
从http://ubuntuServer1:8080可以看到已经有过的应用。