基于docker搭建hadoop集群 (搭建hadoop分布式集群的详细教程)

Hadoop集群搭建是后续学习Hadoop、Hive、Spark等大数据组件的基础,为了可以动手实操,加深对知识的理解,我们必须在电脑上搭建起一套Hadoop集群。

Hadoop集群模式

Hadoop集群部署有如下三种模式

  • 本地(Local)模式
  • 在本地模式下,Hadoop并不实际运行在一个真正的分布式集群上,而是将所有的计算任务都在单台计算机上执行。这种模式主要用于开发、测试和调试Hadoop程序,因为它不需要配置大规模的集群环境。
  • 伪分布式(Pseudo-Distributed)模式
  • 在伪分布式模式下,Hadoop集群运行在单个物理计算机上,但每个Hadoop组件(如HDFS、YARN、MapReduce)都在不同的进程中运行。这样,我们可以模拟一个真实的分布式环境,进行开发和测试。通常用于学习和小规模数据集的处理。
  • 完全分布式(Fully-Distributed)模式
  • 完全分布式模式是Hadoop的真正分布式集群部署方式。在这种模式下,Hadoop集群由多台物理计算机组成,每台计算机运行一个或多个Hadoop组件,形成一个大规模的分布式环境。通常用于处理大规模数据集,实现高可用性和负载均衡。

Hadoop集群的关键组件

  • HDFS(Hadoop Distributed File System):用于存储大规模数据的分布式文件系统,将数据切分成块并分布在不同的节点上。
  • YARN(Yet Another Resource Negotiator):资源管理器,负责分配集群中的计算资源给不同的任务。
  • MapReduce:分布式计算框架,用于处理大规模数据的计算任务。
  • Hadoop伪分布式集群部署

由于机器的性能问题,我们仅搭建伪分布式集群用来日常学习。

  1. 查看Java环境是否正常

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

我这里安装的java1.8版本,注意java安装的目录不要有空格

2. *载下**Hadoop相关资源

  • Hadoop3.1.0版本的安装包:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.0/hadoop-3.1.0.tar.gz
  • Windows环境安装所需的bin文件包(我们这里选择3.1.0):
  • https://gitee.com/nkuhyx/winutils,里面选3.1.0版本

3. 解压安装包并替换bin文件

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

将压缩包解压后,把apache-hadoop-3.1.0-winutils-master目录下的bin文件拷贝到hadoop-3.1.0目录下。

4. 配置Hadoop环境变量

配置系统变量HADOOP_HOME

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

修改path:

新建环境变量%HADOOP_HOME%\bin和%HADOOP_HOME%\sbin

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

5. 查看环境变量是否配置成功

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

6. 配置Hadoop配置文件

6.1 配置core-site.xml

core-site.xml:集群全局参数。用于定义系统级别的参数,如HDFS、URL、Hadoop的临时目录等

D:/APP/Hadoop/hadoop-3.1.0目录下新建data文件夹,在data下新建tmp、namenode、datanode三个空文件夹

<configuration>
    <property>
        <!--临时文件夹 -->
        <name>hadoop.tmp.dir</name>
        <value>/D:/APP/Hadoop/hadoop-3.1.0/data/tmp</value>
    </property>
    <property>
        <!--文件系统主机和端口 -->
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

6.2 配置mapred-site.xml

mapred-site.xml:MapReduce参数,包括JobHistory Service和应用程序参数两部分内容,如作业名称、内存和cpu等参数。

<configuration>
    <property>
       <!--指定执行MapReduce作业的运行时框架 -->
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
    </property>
    <property>
       <!--指定JobTracker机器和端口 -->
       <name>mapred.job.tracker</name>
       <value>hdfs://localhost:9001</value>
    </property>
</configuration>

6.3 配置yarn-site.xml

yarn-site.xml:集群资源管理系统参数。配置ResourceManager、NodeManager的通信端口,web监控端口等。

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hahoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

6.4 配置hdfs-site.xml

hdfs-site.xml:HDFS参数。如名字节点和数据节点的存放位置、文件副本的个数、文件读取权限等。

<configuration>
    <!-- 这个参数设置为1,因为是单机版hadoop -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/D:/APP/Hadoop/hadoop-3.1.0/data/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/D:/APP/Hadoop/hadoop-3.1.0/data/datanode</value>
    </property>
</configuration>

6.5 配置hadoop-env.cmd

set JAVA_HOME=D:\APP\Java

7.启动Hadoop集群

7.1 格式化namenode

在cmd中进入D:\APP\Hadoop\hadoop-3.1.0\bin目录

输入命令:

hdfs namenode -format

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

如果没有报错,则说明配置文件没有问题。

7.2 启动hdfs

在cmd中进入D:\APP\Hadoop\hadoop-3.1.0\sbin目录

输入命令:

start-dfs.cmd

此时会弹出两个窗口

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

7.3 启动yarn

输入命令:

start-yarn.cmd

遇到问题,报错如下:

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

报错解决:

将D:\APP\Hadoop\hadoop-3.1.0\share\hadoop\yarn\timelineservice\hadoop-yarn-server-timelineservice-3.1.0.jar放到目录D:\APP\Hadoop\hadoop-3.1.0\share\hadoop\yarn\lib下即可。

重新启动yarn,此时会弹出如下两个窗口

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

7.4 同时启动hdfs和yarn服务

我们可以使用如下命令同时启动两个服务

start-all.cm

7.5 查看Hadoop相关服务进程

jps

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

如图所示,hadoop相关服务都已经正常运行。

7.6 WebUi访问,观察服务是否正常

访问namenode

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

访问R esourceManager页面http://localhost:8088/cluster

结果页面无法打开。经排查我的原因是hosts文件存在问题

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

修改hosts文件后,resourceManage页面可以正常打开

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

7.7 关闭服务

stop-all.cmd

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群

至此,Windows下的Hadoop集群搭建成功。

欢迎大家关注我的公众号,后续会不断更新大数据相关技术文章。

hadoop集群搭建完成后打不开网页,基于docker搭建hadoop集群