Spark集群安装

Spark三种集群

Spark支持Standalone、Hadoop Yarn、Mesos三种集群方式。下面我只介绍Standalone的安装。

Standalone集群的安装

  1. 设置好集群机器的主机名以及/etc/hosts文件
  2. 安装好JDK1.7或者以上,导出JAVA_HOME,以及PATH环境变量。具体的可以参考Storm集群的安装。
  3. 进行ssh的无密码登录

    • 执行ssh-keygen -t rsa产生密钥,在~/.ssh目录中。一直回车就OK
    • 执行cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys,产生公钥文件。 这样就完成了无密码的本机登录
  4. Spark安装包解压到~目录:tar -xzf spark-1.5.2-bin-hadoop2.4.tgz,我们这里用的是spark-1.5.2-bin-hadoop2.4.tgz,并将解压目录改名为spark

  5. 修改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
  6. 如果想要使用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生效
  7. 重复上述步骤,将集群中的每台机器都进行上述配置和安装。spark的安装,直接使用scp -r进行拷贝就行。
  8. 在每台集群机器上都要执行:ssh-copy-id -i ~/.ssh/id_rsa.pub other-machine-hostname,完成集群机器之间的无密码互相登录。
  9. 在master机器上执行:~/spark/sbin/start-all.sh启动集群。我们可以通过在每台机器上执行jps查看是否有master、worker进程。另外我们还可以通过浏览器来查看集群的信息:linux-21:8800。

Spark shell连接到集群

  1. 我们先在一台另外的机器上部署spark安装包:安装完jdk1.7后,直接copy master机器上的安装包过来即可。
  2. 执行~/spark/bin/spark-shell.sh –master spark://linux-21:7077,等启动完成后,我们可以在master的webui上看到一个名字为spark-shell的应用在运行了。
  3. 我们可以在shell中执行一些命令:执行完后,在master的webui上就可以看到具体的执行情况了。
    val data = Array(1, 2, 3, 4 ,5)
    val distdata = sc.parallelize(data)
    distdata.reduce((a,b) => a + b)

基于Zookeeper的HA

  1. 先安装Zookeeper集群,可以参考我的博客文章
  2. 修改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”
  3. 在一台master执行sbin/start-all.sh,启动Spark集群
  4. 在另外需要做standby的master机器上,执行sbin/start-master.sh
  5. 这样我们就能通过jps以及master webui能看到master已经启动
  6. 我们把当前管理集群的那台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!

你可能感兴趣的:(HA,spark集群安装)