Spark集群安装
Posted 真诚的程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark集群安装相关的知识,希望对你有一定的参考价值。
Spark三种集群
Spark支持Standalone、Hadoop Yarn、Mesos三种集群方式。下面我只介绍Standalone的安装。
Standalone集群的安装
- 设置好集群机器的主机名以及/etc/hosts文件
- 安装好JDK1.7或者以上,导出JAVA_HOME,以及PATH环境变量。具体的可以参考Storm集群的安装。
进行ssh的无密码登录
- 执行ssh-keygen -t rsa产生密钥,在~/.ssh目录中。一直回车就OK
- 执行cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys,产生公钥文件。 这样就完成了无密码的本机登录
Spark安装包解压到~目录:tar -xzf spark-1.5.2-bin-hadoop2.4.tgz,我们这里用的是spark-1.5.2-bin-hadoop2.4.tgz,并将解压目录改名为spark
- 修改Spark的配置文件:
- cp ~/spark/conf/slaves.template ~/spark/conf/slaves
- 在slaves文件中每一行添加一个机器的主机名
- cp ~/spark/conf/spark-env.sh.template ~/spark/conf/spark-env.sh
- 修改spark-env.sh文件,新增如下内容:因为master webui的默认端口是8080,与我机器上部署的其他web应用使用的端口相冲突,所以,我这里特意修改为8800。
export SPARK_MASTER_IP=linux-21
export SPARK_MASTER_PORT=7077
export SPARK_MASTER_WEBUI_PORT=8800
export SPARK_WORKER_CORES=2
export SPARK_WORKER_INSTANCES=2
export SPARK_WORKER_MEMORY=1g
export JAVA_HOME=/usr/java/jdk1.7.0_79
export SPARK_JAVA_OPTS=”-Dspark.cores.max=2”
由于spark在standalone模式下是FIFO调度模式,并且默认情况下使用集群的全部core,所以为了使得多人能同时使用spark-shell进行学习,可以加入如下配置参数,限制每个application使用的最大core个数: export SPARK_JAVA_OPTS=”-Dspark.cores.max=2”
- 如果想要使用scala语言进行开发,还需要安装scala包,我们这里用的是scala-2.10.6.tgz
- 先解压scala包到~/目录
- 导出SCALA_HOME:export SCALA_HOME=/home/spark/scala-2.10.6
- 导出PATH环境变量:export PATH=.: JAVAHOME/bin: SCALA_HOME/bin:$PATH
- . .profile生效
- 重复上述步骤,将集群中的每台机器都进行上述配置和安装。spark的安装,直接使用scp -r进行拷贝就行。
- 在每台集群机器上都要执行:ssh-copy-id -i ~/.ssh/id_rsa.pub other-machine-hostname,完成集群机器之间的无密码互相登录。
- 在master机器上执行:~/spark/sbin/start-all.sh启动集群。我们可以通过在每台机器上执行jps查看是否有master、worker进程。另外我们还可以通过浏览器来查看集群的信息:linux-21:8800。
Spark shell连接到集群
- 我们先在一台另外的机器上部署spark安装包:安装完jdk1.7后,直接copy master机器上的安装包过来即可。
- 执行~/spark/bin/spark-shell.sh –master spark://linux-21:7077,等启动完成后,我们可以在master的webui上看到一个名字为spark-shell的应用在运行了。
- 我们可以在shell中执行一些命令:执行完后,在master的webui上就可以看到具体的执行情况了。
val data = Array(1, 2, 3, 4 ,5)
val distdata = sc.parallelize(data)
distdata.reduce((a,b) => a + b)
基于Zookeeper的HA
- 先安装Zookeeper集群,可以参考我的博客文章
- 修改Spark的配置文件conf/spark-env.sh,并把修改后的配置文件分发到所有Spark集群机器上
将master的配置去掉两个:
#export SPARK_MASTER_IP=linux-21
#export SPARK_MASTER_PORT=7077
新增一行配置:
export SPARK_DAEMON_JAVA_OPTS=”-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=linux-21:2181,linux15-19:2181,l
inux-7:2181” - 在一台master执行sbin/start-all.sh,启动Spark集群
- 在另外需要做standby的master机器上,执行sbin/start-master.sh
- 这样我们就能通过jps以及master webui能看到master已经启动
- 我们把当前管理集群的那台master机器停掉:sbin/stop-master.sh,然后我们会发现Zookeeper会重新选举一台master机器接管整个Spark集群。可以通过master webui能看到被选举master已经重新获得了worker的信息。在它的日志里面能看到如下打印日志:
16/01/14 08:48:29 INFO ConnectionStateManager: State change: CONNECTED
16/01/14 08:48:55 INFO Master: Registering worker 10.118.15.21:41844 with 2 cores, 1024.0 MB RAM
16/01/14 08:48:55 INFO Master: Registering worker 10.118.15.19:31987 with 2 cores, 1024.0 MB RAM
16/01/14 08:48:55 INFO Master: Registering worker 10.118.15.19:23901 with 2 cores, 1024.0 MB RAM
16/01/14 08:48:55 INFO Master: Registering worker 10.118.15.21:17986 with 2 cores, 1024.0 MB RAM
16/01/14 08:49:29 INFO ZooKeeperLeaderElectionAgent: We have gained leadership
16/01/14 08:49:29 INFO Master: I have been elected leader! New state: RECOVERING
16/01/14 08:49:29 INFO Master: Trying to recover worker: worker-20160114173418-10.118.15.19-31987
16/01/14 08:49:29 INFO Master: Trying to recover worker: worker-20160114173418-10.118.15.19-23901
16/01/14 08:49:29 INFO Master: Trying to recover worker: worker-20160114084735-10.118.15.21-41844
16/01/14 08:49:29 INFO Master: Trying to recover worker: worker-20160114084733-10.118.15.21-17986
16/01/14 08:49:29 INFO Master: Worker has been re-registered: worker-20160114084733-10.118.15.21-17986
16/01/14 08:49:29 INFO Master: Worker has been re-registered: worker-20160114084735-10.118.15.21-41844
16/01/14 08:49:29 INFO Master: Worker has been re-registered: worker-20160114173418-10.118.15.19-23901
16/01/14 08:49:29 INFO Master: Worker has been re-registered: worker-20160114173418-10.118.15.19-31987
16/01/14 08:49:29 INFO Master: Recovery complete - resuming operations!
以上是关于Spark集群安装的主要内容,如果未能解决你的问题,请参考以下文章
Spark新手入门——3.Spark集群(standalone模式)安装