通过Docker搭建完全分布式Hadoop集群

前言

上一次我们搭建了基于Docker的伪分布式Hadoop集群,这次来搭建分布式的

一、为集群单独构建虚拟网络

现在的 Docker 网络能够提供 DNS 解析功能,我们可以使用如下命令为接下来的 Hadoop 集群单独构建一个虚拟的网络:

sudo docker network create --driver=bridge hadoop

使用下面这个命令查看 Docker 中的网络,可以看到刚刚创建的名为 hadoop 的虚拟桥接网络:

sudo docker network ls
image-20230919201453731

二、进入上次搭建好的容器

我们通过上次制作的镜像启动一个容器:

docker run -dit --name=master --hostname=master hdp

我们进入master容器中

docker exec -it master /bin/bash

三、配置Hadoop环境

在上一次我们已经配置了一个伪分布式的Hadoop环境,接下来我们需要对那些文件再进一步修改。

1.修改core-site.xml

打开/usr/local/hadoop-3.3.1/etc/hadoop路径下的core-site.xml:

cd /usr/local/hadoop-3.3.1
cd etc/hadoop
vim core-site.xml

修改后是这样的:

<configuration>
  <!--指定nameNode的地址-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:8020</value>
    </property>
  <!--指定Hadoop数据的存储目录-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/data</value>
    </property>
  <!--配置HDFS网页登陆使用的静态用户,配置这个之后才有权限可以在网页端删除文件、文件夹-->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
</configuration>

2.修改hdfs-site.xml

vim hdfs-site.xml

修改后:

<configuration>
  <!--文件的存储个数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
  <!--nn web端访问地址,使用网页访问HDFS文件系统就是这个端口-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>master:9870</value>
    </property>
  <!--2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9868</value>
    </property>
  <!--网页查看HDFS文件内容,出现Couldn‘t preview the file报错,需要配置的参数-->
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

3.修改mapred-site.xml

vim mapred-site.xml

修改后:

<configuration>
  <!--指定MapReduce程序运行在Yarn上-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

4.修改yarn-site.xml

vim yarn-site.xml

修改后:

<configuration>
  <!--指定MR走 shuffle-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
  <!--指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>h01</value>
    </property>
  <!--环境变量的继承-->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>         
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

5.修改workers

vim workers

修改后:

master
slave1
slave2

注意:master这些后面不要有空格!slave2后面,不要有空的行!自己准备起多少集群,就在这里写几个,要是准备起5个集群,就写到slave4。

四、在Docker中启动集群

1.先将容器导出为镜像

docker commit master nethdp

2.启动三个终端

  • 第一条命令启动的是mastermaster节点的,所以要开放一些端口,用来访问web页面

    docker run -dit --network hadoop --hostname=master --name=master -p 9870:9870 -p 8088:8088 nethdp /bin/bash
    
  • 后面几条命令都类似,只要注意修改名字和主机名就行

    docker run -dit --network hadoop -hostname=slave1 --name=slave1 nethdp /bin/bash
    
  • 第三条命令

    docker run -dit --network hadoop -hostname=slave2 --name=slave2 nethdp /bin/bash
    

3.接下来在master主机中启动Hadoop集群

先在hadoop安装目录进行格式化操作,不格式化操作,hdfs起不来(只有第一次启动的时候需要初始化,以后启动就不需要了,先删除所有机器的 data和logs目录,然后再进行格式化):

./bin/hdfs namenode -format
image-20230919205754453

然后启动HDFS集群:

./sbin/start-dfs.sh

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后,启动yarn集群管理节点:

./sbin/start-yarn.sh

都启动完成后,使用 jps 命令查看:

jps
image-20230919210554410

可以看到,除了Jps,一共有5个进程,因为这里没有将 nameNode、ResourceManager、SecondaryNameNode分开部署,所以都在 h01这一台机器上,实际生产中,应该是需要分开部署的。

至此,Hadoop 集群已经构建好了。

五、网页访问

1.浏览器访问本机的9870端口

image-20230919210729977

2.浏览器访问本机的8088端口

image-20230919210811664

参考:

https://www.cnblogs.com/luo-c/p/15831441.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值