开发者
资源
利用鲲鹏服务器Docker解决大数据处理
利用鲲鹏服务器Docker解决大数据处理
发表于2024/02/26
4.6k0

一、利用docker-compose

见之前华为鲲鹏服务器安装docker-compose及运用

二、利用Hadoop搭建Docker大数据处理集群

在Centos7上搭建数据分析集群过程包括:

  • 在Cnetos7上安装Docker并创建Hadoop镜像和三节点容器

  • 在Docker上配置三节点Hdfs集群

  • 在Docker上配置三节点Yarn集群

  • 在Docker上配置三节点Spark集群

2.1安装Docker与创建Hadoop镜像和三节点容器

2.1.1安装Dcoker

安装Docker对于Linux系统的要求是 64 位操作系统,内核版本至少为 3.10。

# 更新yum
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget http://mirrors.aliyun.com/repo/Centos-altarch-7.repo -O /etc/yum.repos.d/CentOS-Base.repo

# 安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

sudo systemctl start docker
sudo systemctl enable docker

配置Docker加速器和开机启动服务

可以使用阿里云,华为云和daocloud使用方法都一样改registry-mirrors为对应的加速地址

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["http://f1361db2.m.daocloud.io"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

2.2在Docker上创建Hadoop镜像

 从Docker Hub官网仓库上获取centos镜像库

docker pull centos
#查看镜像库
docker images

生成带有SSH功能的centos的镜像文件

为了后面配置各节点之间的SSH免密码登陆,需要在pull下的centos镜像库种安装SSH, 这里利用 Dockerfile 文件来创建镜像

cd /usr/local
 
# 创建一个存放带ssh的centos镜像Dockerfile文件的目录
mkdir DockerImagesFiles/centos7.shh
 
#创建带ssh的centos的Dockerfile 文件
vi Dockerfile
 
# Dockerfile文件内容
#基于centos镜像库创建
FROM centos
MAINTAINER dys
#安装ssh
RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN yum  install -y openssh-clients
 
#配置root名
RUN echo "root:123456" | chpasswd
RUN echo "root   ALL=(ALL)       ALL" >> /etc/sudoers
#生成ssh key
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
 
#配置sshd服务
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

根据上面的Dockerfile生成centos7-ssh镜像

docker build -t="centos7-ssh" .
#执行完成后,查看已安装的镜像库
docker images

生成Hadoop镜像库文件

在构建Hadoop镜像库的Dockerfile所在目录下,上传已经下载的 jdk-8u101-linux-x64.tar.gz, hadoop-2.7.3.tar.gz,Scala-2.11.8.tgz,spark-2.0.1-bin-hadoop2.7.tgz。

注意:这里要提前在Dockerfile文件配置环境变量,如果镜像库构建完成后,在容器中配置环境变量是不起作用的。

cd /usr/local
 
# 创建一个存放hadoop镜像Dockerfile文件的目录
mkdir DockerImagesFiles/hadoop
 
#创建带ssh的centos的Dockerfile 文件
vi Dockerfile
 
# Dockerfile文件内容
#基于centos7-ssh构建
FROM centos7-ssh
#安装java
ADD jdk-8u101-linux-x64.tar.gz /usr/local/
RUN mv /usr/local/jdk1.8.0_101 /usr/local/jdk1.8
#配置JAVA环境变量
ENV JAVA_HOME /usr/local/jdk1.8
ENV PATH $JAVA_HOME/bin:$PATH
#安装hadoop
ADD hadoop-2.7.3.tar.gz /usr/local
RUN mv /usr/local/hadoop-2.7.3 /usr/local/hadoop
#配置hadoop环境变量
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH
 
#安装scala 注意Spark2.0.1对于Scala的版本要求是2.11.x
ADD scala-2.11.8.tgz /usr/local
RUN mv /usr/local/scala-2.11.8 /usr/local/scala2.11.8
 
#配置scala环境变量
ENV SCALA_HOME /usr/local/scala
ENV PATH $SCALA_HOME/bin:$PATH
 
#安装spark
ADD spark-2.0.1-bin-hadoop2.7.tgz /usr/local
RUN mv /usr/local/spark-2.0.1-bin-hadoop2.7.tgz /usr/local/spark2.0.1
 
#配置spark环境变量
ENV SPARK_HOME /usr/local/spark2.0.1
ENV PATH $SPARK_HOME/bin:$PATH
 
#创建hdfs账号
RUN useradd hdfs
RUN echo "hdfs:12345678" | chpasswd
 
RUN yum install -y which sudo

根据上面的Dockerfile构建Hadoop镜像库

docker build -t="hadoop" .
#执行完成后,查看已安装的镜像库
docker images

生成三节点Hadoop容器集群

首先规划一下节点的主机名称,IP地址(局域网内构建docker镜像时,自动分配192.168.10.1/16网段的IP)和端口号

#创建master容器,80808和8088,8080是用来在浏览器中访问hadoop yarn spark #WEB界面,这里分别映射到物理机的80808和8088,8080端口。
 
#重点注意:容器启动后,映射比较麻烦,最好在这里映射。
docker run   -d -P -p 80808:80808 -p 8088:8088 -p 8080:8080 --name master -h master --add-host slave01:192.168.10.3 --add-host slave02:192.168.10.4 hadoop
 
#创建slave01容器,在容器host文件,添加hostname,并配置其他节点主机名称和IP地址
docker run   -d -P --name slave01 -h slave01 --add-host master:192.168.10.2 --add-host slave02:192.168.10.4  hadoop
 
#创建slave02容器
docker run   -d -P --name slave02 -h slave02 --add-host master:192.168.10.2 --add-host slave01:192.168.10.3  hadoop

查看已创建的容器并更改hadoop和spark2.0.1目录所属用户

#查看已创建的容器
docker ps -a
#更改hadoop和spark2.0.1目录所属用户【需要root用户且三个容器都要执行】
chown -R hdfs:hdfs /usr/local/hadoop
chown -R hdfs:hdfs /usr/local/spark2.0.1

2.2在Docker上配置三节点Hdfs集群

开启三个容器终端

docker exec -it master /bin/bash
docker exec -it slave01 /bin/bash
docker exec -it slave02 /bin/bash

配置hdfs账号容器各节点间的SSH免密码登陆

分别进入master,slave01,slave02三个容器节点,执行下面命令

#切换到hdfs账号
su hdfs
#生成hdfs账号的key,执行后会有多个输入提示,不用输入任何内容,全部直接回车即可
ssh-keygen
#拷贝到其他节点
ssh-copy-id -i /home/hdfs/.ssh/id_rsa -p 22 hdfs@master
ssh-copy-id -i /home/hdfs/.ssh/id_rsa -p 22 hdfs@slave01
ssh-copy-id -i /home/hdfs/.ssh/id_rsa -p 22 hdfs@slave02
#验证是否设置成功
ssh slave01

配置hadoop

这里主要配置hdfs,因为我们的计算框架要用spark,所以maprreduce的不需要配置。 

进入master容器的hadoop配置目录,需要配置有以下7个文件:hadoop-env.sh,slaves,core-site.xml,hdfs-site.xml,maprd-site.xml,yarn-site.xml

启动HDFS集群,验证是否搭建成功

#如果配置环境变量,就直接执行
hdfs namenode -format     #格式化namenode
start-dfs.sh               #启动dfs 
 
# 在 master上执行jps 
$ jps
#运行结果应该包含下面的进程
1200 SecondaryNameNode
3622 Jps
988 NameNode
 
# 在 slave上执行jps 
$ jps   
#运行结果应该包含下面的进程
2213 Jps
1962 DataNode

启动HDFS和yarn,Hadoop状态正常

cpu使用情况:可以发现单节点环境中,不存在网络间通信情况,不存在网络达到瓶颈的问题;cpu使用量也未达到瓶颈,仅仅是磁盘有少量使用

浏览器输入http://本机ip地址:8080 ,可以浏览hadoop node管理界面 

2.3在Docker上配置三节点Yarn集群

上面已经配置成功,直接启动yarn集群

#启动yarn
$ start-yarn.sh

浏览器输入http://本机ip地址:8088/cluster 可以浏览节点;

2.4在Docker上配置三节点spark集群

配置spark

进入master容器的spark配置目录,需要配置有两个文件:spark-env.sh,slaves

启动spark集群

$ start-all.sh

浏览Spark的Web管理页面: http://本机ip地址:8080 

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞