您的位置:首页 > 其它

Spark1.0.0 on Standalone 模式部署

2014-05-13 15:22 453 查看
1:Spark1.0.0 Standalone Mode安装

A:部署包生成

首先,官网 http://d3kbcqa49mib13.cloudfront.net/spark-1.0.0.tgz 下载源代码,解压后切换到源码目录,运行部署包生成程序make-distribution.sh

$ ./make-distribution.sh --hadoop 2.2.0 --with-yarn --tgz


spark源码根目录下的make-distribution.sh可以带以下参数:

--hadoop VERSION:打包时所用的Hadoop版本号,不加此参数时hadoop版本为1.0.4。
--with-yarn:是否支持Hadoop YARN,不加参数时为不支持yarn。
--with-hive:是否在Spark SQL 中支持hive,不加此参数时为不支持hive。
--skip-java-test:是否在编译的过程中略过java测试,不加此参数时为略过。
--with-tachyon:是否支持内存文件系统Tachyon,不加此参数时不支持tachyon。
--tgz:在根目录下生成 spark-$VERSION-bin.tgz,不加此参数时不生成tgz文件,只生成/dist目录。
--name NAME:和--tgz结合可以生成spark-$VERSION-bin-$NAME.tgz的部署包,不加此参数时NAME为hadoop的版本号。

注意参数的顺序要按上面的顺序来

运行成功后,在根目录下生成名为spark-1.0.0-bin-2.2.0.tgz的部署包,该部署包含有支持hadoop2.2.0的Spark应用程序包和spark例程。笔者在百度云盘pan.baidu.com/s/1dDmqK4h#dir/path=%2Fdeploy上分享了spark1.0.0的部署包、支持tachyon0.41的部署包和支持hive的部署包。

B:规划

虚拟机hadoop1(IP地址为192.168.1.171)作为Master

虚拟机hadoop1(IP地址为192.168.1.171)、hadoop2(IP地址为192.168.1.172)、hadoop3(IP地址为192.168.1.173)作为slave

由于hadoop1、hadoop2、hadoop3之前已经安装了hadoop2.2.0集群,所以省却了安装J***A、建立用户hadoop的SSH无密码登录过程。当然,Spark集群可以独立于hadoop集群外安装,但是需要安装J***A、建立SSH无密码登录。关于J***A安装和建立SSH无密码登录可以参照hadoop2.2.0测试环境搭建。另外,为了避免Spark应用程序要打包scala包(详见Spark1.0.0
多语言编程之Scala实现),在集群的每个节点上安装了scala2.10.4(安装目录/app/scala2104)。

C:在Master上生成安装目录

将生成的spark-1.0.0-bin-2.2.0.tgz文件复制到Master(即hadoop1)上并解压

[root@hadoop1 hadoop]# tar zxf spark-1.0.0-bin-2.2.0.tgz

[root@hadoop1 hadoop]# mv spark-1.0.0 spark100

[root@hadoop1 hadoop]# cd spark100

[root@hadoop1 spark100]# ls -lsa





D:配置集群文件

[root@hadoop1 spark100]# vi conf/slaves

[root@hadoop1 spark100]# cat conf/slaves

hadoop1hadoop2
hadoop3


[root@hadoop1 spark100]# cp conf/spark-env.sh.template conf/spark-env.sh

[root@hadoop1 spark091]# vi conf/spark-env.sh

[root@hadoop1 spark091]# cat conf/spark-env.sh

export SPARK_MASTER_IP=hadoop1export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=1g


另外设置一下操作系统的环境变量,然后source一下
[root@hadoop1 spark100]# vi /etc/profile
[root@hadoop1 spark100]# source /etc/profile

export SCALA_HOME=/app/scala2104export SPARK_HOME=/app/hadoop/spark100export PATH=$SCALA_HOME/bin:$SPARK_HOME/bin:$PATH


E:派发安装文件到slaves

[root@hadoop1 spark100]# cd ..

[root@hadoop1 hadoop]# chown -R hadoop:hadoop spark100

[root@hadoop1 hadoop]# su - hadoop
[hadoop@hadoop1 ~]$ cd /app/hadoop/

[hadoop@hadoop1 hadoop]$ scp -r spark100 hadoop2:/app/hadoop/

[hadoop@hadoop1 hadoop]$ scp -r spark100 hadoop3:/app/hadoop/

F:启动集群

在Master主机hadoop1上启动spark standalone集群

[hadoop@hadoop1 hadoop]$ cd spark100
[hadoop@hadoop1 spark100]$ sbin/start-all.sh

通过浏览器访问http://hadoop1:8080可以监控spark Standalone集群





2:测试

最好的spark测试程序就是spark-shell了,关于spark-shell,在spark1.0.0有了较大的变动,会在专门的章节里加以描述,然后给以链接。

在本实验standalone集群中,设置了3个节点,每个节点一个worker实例,每个worker实例使用1个core和3G内存。下面将启动2个spark-shell客户端:

前者运行在standalone集群中的hadoop1上,后者运行在standalone集群外的客户端wyy上。
前者的executor使用缺省的内存;后者executor使用2g内存。
前者的executor使用2个core;后者不加限制,因为整个集群总共3个core,前者使用了2个,所以后者只能使用1个。如果前者的spark-shell不限制core的话,会使用掉3个core,导致第二个spark-shell将无法申请到资源,处于等待状态。

A:在集群中启动spak-shell

[hadoop@hadoop1 spark100]$ bin/spark-shell --master spark://hadoop1:7077 --total-executor-cores 2

B:在集群外一台ubuntu客户端wyy上启动spak-shell(注意配置文件和集群中的一致)

hadoop@wyy:/app/hadoop/spark100$ bin/spark-shell --master spark://hadoop1:7077 --executor-memory 2g

C:监控spark集群

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: