我们在一个安全的数据中心中没有多个用户的环境中运行hadoop3.2.1。我们更喜欢为节点之间的活动进行加密数据传输。我们已经确定不需要设置kerberos,所以我正在进行数据块传输和web服务的加密。
由于hdfs-site.xml中的以下设置,我似乎启用了dfs加密:
<!-- SECURITY -->
<property>
<name>dfs.encrypt.data.transfer</name>
<value>true</value>
</property>
<property>
<name>dfs.block.access.token.enable</name>
<value>true</value>
</property>
我在数据节点上遇到了握手错误 dfs.encrypt.data.transfer
启用,直到我也设置 dfs.block.access.token.enable
.
文件系统操作现在工作得很好,但我仍然看到很多这样的情况:
2020-02-04 15:25:59,492 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
我认为sasl是kerberos的一个特性,我不应该期望它被报告为真的。听起来对吗?
是否有方法验证dfs是否在节点之间加密数据(我可以找到一个嗅探器……)
1条答案
按热度按时间5vf7fwbs1#
回答我自己的问题:我从未发现一条日志消息说“是的,您启用了加密”。但是,我运行了一个简单的基准测试,并注意到与加密一致的性能差异:
运行一个
hadoop distcp
:无密码:5分钟
3des:70分钟
rc4:12分钟
3des+aes,128位:16分钟
3des+aes,256位:18分钟
这里有一个jinja模板
hdfs-site.xml
,它为3des、aes 256位配置dfs.encrypt,如果hadoop_dfs_encrypt=true
:据我所知,除非您设置
hadoop.rpc.protection=privacy
. 所有人都认为,这需要kerberos,但我仍在研究我在那里的选择。