CentOS 安装Hadoop 分布式模式[Hadoop 3 学习笔记]

本文介绍在Linux上搭建安装Hadoop 分布式环境。前面我们介绍了伪分布式模式单机模式。分布式模式也运行在多台机器上,每个Java进程独立的运行在专用的linux服务器上,是一个的Hadoop运行环境。具备分布式的全部特征而且能容忍单台机器故障,这种模式适用于生产环境。

Hadoop分布式模式介绍

Hadoop一般有三种运行模式,分别是:

  • 单机模式(Standalone Mode),默认情况下,Hadoop即处于该模式,使用本地文件系统,而不是分布式文件系统。,用于开发和调试。
  • 伪分布式模式(Pseudo Distrubuted Mode),使用的是分布式文件系统,守护进程运行在本机机器,模拟一个小规模的集群,在一台主机模拟多主机,适合模拟集群学习。
  • 完全分布式集群模式(Full Distributed Mode),Hadoop的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。

完全分布式可以参考Hadoop Cluster Setup进行搭建。

Linux服务器准备

hostname ip role
192.168.50.91 hadoop3-01 namenode
192.168.50.214 hadoop3-02 secondary namenode
192.168.50.79 hadoop3-03 datanode
192.168.50.207 hadoop3-04 datanode
192.168.50.53 hadoop3-05 datanode

后续的操作默认都是以root用户执行命令

网络设置

防火墙设置

在每台机器上都需要执行,关闭防火墙(不建议互联网环境这样做,不安全)

填入如下内容

bash 复制代码
# 如果你的Linux安装了firewalld并默认开启了,建议新手第一次安装时关闭firewalld
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl status firewalld

hostname设置

在每台机器上都需要执行,我们可以通过vim /etc/hostname编辑各个Linux的hostname来将服务器的设置为hadoop3-xx

hosts设置

在每台机器上都需要执行,我们可以通过vim /etc/hosts编辑各个Linux的hosts来设置每个服务器的ip

填入如下内容

复制代码
192.168.50.91     hadoop3-01
192.168.50.214    hadoop3-02
192.168.50.79     hadoop3-03
192.168.50.207    hadoop3-04
192.168.50.53     hadoop3-05

网络设置好后,这几台Linux可以自己互相ping一下,确认网络畅通

JDK和Hadoop3环境变量设置

在每台机器上都需要执行,我们需要通过命令vim /etc/profile编辑环境变量

设置好自己的JAVA_HOMEHADOOP_HOMEPATH

填入如下内容

ini 复制代码
# 设置haddoop相关的用户
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_ROOT=root
export YARN_NODEMANAGER_USER=root

# 指定JAVA_HOME环境变量和PATH
export JAVA_HOME=/home/thinktik/envs/jdk/aws_jdk_8
export PATH=$PATH:$JAVA_HOME/bin
# 指定HADOOP_HOME环境变量和PATH
export HADOOP_HOME=/home/thinktik/envs/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 

然后生效环境变量source /etc/profile,检查下java和hadoop是否配置好了

SSH免密设置

在每台机器上都需要执行,分布式集群各个节点初始化时可能需要通过SSH进行自动操作,所以我们需要在这几台机器上都进行同样的操作

bash 复制代码
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# 以hadoop3-01向hadoop3-02发送密钥为例(每个主机都需要向其他4个主机发送密钥)
ssh-copy-id hadoop3-02

操作完成后,我们可以在linux上互相ssh下,会发现不需要密码就可以互相ssh通

Hadoop配置

修改core-site.xml文件

在每台机器上都需要执行vim etc/hadoop/core-site.xml修改core-site.xml文件

填入如下内容

xml 复制代码
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <!--设置namenode节点,默认端口9000,这里hadoop3-01是namenode-->
        <value>hdfs://hadoop3-01:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <!--可以自己自定义hadoop临时文件的路径,我习惯的路径为$HADOOP_HOME/tmp-->
        <value>/home/thinktik/envs/hadoop/tmp</value>
    </property>
</configuration>

修改hdfs-site.xml文件

在每台机器上都需要执行vim etc/hadoop/hdfs-site.xml修改hdfs-site.xml文件

填入如下内容

xml 复制代码
<configuration>
    <property>
        <name>dfs.replication</name>
        <!--分布式集群中我们有3个datanode节点,因此副本数量replication的值也设置为3-->
        <value>3</value>
    </property>
    <property>
        <!--设置secondary namenode节点,默认端口9868,这里hadoop3-02是secondary namenode -->
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop3-02:9868</value>
    </property>
    <property>
        <name>dfs.namenode.http-address</name>
        <!--Web UI 默认允许任意IP访问,你可以精细化设置-->
        <value>0.0.0.0:9870</value>
    </property>
</configuration>

修改hadoop-env.sh文件

在每台机器上都需要执行vim etc/hadoop/hadoop-env.sh修改hadoop-env.sh文件

填入如下内容

ini 复制代码
# 指定JAVA_HOME环境变量
export JAVA_HOME=/home/thinktik/envs/jdk/aws_jdk_8
# 设置haddoop相关的用户
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_ROOT=root
export YARN_NODEMANAGER_USER=root

修改workers文件

在每台机器上都需要执行vim etc/hadoop/workers修改workers文件

填入如下内容,表示datanode的主机名

复制代码
hadoop3-03
hadoop3-04
hadoop3-05

启动hadoop3 分布式集群

我们在hadoop3-01上执行hdfs的格式化

python 复制代码
sudo bin/hdfs namenode -format

然后在hadoop3-01上正式启动

bash 复制代码
sudo sbin/start-dfs.sh

可以看到各个linux服务器上已经正确的运行了对应的hadoop2分布式集群节点 当我们访问hadoop3-01:9870进入后台网站,也会看到datanode正在正确运行

相关推荐
企业智能研究1 小时前
企业如何落地企微私域智能客服来降本增效:从技术选型到实施落地的完整指南
大数据·人工智能·企业微信·智能客服
delishcomcn1 小时前
边缘计算+AI模型:电化铝分切装备的智能化改造路径
大数据·人工智能·边缘计算
太原geo小侦探2 小时前
2026门店AI流量实测测评:同为实体门店,AI问答曝光差距在哪?
大数据·人工智能·生活·流量运营·内容运营
AI大法师2 小时前
一个机场如何被做成 IP 场景:宝可梦机场的设计方法总结
大数据·人工智能·设计模式·新媒体运营
朴马丁4 小时前
从制造到智造:PLM如何赋能企业研发创新
大数据·运维·人工智能·食品行业·流程行业plm·化工新材料行业·新能源材料行业
大大大大晴天️7 小时前
Hudi + StarRocks 查询加速:原理与实践
大数据·starrocks·hudi
夜郎king7 小时前
解决AI图文解析偏差:CodeBuddy多模型交叉校验+腾讯地图Skill经纬度定位实战
大数据·人工智能
智慧物业老杨7 小时前
物业费公共收益维修资金三类资金分账的合规管控
大数据·人工智能·物联网
不动明王19847 小时前
Presto 查询引擎内核详解:Worker 本地执行模型——从物理计划到可调度执行单元
大数据·presto·湖仓·查询引擎内核·pipeline执行
tkevinjd7 小时前
MiniCode 项目详解7:Memory 记忆系统
大数据·python·搜索引擎·llm·agent