Hadoop配置——两个节点(master和slave1)

阅读时长: 3 分钟 732 字

配置要求

目标是配置一个基本的 Hadoop 分布式集群:

  • 一台主节点:master

  • 一台从节点:slave1

  • 支持:HDFS + YARN

  • Java 已配置

  • Hadoop 已安装成功,路径在 /opt/hadoop(你可替换为实际路径)

使用 hadoop version 命令测试

注:前置参考资料在文末,建议先按照前置参考资料进行安装配置到 hadoop version 命令成功执行步骤,再继续参照本文章。

修改hosts、hostname

hosts: /etc/hosts 集群所有主机IP地址与对应主机名 格式:IP(空)主机名

hostname: /etc/hostname 主节点命名为master,子节点命名为slave1 把主机名直接写入此文件(只能保留一个名字),定义本机的主机名(可能需要重启生效) 使用 sudo hostnamectl set-hostname 新主机名 设置(即时生效) 使用 hostname 命令查看当前主机名

SSH 配置免密

1. 生成 SSH 密钥对(如果尚未生成)

在每台机器上执行:ssh-keygen -t rsa

一路回车即可(不要设置密码短语)。

2. 将自己的公钥添加到目标机器的 authorized_keys 中

在 master 上执行以下命令,把自己的公钥发给 slave1 :

ssh-copy-id root@localhost
ssh-copy-id root@slave1

同理,在 slave1 上执行:

ssh-copy-id root@localhost
ssh-copy-id root@master

从每台机器尝试 ssh 到其他机器(包括自己)进行验证:

ssh root@localhost
ssh root@master
ssh root@slave1

配置Hadoop的配置文件

1. core-site.xml


    hadoop.tmp.dir
    file:/opt/hadoop/tmp
    location to store temporary files

    fs.defaultFS
    hdfs://master:9000

2. hdfs-site.xml


    dfs.replication
    1

    dfs.namenode.name.dir
    file:/opt/hadoop/tmp/dfs/name

    dfs.datanode.data.dir
    file:/opt/hadoop/tmp/dfs/data

3. mapred-site.xml


  
    mapreduce.framework.name
    yarn
  

  
    yarn.app.mapreduce.am.env
    HADOOP_MAPRED_HOME=/opt/hadoop
  

  
    mapreduce.map.env
    HADOOP_MAPRED_HOME=/opt/hadoop
  

  
    mapreduce.reduce.env
    HADOOP_MAPRED_HOME=/opt/hadoop
  

4. yarn-site.xml


    yarn.resourcemanager.hostname
    master

    yarn.nodemanager.aux-services
    mapreduce_shuffle

5. workers(以前叫 slaves)

列出所有的从节点(一个 hostname 一行)。

slave1

复制配置文件

scp -r /opt/hadoop/etc/hadoop/ root@slave1:/opt/hadoop/etc/

启动 Hadoop

hdfs namenode -format
start-dfs.sh
start-yarn.sh

验证是否成功

在 master 和 slave1 分别运行:jps 你应该看到:

  • master 节点有:

NameNode

  • SecondaryNameNode

  • ResourceManager

  • slave1 节点有:

DataNode

  • NodeManager

然后运行以下命令进行测试,检查是否有问题:

hdfs dfs -ls /
hdfs dfs -mkdir /testdir
hdfs dfs -ls /
echo "Hello Hadoop" > hello.txt
hdfs dfs -put hello.txt /testdir/
hdfs dfs -ls /testdir/
hdfs dfs -cat /testdir/hello.txt
hdfs dfs -get /testdir/hello.txt ./hello_from_hdfs.txt
hdfs dfs -rm /testdir/hello.txt
hdfs dfs -rmdir /testdir
hdfs dfsadmin -report

如果出现问题请先检查防火墙是否开放相应端口。

# 开放端口
for p in 9000 9870 {50010..50020} 50075 8088 8042 9864 9866 9867; do firewall-cmd --permanent --add-port=${p}/tcp; done && firewall-cmd --reload

# 关闭端口
for p in 9000 9870 {50010..50020} 50075 8088 8042 9864 9866 9867; do firewall-cmd --permanent --remove-port=${p}/tcp; done && firewall-cmd --reload

注意:经过后期实践,发现以上端口没有涵盖Hadoop的所有所需开放端口,最方便的解决方法是暂时关闭防火墙。

前置参考资料

https://dandansad.com/2025/05/22/%e5%ae%89%e8%a3%85hadoop/

本网站已运行: 计算中...
备案 赣公网安备36072502000191 | 赣ICP备2024040374号
使用 Hugo 构建 · 主题 Stack 由 Jimmy 设计