如何在虚拟机上搭建并配置一个分布式的 Spark2.2.0 集群

来源:互联网 发布:linux查看进程端口号 编辑:程序博客网 时间:2024/06/04 18:31

本文展示了如何在虚拟机上搭建并配置一个分布式的 Spark2.2.0 集群

一、软件准备

VMware-WorkStation
ubuntu-16.04.2-desktop-amd64.iso
jdk-8u144-linux-x64.tar.gz
scala-2.12.3.tgz
spark-2.2.0-bin-hadoop2.7.tgz

二、集群机器准备

在VMware 中安装三台虚拟机,如下:
这里写图片描述

这三台机器保证环境和用户名一致,这里使用baozi。
使用手动固定ip,否则后面在配置host文件的时候可能因为ip更换而出问题:
ip设置方法
iface eth0 inetstatic
address 192.168.65.128
netmask 255.255.255.0
gateway 192.168.65.2

配置好的ip地址,修改 /etc/hosts 文件,配置如下
这里写图片描述

三、配置 ssh 无密码访问集群机器

在三台机器中分别执行以下两个命令,以便无密码登录到 localhost。
先安装ssh和openssh-server
sudo apt-get install
sudo apt-get install openssh-server
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

将 slave1 和 slave2 的公钥 id_dsa.pub 传给 master。
scp ~/.ssh/id_dsa.pub baozi@master:/home/baozi/ssh/id_dsa.pub.slave1
scp ~/.ssh/id_dsa.pub baozi@master:/home/baozi/ssh/id_dsa.pub.slave2

将 slave1 和 slave2的公钥信息追加到 master 的 authorized_keys文件中。
cat id_dsa.pub.slave1 >> authorized_keys
cat id_dsa.pub.slave2 >> authorized_keys

将 master 的公钥信息 authorized_keys 复制到 slave1 和 slave2 的 .ssh 目录下。
scp authorized_keys baozi@slave1:/home/baozi/.ssh/authorized_keys
scp authorized_keys baozi@slave2:/home/baozi/.ssh/authorized_keys

分别 ssh 到 slave1 和 slave2
可以看到从 master 已经不需要密码就可以登录到 slave1 和 slave 2。slave1 和 slave2 也无需密码访问另外两台机器,如下:

这里写图片描述

四、JDK 和Scala、 Spark 安装配置

分别在三台机器中安装 JDK 和 Scala、Spark,操作流程均是在自己的工作目录中,建立相应的文件夹,本文在/work/目录下分别建立java和scala、spark目录,进入当前目录,将压缩包解压,jdk解压如下,其他的也类似。
这里写图片描述
baozi@slave1:/work/java$ tar -zxvf /home/baozi/Downloads/jdk-8u144-linux-x64.tar.gz

之后sudo vim /etc/profile,在尾部追加环境编辑
export JAVA_HOME=/work/java/jdk1.8.0_144
export HADOOP_HOME=/work/hadoop/hadoop-2.7.4
export SCALA_HOME=/work/scala/scala-2.12.3
export SPARK_HOME=/work/spark/spark-2.2.0-bin-hadoop2.7
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

这里写图片描述
三台机器配置完成后,需要source /etc/profile让其立即生效

五、集群配置

1、修改 master 机器上 Spark配置

进入spark目录的$SPARK_home/conf$ 目录。

(1) spark-env.sh
增加如下行配置:
export JAVA_HOME=/work/java/jdk1.8.0_144
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
export SPARK_EXECUTOR_INSTANCES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=1024M
export SPARK_MSATER_WEBUI_PORT=8080
export SPARK_CONF_DIR=/work/spark/spark-2.2.0-bin-hadoop2.7/conf

(2) slaves
master
slave1
slave2

master不仅运行master进程也运行worker进程

2、在 slave1 和 slave2 上做同样的配置

六、启动Hadoop集群

1、格式化文件系统

在 master 上执行以下命令:

start-master.sh

这里写图片描述

start-slaves.sh spark://master:7077

这里写图片描述

2、确认启动成功

进入浏览器打开http://master:8080

这里写图片描述

3、进入bin目录启动shell脚本
cd /work/spark/spark-2.2.0-bin-hadoop2.7/bin
spark-shell --master spark://master:7077 --executor-memory 1024m --driver-memory 1024m

这里写图片描述

最后刷新master:8080可以发现已有有一个application了。
这里写图片描述

阅读全文
0 0