Spark Graphx 分布式集群的搭建

环境配置

物理系统及相关配置 Windows 10 pro 1903,内存:16G
虚拟机软件 VMware® Workstation 15 Pro 15.5.0 build-14665864
系统 Ubuntu 18.04.1 4.15.0-29-generic
Java Java 1.8.0_202
Hadoop Hadoop 2.7.7
spark spark-2.4.4-bin-without-hadoop-scala-2.12
主要搭建步骤如下:

1.Ubuntu 虚拟机的安装
2.静态ip的分配
3.配置ssh无密码登录本机和访问集群机器
4.JDK和Hadoop安装配置
5.Hadoop集群配置
6.启动hadoop集群
7.Spark安装
8.配置Spark环境变量
9.Spark配置
10.启动Spark集群
11.关闭Spark集群

1.Ubuntu 虚拟机的安装

从官网可以获得VMware® Workstation 15 Pro和Ubuntu 18.04.1的镜像文件。
(ps:本人原来用的是VMware® Workstation 13,在windows到1093版本后出现了兼容性问题而被迫升级)
首先,利用镜像文件新建三个Ubuntu虚拟机(新建时用户名最好统一,搭建时本人用户名为master)
每台虚拟机的配置如下:

  • 内存2G
  • 处理器一个
  • 硬盘20G

其余安装过程使用默认设置即可。

修改镜像源

启动虚拟机,将镜像源改为国内的镜像

修改主机名

使用Ctrl+Alt+T打开终端

sudo vim /etc/hostname 
#也可以使用sudo gedit /etc/hostname

将三台虚拟机中的hostname分别改为masterslave01slave02,保存退出终端,重新打开生效。

2.静态ip的分配

首先给出本人的虚拟机IP配置

master 192.168.75.100
slave01 192.168.75.101
slave02 192.168.75.103

虚拟网络编辑器

在集群搭建过程中需要保证每台虚拟机的IP地址固定,为此我们打开 VMware菜单栏-编辑-虚拟网络编辑器(需要将虚拟机关闭),移除原有网络,添加网络 VMnet8,在VMnet模式中,采用NAT模式,并取消勾选“本地DHCP服务”。

虚拟网路编辑器

需要注意的是此处的需要记住网关IP,比如我的是192.168.75.2,那么三台虚拟机的IP就可以为192.168.75.*
将每台虚拟机的网络适配器如图改为“自定义”,VMnet8
image.png

Settings-Network添加 New profile, Name设置为ens33,IPv4 Method 设置为 Manual, 分别填入各自的IP地址(IP一定不能相同),子网掩码、网关和DNS。
本人DNS使用的是阿里的DNS解析服务器223.5.5.5

修改interface

终端输入

sudo vim /etc/network/interfaces

三台机器分别作修改如图,其中IP地址和网关需要用到上面虚拟网络编辑器中记下地址。


interaces

修改hosts

$ sudo vim /etc/hosts

配置如下:

127.0.0.1 localhost
192.168.1.104 master
192.168.1.107 slave01
192.168.1.108 slave02

输入sudo /etc/init.d/networking restart重启网络。
此时可用ping命令进行检查

ping master
ping slave01
ping slave02
ping www.baidu.com

3.配置ssh无密码登录本机和访问集群机器

在三台机器上分别使用如下命令:(以slave02为例)

sudo apt-get openssh-server
ssh-keygen -t rsa -P ""#此处需多次回车
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
#此时输入ssh slave02应该可以连接上

如图:


ssh本地主机

还需要让master主机免密码登录slave01和slave02主机。在master执行如下命令,将master的id_rsa.pub传送给两台slave主机。

scp ~/.ssh/id_rsa.pub master@slave01:/home/hadoop/
scp ~/.ssh/id_rsa.pub master@slave02:/home/hadoop/

注:此处权限不够可先scp/tmp 目录下,在用cp命令进行拷贝
如果master主机和slave01主机的用户名不一样,还需要在master修改~/.ssh/config文件,如果没有此文件,自己创建文件。

Host master
  user ***
Host slave01
  user ***

(为了实现三台机器ssh的两两联通,可先将slave节点上的公钥发送到master,统一配置好后分发到各从节点)

4.JDK和Hadoop安装配置

配置Java JDK

由于官网下载速度过慢,我们使用华为的镜像:
https://repo.huaweicloud.com/java/jdk/8u202-b08/
分别在三台机器下,下载解压到/usr/local/java目录下,并配置环境变量:
编辑/etc/profile,添加如下内容:

export JAVA_HOME=/usr/java/jdk1.8.0_202
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

接着用source /etc/profile更新设置。

安装Hadoop

先在master主机上做安装Hadoop,暂时不需要在slave01,slave02主机上安装Hadoop.稍后会把master配置好的Hadoop发送给slave01,slave02。

1.从hadoop的官网(http://www.apache.org/dyn/closer.cgi/hadoop/common)选择合适的版本下载(这里选择的是比较稳定的2.7.7)

2.解压之后将生成的文件夹名称改为hadoop(为了后期操作方便),移动到/usr/local/目录下面:

sudo tar -zxf ~/Downloads/hadoop-2.7.7.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.7.7/ ./hadoop            # 将文件夹名改为hadoop
sudo chown -R master ./hadoop       # 修改文件权限

权限很重要!!!!

3.更改环境变量,/etc/profile文件中添加Hadoop的环境变量,如下:

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

同样,用source /etc/profile更新设置。

5.Hadoop集群配置

修改master主机修改Hadoop如下配置文件,这些配置文件都位于/usr/local/hadoop/etc/hadoop目录下。
1.修改slaves:
这里把DataNode的主机名写入该文件,每行一个。这里让master节点主机仅作为NameNode使用。

slave01
slave02

2.修改core-site.xml


      
          hadoop.tmp.dir
          file:/usr/local/hadoop/tmp
          Abase for other temporary directories.
      
      
          fs.defaultFS
          hdfs://master:9000
      
  

3.修改hdfs-site.xml:


    
        dfs.replication
        3     #3这里指的集群下的节点的总数
    
    

4.修改mapred-site.xml(复制mapred-site.xml.template,再修改文件名)

  
    
        mapreduce.framework.name
        yarn
    
  

修改yarn-site.xml


  
      
          yarn.nodemanager.aux-services
          mapreduce_shuffle
      
      
          yarn.resourcemanager.hostname
          master
      
  

!!!此处需要修改/etc/local/hadoop/etc/hadoop/hadoop-env.sh

因为不知什么原因hadoop无法解析系统的Java环境变量

必须手动配置,找到地方后修改为

export JAVA_HOME=/usr/java/jdk1.8.0_202

配置好后,将 master 上的 /usr/local/Hadoop 文件夹复制到各个节点上。之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。在 master 节点主机上执行:

cd /usr/local/
rm -rf ./hadoop/tmp   # 删除临时文件
rm -rf ./hadoop/logs/*   # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop
cd ~
scp ./hadoop.master.tar.gz slave01:/home/hadoop
scp ./hadoop.master.tar.gz slave02:/home/hadoop

同样scp的权限问题可以迂回解决。

slave01,slave02节点上执行:

sudo rm -rf /usr/local/hadoop/
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R master /usr/local/hadoop

6.启动hadoop集群

在master主机上执行如下命令:

cd /usr/local/hadoop
bin/hdfs namenode -format
sbin/start-all.sh

运行后,在master,slave01,slave02运行jps命令,查看:

jps

master运行jps后,如下图:


master

slave01、slave02运行jps,如下图:


slave

7.Spark安装

这里采用3台机器(节点)作为实例来演示如何搭建Spark集群,其中1台机器(节点)作为Master节点,另外两台机器(节点)作为Slave节点(即作为Worker节点),主机名分别为Slave01和Slave02。
从官网http://spark.apache.org/downloads.html(http://spark.apache.org/downloads.html选择user-provided Aoache Hadoop 版本
下载完成后,执行如下命令:

sudo tar -zxf ~/Downloads/spark-2.4.4-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.4.4-bin-without-hadoop/ ./spark
sudo chown -R hadoop ./spark

8.配置Spark环境变量

编辑/etc/profile,添加如下配置

export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

同样用source /etc/profile使之生效。

9.Spark配置

在Master节点主机上进行如下操作:

  • 配置slaves文件
    将 slaves.template 拷贝到 slaves
cd /usr/local/spark/
cp ./conf/slaves.template ./conf/slaves

slaves文件设置Worker节点。编辑slaves内容,把默认内容localhost替换成如下内容:

slave01
slave02
  • 配置spark-env.sh文件
    将 spark-env.sh.template 拷贝到 spark-env.sh
cp ./conf/spark-env.sh.template ./conf/spark-env.sh

编辑spark-env.sh,添加如下内容:

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_MASTER_IP=192.168.75.100

SPARK_MASTER_IP 指定 Spark 集群 Master 节点的 IP 地址;

配置好后,将Master主机上的/usr/local/spark文件夹复制到各个节点上。在Master主机上执行如下命令:

cd /usr/local/
tar -zcf ~/spark.master.tar.gz ./spark
cd ~
scp ./spark.master.tar.gz slave01:/home/hadoop
scp ./spark.master.tar.gz slave02:/home/hadoop

在slave01,slave02节点上分别执行下面同样的操作:

sudo rm -rf /usr/local/spark/
sudo tar -zxf ~/spark.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/spark

10.启动Spark集群

1.启动Spark集群前,要先启动Hadoop集群。在Master节点主机上运行如下命令:

cd /usr/local/hadoop/
sbin/start-all.sh

2.启动Master节点
在Master节点主机上运行如下命令:

cd /usr/local/spark/
sbin/start-master.sh

在Master节点上运行jps命令,可以看到多了个Master进程:


image.png

3.启动所有Slave节点
在Master节点主机上运行如下命令:

sbin/start-slaves.sh

11.关闭Spark集群

  1. 关闭Master节点
sbin/stop-master.sh

关闭Worker节点

 sbin/stop-slaves.sh
  1. 关闭Hadoop集群
 cd /usr/local/hadoop/
 sbin/stop-all.sh

你可能感兴趣的:(Spark Graphx 分布式集群的搭建)