如何部署hadoop集群 (四)

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

Posted by Byolio on March 16, 2025
🌐 中文 English

本文主要介绍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复制文件, 会将文件的变化部分复制到目标文件中, 而不会覆盖目标文件, 速度也会更加快