当前位置:主页 > 查看内容

使用docker部署hadoop集群-手把手复现

发布时间:2021-06-29 00:00| 位朋友查看

简介:文章目录 版本 安装docker 创建镜像 centos镜像 hadoop和jdk镜像 配置网络 配置ssh免密登录 配置集群 配置环境变量 启动测试 版本 CentOs7 docker20 jdk1.8 hadoop3.2 手把手复现有手就行。 可以使用虚拟机或服务器白嫖服务器可参考 学生党白嫖服务器-不会吧……

在这里插入图片描述

版本


CentOs7
docker20
jdk1.8
hadoop3.2

手把手复现,有手就行。

可以使用虚拟机或服务器,白嫖服务器可参考:
学生党白嫖服务器-不会吧不会吧,你还在买学生机吗?
还可关注左侧公众号领取👈

安装docker


yum update #更新(询问输入y)

yum install -y yum-utils device-mapper-persistent-data lvm2 #安装依赖

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce #安装docker
 
systemctl start docker #启动docker

docker -v #查看docker版本

在这里插入图片描述
在这里插入图片描述

创建镜像

centos镜像


  1. 拉取centos镜像
docker pull centos

在这里插入图片描述

  1. 配置Dockerfile(ssh服务)
vim Dockerfile
#复制以下内容
FROM centos
MAINTAINER mwf

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

RUN echo "root:123456" | chpasswd #ssh密码可自定义,这里就写123456了
RUN echo "root   ALL=(ALL)       ALL" >> /etc/sudoers
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
#然后按Esc :wq保存退出
  1. 生成镜像
docker build -t="centos7-ssh" . #镜像名可自定义
docker images #查看镜像

在这里插入图片描述
至此一个带ssh服务的centos镜像就安好了。

hadoop和jdk镜像


  1. 下载并上传安装包
    JDK
    百度网盘:https://pan.baidu.com/s/1_evTH6WlmXTnpSSAsstV9Q提取码eyu3
    在这里插入图片描述
    hadoop
    百度网盘:https://pan.baidu.com/s/1S9Sqwl3UN9cq2-dSdBGKRQ 提取码ca8s
    在这里插入图片描述

在这里插入图片描述

  1. 配置Dockerfile(jdk+hadoop)
    可以把之前的改名,或直接覆盖,注意版本号和你下载的对应。
mv Dockerfile Dockerfile.centos_ssh
vim Dockerfile
#复制以下内容
FROM centos7-ssh 
ADD jdk-8u281-linux-x64.tar.gz /usr/local/  
RUN mv /usr/local/jdk1.8.0_281 /usr/local/jdk1.8
ENV JAVA_HOME /usr/local/jdk1.8
ENV PATH $JAVA_HOME/bin:$PATH

ADD hadoop-3.2.2.tar.gz /usr/local
RUN mv /usr/local/hadoop-3.2.2 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH

RUN yum install -y which sudo
#然后按Esc :wq保存退出
  1. 生成镜像
docker build -t="hadoop" .

在这里插入图片描述

配置网络


设置集群间的网络。

  1. 创建网桥
docker network create --driver bridge hadoop-br

在这里插入图片描述

  1. 启动三台(一主二从)并指定网络
docker run -itd --network hadoop-br --name hadoop1 -p 50070:50070 -p 8088:8088 hadoop
docker run -itd --network hadoop-br --name hadoop2 hadoop
docker run -itd --network hadoop-br --name hadoop3 hadoop

在这里插入图片描述
3. 检查网络情况

docker network inspect hadoop-br 

在这里插入图片描述

配置ssh免密登录


  1. 开三个窗口分别启动三个hadoop并配置host
docker exec -it hadoop1 bash #hadoop2、hadoop3
vi /etc/hosts
# 加入以下id和hostname,就是上一个图圈起来的
172.18.0.2 hadoop1 
172.18.0.3 hadoop2 
172.18.0.4 hadoop3 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 设置免密
    三台机器都分别执行以下命令:
ssh-keygen
#一路回车
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop1
#输入密码就是前面的123456
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop2
#输入密码就是前面的123456
ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop3
#输入密码就是前面的123456

在这里插入图片描述

插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

  1. 测试
ping hadoop1 
ping hadoop2
ping hadoop3
ssh hadoop1
ssh hadoop2
ssh hadoop3
#记得exit

在这里插入图片描述

配置集群


以下操作在主节点hadoop1上执行即可:

docker exec -it hadoop1 bash#进入hadoop1
mkdir /home/hadoop #创建目录
mkdir /home/hadoop/tmp /home/hadoop/hdfs_name /home/hadoop/hdfs_data
cd /usr/local/hadoop/etc/hadoop/
  1. core-site.xml
#vi core-site.xml
	<property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
    </property>

在这里插入图片描述
2. hdfs-site.xml

#vi hdfs-site.xml
 <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hdfs_name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hdfs_data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop1:9001</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>

在这里插入图片描述
3. mapred-site.xml

#vi mapred-site.xml
 <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop1:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop1:19888</value>
    </property>

在这里插入图片描述
4. yarn-site.xml

# vi yarn-site.xml
 <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>hadoop1:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop1:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hadoop1:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoop1:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoop1:8088</value>
    </property>
  1. workers
#vi workers
hadoop2
hadoop3

在这里插入图片描述
6. 拷贝

scp -r /usr/local/hadoop/ hadoop2:/usr/local/
scp -r /usr/local/hadoop/ hadoop3:/usr/local/

scp -r /usr/local/hadoop hadoop2:/
scp -r /usr/local/hadoop hadoop3:/

配置环境变量


三个都执行

  1. 三个窗口分别启动docker
docker exec -it hadoop1 bash
docker exec -it hadoop2 bash
docker exec -it hadoop3 bash
  1. dfs.sh
cd /usr/local/hadoop/sbin
vi start-dfs.sh#第二行添加如下4句
vi stop-dfs.sh#第二行添加如下4句
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

在这里插入图片描述

  1. yarn.sh
cd /usr/local/hadoop/sbin
vi start-yarn.sh#第二行添加如下3句
vi stop-yarn.sh#第二行添加如下3句
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

在这里插入图片描述
4. env.sh

cd /usr/local/hadoop/etc/hadoop
vi hadoop-env.sh#加入下面这句话
export JAVA_HOME=/usr/local/jdk1.8

在这里插入图片描述

  1. 添加变量
export JAVA_HOME=/usr/local/jdk1.8
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:/bin:/usr/bin:$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$PATH:$HADOOP_HOME/sbin
source ~/.bashrc #执行

在这里插入图片描述

启动测试

在hadoop1下执行

  1. 格式化hdfs
hdfs namenode -format
  1. 启动
start-all.sh
  1. 测试
jps

在这里插入图片描述
若需要可开启历史服务

mr-jobhistory-daemon.sh start historyserver

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

原创不易,请勿转载本不富裕的访问量雪上加霜
博主首页:https://wzlodq.blog.csdn.net/
微信公众号:唔仄lo咚锵
如果文章对你有帮助,记得一键三连?

;原文链接:https://blog.csdn.net/qq_45034708/article/details/115413751
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐