【分布式编程】三——基于VirtualBox的Spark完全分布式环境

前言

Spark的搭建依赖于Hadoop,因此本文基于之前分布式Hadoop环境,JDK、Hadoop等已安装好,

系统环境

  • 虚拟机:VirtualBox
  • Linux:Ubuntu 16.04 LTS
  • HAdoop 2.7.5
  • IDE:Intellij IDEA
  • JDK 1.8.0_151
  • Scala-2.12.4
  • Spark-2.2.1

操作步骤

安装Scala

  1. 下载Scala-2.12.4

  2. 解压到当前目录

    tar -zxvf scala-2.12.4.tgz
  3. 将解压后的文件夹移动到/usr

    sudo mv scala-2.12.4/ /usr/
  4. 配置环境变量

    sudo vim /etc/profile

    添加如下代码,路径根据情况自己修改

    export SCALA_HOME=/usr/scala-2.12.4
    export PATH=$SCALA_HOME/bin:$PATH
  5. 更新环境变量配置

    source /etc/profile
  6. 验证是否安装成功

    scala -version

安装Spark

  1. 下载Spark,由于Spark基于Hadoop,且之前已经安装好Hadoop,所以下载没有绑定Hadoop的版本,所以选择spark-2.2.1-bin-without-hadoop.tgz

    mark

  2. 解压到当前目录

    tar -zxvf spark-2.2.1-bin-without-hadoop.tgz
  3. 将解压后的文件夹移动到/usr/local/

    sudo mv spark-2.2.1-bin-without-hadoop/ /usr/
  4. 配置环境变量

    sudo vim /etc/profile

    添加以下代码

    export SPARK_HOME=/usr/spark-2.2.1-bin-without-hadoop
    export PATH=$PATH:$SPARK_HOME/bin
    export PATH=$PATH:$SPARK_HOME/sbin
  5. 更新环境变量配置

    source /etc/profile

Spark配置

【注】此处以master主机为例,其他从机作相应更改

配置spark-env.sh

cd /usr/spark-2.2.1-bin-without-hadoop/conf/
sudo cp spark-env.sh.template spark-env.sh
sudo vim spark-env.sh

添加以下代码

export SPARK_HOME=/usr/spark-2.2.1-bin-without-hadoop
export SPARK_DIST_CLASSPATH=$(/usr/hadoop-2.7.5/bin/hadoop classpath)
export JAVA_HOME=/usr/jdk1.8.0_151
export SCALA_HOME=/usr/scala-2.12.4
export HADOOP_HOME=/usr/hadoop-2.7.5
export HADOOP_CONF_DIR=/usr/hadoop-2.7.5/etc/hadoop
export SPARK_MASTER_IP=master
export SPARK_MASTER_HOST=master
export SPARK_LOCAL_IP=master
export SPARK_WORKER_MEMEORY=1g
export SPARK_EXECUTOR_MEMEORY=1g
export SPARK_DRIVER_MEMORY=1g
export SPARK_WORKER_CORES=1

【注】

  • SPARK_LOCAL_IP为本地地址,从机需要更改为自己的IP

配置slaves

sudo cp slaves.template slaves
sudo vim slaves

添加所有从机的主机名

node1
node2

启动集群

因为Spark基于Hadoop,所以需要先启动Hadoop。

start-all.sh

再启动Spark,进入到Spark安装目录下的sbin文件夹

cd /usr/spark-2.2.1-bin-without-hadoop/sbin

执行sbin文件夹下的start-all.sh,若直接执行start-all.sh,启动的是Hadoop

./start-all.sh

查看集群

查看进程

jps

主机上显示以下进程

mark

从机显示以下进程

mark

通过Web查看状态

在主机master上打开浏览器,访问http://localhost:8080

mark

运行pyspark

进入到spark安装目录下的bin文件夹

cd /usr/spark-2.2.1-bin-without-hadoop/bin/

运行pyspark

./pyspark

mark

运行spark-shell

进入到spark安装目录下的bin文件夹

cd /usr/spark-2.2.1-bin-without-hadoop/bin/

运行spark-shell

./sparkshell

mark

以上,证明spark配置成功。

关闭集群

同样进入到Spark安装目录下的sbin文件夹

cd /usr/spark-2.2.1-bin-without-hadoop/sbin
./stop-all.sh