构建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
命令查看主机名,发现还没有更改
重启电脑,已经修改成功
通过命令vim /etc/hosts
打开文件,此时我们发现文件中只有 Ubuntu 系统的原始 ip(127.0.0.1)地址和主机名(localhost) 的对应关系:
我们在/etc/hosts 中配置主机名和 IP 地址的对应关系:
修改之后保存退出。
之后使用ping命令看一下主机名和 IP 地址只见的转换关系是否正确:
可以看到主机‘Master’对应ip地址‘172.16.106.130’。
我们把第二三台机器作为从节点,按照上面的操作,分别查看他们的ip地址,修改主机名:
第二台:Slave1(172.16.106.131)
第三台:Slave2(172.16.106.132)
在Slave1中配置主机名和ip地址的对应关系
vim /etc/hosts
ping一下Master节点,发现网络访问没问题
在Slave2上进行相同的操作,然后分别测试其是否能和Master、Slave1通信。
在Master节点上配置主机名和ip地址的对应信息,把Slave1和Slave2的信息加上,然后测试网络是否互通。
(2)SSH无密码验证配置
首先尝试在没有进行配置的情况下,是否可以进行访问。
产生警告,但是可以访问,有时会出现需要输入密码的情况。
按照前面的配置,我们已经分布在 Master、Slave1、Slave2 这三台机器上的/root/.ssh/ 目录下生成一个私钥 id_rsa 和一个公钥 id_rsa.pub。
此时把 Slave1 的 id_rsa.pub 传给 Master,如下所示:
然后把Slave2的id_rsa.pub传给Master,如下所示:
在Master上检查公钥是否已经传输过来。
Master节点上综合所有公钥
将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。
原:
更改后:
之后将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:
可以看到,master既作为namenode又作为datanode。Slave1:
有datanode进程。Slave2:
有datanode进程。