4台服务器集群搭建_阿里云服务器搭建spark集群和HDFS

在阿里云服务器,基于docker手动配置spark集群、HDFS

配置spark集群的方式当前最简单的方式是采用docker-compose,但这里采用最麻烦的手动配置,目的只是为了熟悉配置过程

在阿里云上开启了三个docker,虚拟三个节点;节点间通过ssh免密通信;

三个节点一起组成HDFS和spark集群

v2-b67dc8b3dd481966fabc089663edd592_b.jpg

1、制作自定义centos镜像

1.1 原始镜像下载

首先docker拉取一个centos7(注意版本,如果是默认版本的centos8,ssh存在点问题)

启动镜像,取名hadoop

docker pull centos:centos7
docker run -i -t --name hadoop centos7 /bin/bash

1.2 下载包

在宿主机下:

"Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" 

tar zxvf解压所有包,然后docker cp所有的解压后的文件夹到hadoop docker中,例如(hadoop即之前创建的docker)

docker cp ../software/ hadoop:/home/

这样在hadoop容器的/home/software里面就有四个软件

[root@iZbp1ffiy6dvemkvvfddykZ software

1.3 配置jdk、scala、hadoop

进入hadoop docker中

exec -it hadoop /bin/bash

vi /etc/profile 并在文件末尾添加配置信息:

JAVA_HOME

vi ~/.bashrc 并在文件末尾添加

export 

vi etc/hadoop/hadoop-env.sh,在末尾添加

export 

使配置生效

source /etc/profile

检查配置是否成功

java -version
scala -version
hadoop version

1.4 配置ssh

# 安装ssh
yum install openssh-clients
yum install openssh-server

1.5 提交镜像

"centos7 with hadoop and ssh" e9d7 centos7-hadoop-sshtest

为了让ssh自动启动,需要编写dockerfile,在宿主机的任意位置:

cd centos7-hadoop-ssh
vi Dockerfile

添加内容

# 选择一个已有的os镜像作为基础r
FROM centos7-hadoop-sshtest

最后构建镜像

docker build -t centos7-hadoop-ssh .

此时通过docker images就可以看到构建成功的镜像了

2、搭建集群

2.1 集群架构

注意:以下的所有左侧端口都需要在阿里云服务器的安全组中添加

  • docker0 : hadoop0
    • 主节点
    • 192.168.2.10
    • 端口映射(宿主端口/docker端口)
      • 8080/8080:spark web UI
      • 8081/8081:spark worker UI
      • 9870/9870:HDFS web UI
      • 50070/50070:
  • docker1 : hadoop1
    • 从节点
    • 192.168.2.11
    • 端口映射(宿主端口/docker端口)
      • 4040/4040:spark Job
      • 8082/8081:spark worker1 UI
  • docker2 : hadoop2
    • 从节点
    • 192.168.2.12
    • 端口映射(宿主端口/docker端口)
      • 4041/4040:spark Job
      • 8083/8081:spark worker21 UI

2.2 网络配置

主机间的通信需要在一个网段,使用

=192.168.2.0/24 hadoop-net
docker network ls 

创建网段

2.3 启动

=

启动后用docker ps检查

2.4 ssh免密配置

exec -it hadoop0 /bin/bash
docker 

开启所有节点;对于三个docker,全部进行以下配置:

  • (1)vi /etc/hosts
192.168.2.10    hadoop0
192.168.2.11    hadoop1
192.168.2.12    hadoop2
  • (2)配置密码
#输入密码
  • (3)ssh
StrictHostKeyChecking

最后,docker间ssh检测配置是否成功

如在hadoop0中输入ssh hadoop1,保证不输入密码能够进入hadoop1

2.5 HDFS配置

hadoop0

cd /home/software/hadoop-3.2.1/etc/hadoop

当前目录下,HDFS中6个重要的配置文件:

  1. core-site.xml:Hadoop全局的配置文件,也包含一些HDFS的宏观配置。
  2. dfs-site.xml:HDFS配置文件。
  3. yarn-site.xml:YARN配置文件。
  4. mapred-sie.xml:MapReduce配置文件。
  5. slaves:从节点列表。
  6. hadoop-env.sh:与运行脚本的环境变量相关的配置文件。

1、core-site.xml

<configuration>
        

2、hdfs-site.xml

namenode和datanode地址,副本数

<configuration>
    

3、yarn-site.xml

<configuration>
        

4、mapred-site.xml

<configuration>
    

5、start-dfs.sh和stop-dfs.sh

在最前面添加

#!/usr/bin/env bash

6、start-yarn.sh和stop-yarn.sh

#!/usr/bin/env bash

7、重启hadoop

/home/software/hadoop-3.2.1/sbin/start-all.sh

jps查看是否成功

8、slaves

vi slaves修改为

hadoop1
hadoop2

9、复制hadoop目录到其他docker

scp  -rq /home/software/hadoop-3.2.1   hadoop1:/home/software
scp  -rq  /home/software/hadoop-3.2.1   hadoop2:/home/software

10、格式化HDFS

/home/software/hadoop-3.2.1/bin/hdfs namenode -format

最后启动HDFS

# 在hdoop0上:

使用jps查看是否成功

此时web打开 {阿里云公网ip:9879},即hdfs的namenode界面

3、spark

在hadoop0中:

/home/software/spark-3.0.1-bin-hadoop3.2/sbin/start-master.sh

在hadoop1和hadoop2中

/home/software/spark-3.0.1-bin-hadoop3.2/sbin/start-master.sh spark://hadoop0:7077

此时访问 {阿里云公网ip:8080}即可访问spark web ui

由于之前我们对各个worker节点的8081端口,也就是worker ui端口作了映射;

如hadoop1的8081端口映射到了宿主机8082,因此通过{阿里云公网ip:8081}即可访问worker1的web界面,同理worker2为{阿里云公网ip:8082}

4、测试

在hadoop1上执行

100

{阿里云公网ip:8080}可以看到spark执行情况

打开{阿里云公网ip:8081},可以看到worker1的执行情况

打开{阿里云公网ip:8082},可以看到worker2的执行情况

打开{阿里云公网ip:4040},可以看到Job UI(因为这里是在hadoop1上提交,故4040,若是hadoop2,则应该是4041)

打开{阿里云公网ip:9870},可以看到HDFS的界面

参考

https://www.cnblogs.com/cpaulyz/p/13740540.html#%E6%90%AD%E5%BB%BAhadoop%E5%88%86%E5%B8%83%E5%BC%8F%E9%9B%86%E7%BE%A4

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值