如何部署hadoop集群 (四)

让我们了解部分hadoop部署过程中的扩展知识

Posted by Byolio on March 16, 2025

本文主要介绍hadoop部署过程中的相关扩展内容, 以方便进一步进行接下来的hadoop部署操作

引言

我在如何部署hadoop集群 (三)中已经完成了对于虚拟机的克隆, 接下来我们需要了解一些额外的扩展知识, 以便于后续的hadoop集群部署操作

用户与用户权限

在hadoop集群启动过程中, 因为root用户的权限过大, 所以hadoop不允许我们直接使用root用户启动hadoop集群以保证hadoop集群安全, 因此我们需要使用普通用户来启动hadoop集群, 并且需要将普通用户赋予对hadoop的操作权限, 以便于普通用户可以使用hadoop集群

用户基础指令

在linux中, 我们可以使用以下指令来创建用户, 设置用户密码, 切换用户, 查看用户, 退出用户等操作

1
2
3
4
5
6
7
8
9
10
# 创建普通用户(在root下执行)
useradd username
# 设置普通用户密码(在root下执行)
passwd username
# 切换用户
su username
# 查看当前用户
whoami
# 退出当前用户
exit
  • 注 : username为用户名称, 可以根据需要进行修改

    如何解决hadoop集群因为使用root用户而启动失败的问题

    先将自己移动到hadoop所在的目录下, 然后使用以下命令切换hadoop的所有者和组操作权限

    1
    
    chown -R username:usernameGroup hadoopdirectory
    
  • 注 : username为用户名称, usernameGroup为用户组名称, hadoopdirectory为hadoop所在的目录名称, 可以根据需要进行修改 这样便可以赋予普通用户对hadoop文件夹的操作权限, 以便于普通用户可以使用hadoop集群

    解决普通用户间的ssh免密登录问题

    不同用户使用的ssh密钥是不同的, 因此我们需要将新建的普通用户的ssh公钥发送到hadoop集群中其他服务器用户, 以便于其他用户通过ssh连接该普通用户时可以进行免密登录, 具体指令可以查看之前的内容, 将其中的ssh-copy-id hostname改为ssh-copy-id username@hostname即可

  • 注 : username为用户名称, hostname为主机名, 可以根据需要进行修改, 只有部署集群的普通用户之间才需要进行此操作

scp与rsync指令进行传输

scp和rsync是linux中常用的文件传输指令, 可以用于将文件从一台服务器传输到另一台服务器, 也可以用于将文件从一台服务器传输到本地, 也可以用于将文件从本地传输到另一台服务器, 具体指令如下 (使用前建议先配置ssh免密登录):

1
scp -r /home/user/source/ username@hostname:/path/to/destination
  • 注 : source为源文件路径, username为目标服务器的用户名, hostname为目标服务器的主机名, /path/to/destination为目标文件路径
    1
    
    rsync -av /home/user/source/ username@hostname:/path/to/destination
    
  • 注 : source为源文件路径, username为目标服务器的用户名, hostname为目标服务器的主机名, /path/to/destination为目标文件路径

如何关闭防火墙

hadoop集群在使用过程中的防火墙一般是加在hadoop集群整体上, 因此我们需要关闭每个服务器的防火墙, 以便于hadoop集群可以正常ping通使用, 具体指令如下:

1
2
systemctl stop firewalld
systemctl disable firewalld
  • 注 : 以上指令需要在每个hadoop集群服务器上执行

FAQ

切换用户与组后使用普通用户仍然存在权限问题

如果切换用户与组后使用普通用户仍然存在权限问题, 可以尝试使用以下指令来赋予该用户对hadoop文件夹的操作权限

1
chmod -R 777 hadoopdirectory
  • 注 : hadoopdirectory为hadoop所在的目录名称, 可以根据需要进行修改, 777为赋予所有人全部权限, 如不想赋予所有人全部权限, 可以根据需要进行修改

    为什么有时候使用scp和rsync使用后会复制目录本身

    scp和rsync其中的/home/user/source/中的最后一个斜杆不可以被删除, 否则会出现在复制目录中的文件的同时也复制了目录本身

    rsync是否支持在两个远程主机之间直接复制文件或目录

    rsync不支持在两个远程主机之间直接复制文件或目录, 使用会报错, 因此如果需要在两个远程主机之间直接复制文件或目录, 需要使用scp指令

    rsync和scp有何区别

    scp是覆盖复制, 即使目标文件已经存在, 也会覆盖目标文件, 而rsync是增量复制, 即如果目标文件已经存在, 则只会复制文件的变化部分, 不会覆盖目标文件
    因此如果第一次使用scp复制文件, 后续如果修改了文件, 则使用rsync复制文件, 会将文件的变化部分复制到目标文件中, 而不会覆盖目标文件, 速度也会更加快