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 小时前
眼儿媚·秋雨绵绵窗暗暗
大数据·网络·服务发现·媒体
Json_181790144802 小时前
商品详情接口使用方法和对接流程如下
大数据·json
Data 3172 小时前
Hive数仓操作(十七)
大数据·数据库·数据仓库·hive·hadoop
bubble小拾6 小时前
ElasticSearch高级功能详解与读写性能调优
大数据·elasticsearch·搜索引擎
ZOHO项目管理软件6 小时前
EDM平台大比拼 用户体验与营销效果双重测评
大数据
HyperAI超神经7 小时前
Meta 首个多模态大模型一键启动!首个多针刺绣数据集上线,含超 30k 张图片
大数据·人工智能·深度学习·机器学习·语言模型·大模型·数据集
Hello.Reader9 小时前
TopK算法在大数据重复数据分析中的应用与挑战
大数据·算法·数据分析
数据龙傲天9 小时前
1688商品API接口:电商数据自动化的新引擎
java·大数据·sql·mysql
Elastic 中国社区官方博客9 小时前
Elasticsearch:使用 LLM 实现传统搜索自动化
大数据·人工智能·elasticsearch·搜索引擎·ai·自动化·全文检索
Jason不在家11 小时前
Flink 本地 idea 调试开启 WebUI
大数据·flink·intellij-idea