一、 三副本策略
三副本策略的含义
1)如果写请求方所在机器是其中一个DataNode,则直接存放在本地,否则随机在集群中选择一个DataNode
2)第二个副本存放在不同于第一个副本所在的机架
3)第三个副本存放于第二个副本所在的机架,但是属于不同的节点
三副本策略的使用
需要开启机架感知功能,才能正常使用副本放置策略:
<name>net.topology.script.file.name</name> <value>/path/to/rackAware.py</value>
以下命令可以得到文件所属块的详细位置信息:
hdfs fsck <path> -files -blocks -locations
二、 关于内部认证
内部认证机制的种类
BlockToken认证(基于令牌的块级别粒度的验证)和Sasl认证
BlockToken认证
<name>dfs.block.access.token.enable</name> <value>true</value>
该配置项默认为false状态,如果启用块认证的功能,可能会对HDFS的块并发读写性能造成影响。因为里面有一些反序列化操作和很多认证操作,而且这些操作在每次的块操作中都会进行。
内部认证机制之Sasl认证
Sasl认证,是一套公开的认证机制,全称是Simple Authentication and Securiyt Layer(简单认证与安全层)
在每次的数据传输中,客户端与服务端都会进行一次握手(handshake),在Sasl认证过程中,生成的用户名、密码都被Base64编码处理过,Base64编码的处理可以防止明文的暴露。
内部认证机制的对比
共同点:
① 没有空间局部的限制,都是数据全局的认证
② 都会对数据读写效率造成一定程度的影响不同点:
① 认证维度不同:
BlockToken认证的粒度较细,是针对块级别的认证,会对每次的块操作做认证。Sasl则是对每次数据传输操作做认证② 复杂性不同:
BlockToken的认证过程相对简单、清晰。而Sasl认证体系则复杂一些,会经过握手阶段,而且中间还可以配置相关的认证防护级别(Qop)的参数。论完整度而言,Sasl比BlockToken更加完整化、体系化一些。