构建Spark集群(2)

构建spark集群经典4部曲:

1.搭建hadoop单机和伪分布式环境
2.构造分布式hadoop集群
3.构造分布式spark集群
4.测试spark集群

第二步 构造分布式hadoop集群

2.1在VMWare中准备第二、三台虚拟机

通过克隆的方式,在VMWare中创建三台虚拟机,分别命名为Master、Slave1、Slave2
在构建第二三台虚拟机的时候,使用相同的root超级用户的方式登录

2.2按照配置伪分布式模式的方式配置新创建运行Ubuntu系统的机器

2.3配置Hadoop分布式集群环境

(1)在/etc/hostname 中修改主机名并在/etc/hosts 中配置主机名和 IP 地址的对应关系:

我们把Master节点作为主节点,首先通过ifconfig查看ip地址(172.16.106.130)

然后在/etc/hostname中修改主机名vim /etc/hostname

修改为Master,保存退出,

之后通过hostname命令查看主机名,发现还没有更改

spark集群推荐节点 spark主节点_hadoop


重启电脑,已经修改成功

spark集群推荐节点 spark主节点_hadoop_02


通过命令vim /etc/hosts打开文件,此时我们发现文件中只有 Ubuntu 系统的原始 ip(127.0.0.1)地址和主机名(localhost) 的对应关系:

我们在/etc/hosts 中配置主机名和 IP 地址的对应关系:

spark集群推荐节点 spark主节点_hadoop_03


修改之后保存退出。

之后使用ping命令看一下主机名和 IP 地址只见的转换关系是否正确:


可以看到主机‘Master’对应ip地址‘172.16.106.130’。

我们把第二三台机器作为从节点,按照上面的操作,分别查看他们的ip地址,修改主机名:

第二台:Slave1(172.16.106.131)
第三台:Slave2(172.16.106.132)

在Slave1中配置主机名和ip地址的对应关系

vim /etc/hosts

spark集群推荐节点 spark主节点_集群搭建_04


ping一下Master节点,发现网络访问没问题

spark集群推荐节点 spark主节点_spark_05


在Slave2上进行相同的操作,然后分别测试其是否能和Master、Slave1通信。

在Master节点上配置主机名和ip地址的对应信息,把Slave1和Slave2的信息加上,然后测试网络是否互通。

(2)SSH无密码验证配置

首先尝试在没有进行配置的情况下,是否可以进行访问。

spark集群推荐节点 spark主节点_主机名_06


产生警告,但是可以访问,有时会出现需要输入密码的情况。

按照前面的配置,我们已经分布在 Master、Slave1、Slave2 这三台机器上的/root/.ssh/ 目录下生成一个私钥 id_rsa 和一个公钥 id_rsa.pub。

此时把 Slave1 的 id_rsa.pub 传给 Master,如下所示:

spark集群推荐节点 spark主节点_hadoop_07


然后把Slave2的id_rsa.pub传给Master,如下所示:

spark集群推荐节点 spark主节点_spark_08


在Master上检查公钥是否已经传输过来。

spark集群推荐节点 spark主节点_spark集群推荐节点_09


Master节点上综合所有公钥

spark集群推荐节点 spark主节点_spark_10


将master节点的所有公钥信息复制到slave1和slave2的.ssh目录下

scp authorized_keys root@Slave1:/root/.ssh/authorized_keys

scp authorized_keys root@Slave2:/root/.ssh/authorized_keys

之后再次使用ssh登录Slave1和Slave2,不再有警告

(3)修改Master,Slave1,Slave2配置文件:

首先,修改Master的core-site.xml文件,将localhost改为Master。

原:

spark集群推荐节点 spark主节点_spark集群推荐节点_11


更改后:

spark集群推荐节点 spark主节点_集群搭建_12


之后将Slave1和Slave2的core-site.xml中的localhost修改为Master

其次,修改mapred-site.xml,将localhost更改为Master,新版本的hadoop中没有mapred-site.xml,可以将mapred-site.xml.template复制一份:
cp mapred-site.xml.template mapred-site.xml

最后,修改hdfs-site.xml,将“dfs.replication”值由 1 改为 3,这样我们的数据就会有 3 份副本:

配置slave文件(计算节点),三个机器都要进行同样的操作,在hadoop下的/etc/hadoop目录中:
vim slaves
修改为如下内容:

Master
Slave1
Slave2

主机节点既作为控制节点,也作为计算节点,数据副本3份。
(4)测试分布式环境
删除之前构建伪分布式环境时,tmp文件下的内容
rm -rf tmp/*
rm -rf /tmp/hadoop*
三台机器都要进行同样的操作。
之后再Master节点上,格式化hdfs

cd bin/   #进入hadoop文件夹下的bin目录下
hdfs namenode -format   #格式化
cd ../sbin/     #进入sbin目录下
./start-dfs.sh  #启动集群

分别在三台机器上通过jps命令,查看进程启动情况。

Master:

spark集群推荐节点 spark主节点_主机名_13


可以看到,master既作为namenode又作为datanode。Slave1:

spark集群推荐节点 spark主节点_hadoop_14


有datanode进程。Slave2:

spark集群推荐节点 spark主节点_hadoop_15


有datanode进程。