有很多时候,会遇到在非节点服务器上调用hadoop命令需求,考虑到尽量不增加集群负载,比如在一个节点上运行一个常驻服务提供接口,此时就可以那hadoop面向使用需要的资源拉出来作为一个单独的客户端使用,也就是下图中的这些文件夹

但是!!!!!!!客户端拿出来之后,一定要注意一个相当关键的问题,不要让执行客户端的服务器持有集群的ssh公钥串,正常执行hadoop fs等命令时,不涉及节点直接的交互,但如果你没有其他反制措施,比如改了客户端的源码加校验这种,则一旦对方持有了ssh串就会通过Linux的身份校验,说白了别人从官网下载一个完整包,在持有一个同名用户,拿着你的ssh串,替换你的配置文件就能操作你的集群了,很危险的事情这是。所以分离客户端这个事情,技术上能做,如果你没有专业的引擎开发人员尽量不要做
如果确实需要,则在谨慎保护公钥串的前提下,关闭集群管理用户的ssh登录以及密码登录,改成强制使用认证登录
bash
/etc/ssh/sshd_config
PermitRootLogin no # 禁止 root 直接登录,开启后无法 ssh root@server_ip
PasswordAuthentication no # 禁用密码认证
PubkeyAuthentication yes # 启用公钥认证
AllowUsers admin hdfs yarn # 只允许特定用户白名单方式ssh节点,需要开启公钥认证
其他需要格外注意的,还有RMUI上任务的kill按钮,这个在源码里面注释掉,发个版就行了
bash
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/webapp/AppBlock.java
