[HDFS]跨集群访问报错-No common protection layer between client and server

244 阅读1分钟

问题描述

从一个集群的边缘节点访问另一个配置了互信的集群的HDFS时出现如下报错:

# hadoop fs -ls hdfs://node001:8020/

... ...

23/09/20 14:03:54 WARN ipc.Client: Couldn't setup connection for test_user@HADOOP.COM to node001/55.52.196.11:8020

javax.security.sasl.SaslException: No common protection layer between client and server

... ...

原因分析

客户端和服务器端上的hadoop.rpc.protection参数值不一致导致提交任务失败。

参数说明: 数据可通过以下任一方式在节点间进行传输:

  • privacy:指数据在鉴权及加密后再传输,这种方式会降低性能;
  • auhtentication:指数据在鉴权后直接传输,不加密,这种方式能保证性能但存在安全风险;
  • integrity:指数据直接传输,既不加密也不鉴权,为保证数据安全,请谨慎使用这种方式。

解决办法

查看两边的hadoop.rpc.protection值,其中一个集群为auhtentication,另一个集群为privacy,将前者调整为privacy,重启datanode,问题解决。