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正在正确运行

相关推荐
IT学长编程1 天前
计算机毕业设计 基于大数据技术的医疗数据分析与研究 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·hadoop·机器学习·数据分析·毕业设计·毕业论文·医疗数据分析
lwprain1 天前
龙蜥8.10中spark各种集群及单机模式的搭建spark3.5.6(基于hadoop3.3.6集群)
大数据·ajax·spark
电商软件开发 小银1 天前
本地生活服务平台创新模式观察:积分体系如何重塑消费生态?
大数据·人工智能·数字化转型·私域运营·消费者心理学
chenglin0161 天前
TOGAF——ArchiMate
大数据
扬帆起航131 天前
亚马逊新品推广破局指南:从手动试错到智能闭环的系统化路径
大数据·数据库·人工智能
Elastic 中国社区官方博客1 天前
使用 LangExtract 和 Elasticsearch
大数据·人工智能·elasticsearch·搜索引擎·ai·信息可视化·全文检索
IT学长编程1 天前
计算机毕业设计 基于深度学习的酒店评论文本情感分析研究 Python毕业设计项目 Hadoop毕业设计选题 机器学习选题【附源码+文档报告+安装调试】
hadoop·python·深度学习·机器学习·数据分析·毕业设计·酒店评论文本情感分析
小朋友,你是否有很多问号?1 天前
Mac安装hadoop
hadoop·macos
Leinwin1 天前
OpenAI已正式开放ChatGPT Projects
大数据·人工智能·microsoft·copilot·azure
潘达斯奈基~1 天前
Google AI Studio使用1:创建Flink测试题APP
大数据·flink·aigc