云服务器内容精选

  • 对系统的影响 修改磁盘选择策略为“节点磁盘可用空间块放置策略(org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceBlockPlacementPolicy)”,经过测试验证,在该测试结果中,修改前后,HDFS写文件性能影响范围在3%以内。 NameNode默认的副本存储策略为: 第一副本:存放到客户端所在节点。 第二副本:远端机架的数据节点。 第三副本:存放到客户端所在节点的相同机架的不同节点。 如还有更多副本,则随机选择其它DataNode。 “节点磁盘可用空间块放置策略”的副本选择机制为: 第一个副本:存放在客户端所在DataNode(和默认的存放策略一样)。 第二个副本: 选择存储节点的时候,先挑选2个满足要求的数据节点。 比较这2个节点磁盘空间使用比例,如果磁盘空间使用率的相差小于5%,随机存放到第一个节点。 如果磁盘空间使用率相差超过5%,即有60%(由dfs.namenode.available-space-block-placement-policy.balanced-space-preference-fraction指定,默认值0.6)的概率写到磁盘空间使用率低的节点。 第三副本等其他后续副本的存储情况,也参考第二个副本的选择方式。
  • 操作步骤 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面。 调整HDFS写数据时的依据的磁盘选择策略参数。搜索“dfs.block.replicator.classname”参数,并将参数的值改为“org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceBlockPlacementPolicy”。 表1 参数描述 参数 参数说明 dfs.block.replicator.classname 选择副本放置的DataNode的策略。 默认值为“org.apache.hadoop.hdfs.server.blockmanagement.AvailableSpaceBlockPlacementPolicy”。 保存修改的配置。保存完成后请重新启动配置过期的服务或实例以使配置生效。
  • 配置场景 本章节适用于 MRS 3.x及后续版本。 在现有的缺省DFSclient failover proxy provider中,一旦某进程中的一个NameNode发生故障,在同一进程中的所有HDFS client实例都会尝试再次连接NameNode,导致应用长时间等待超时。 当位于同一JVM进程中的客户端对无法访问的NameNode进行连接时,会对系统造成负担。为了避免这种负担,MRS集群搭载了NameNode blacklist功能。 在新的Blacklisting DFSClient failover provider中,故障的NameNode将被记录至一个列表中。DFSClient会利用这些信息,防止客户端再次连接这些NameNode。该功能被称为NameNode blacklisting。 例如,如下集群配置: NameNode:nn1、nn2 dfs.client.failover.connection.retries:20 单JVM中的进程:10个客户端 在上述集群中,如果当前处于active状态的nn1无法访问,client1将会对nn1进行20次重新连接,之后发生故障转移,client1将会连接至nn2。与此相同,client2至client10也会在对nn1进行20次重新连接后连接至nn2。这样会延长NameNode的整体故障恢复时间。 针对该情况,当client1试图连接当前处于active状态的nn1,但其已经发生故障时,nn1将会被添加至blacklist。这样其余client就不会连接已被添加至blacklist的nn1,而是会选择连接nn2。 若在任一时刻,所有NameNode都被添加至blacklist,则其内容会被清空,client会按照初始的NameNode list重新尝试连接。若再次出现任何故障,NameNode仍会被添加至blacklist。 图1 NameNode blacklisting状态图
  • 配置描述 请参考修改集群服务配置参数,进入HDFS的“全部配置”页面,在搜索框中输入参数名称。 表1 NameNode blacklisting的相关参数 参数 描述 默认值 dfs.client.failover.proxy.provider.[nameservice ID] 利用已通过的协议创建namenode代理的Client Failover proxy provider类。 将参数值设置为“org.apache.hadoop.hdfs.server.namenode.ha.BlackListingFailoverProxyProvider”, 可使用从NameNode支持读的特性。 org.apache.hadoop.hdfs.server.namenode.ha.AdaptiveFailoverProxyProvider
  • 配置场景 当Yarn本地目录和DataNode目录配置在同一个磁盘时,具有较大容量的磁盘可以运行更多的任务,因此将有更多的中间数据存储在Yarn本地目录。 目前DataNode支持通过配置“dfs.datanode.du.reserved”来配置预留磁盘空间大小。配置较小的数值不能满足更大的磁盘要求。但对于更小的磁盘配置更大的数值将浪费大量的空间。 为了避免这种情况,添加一个新的参数“dfs.datanode.du.reserved.percentage”来配置预留磁盘空间占总磁盘空间大小的百分比,那样可以基于总的磁盘空间来预留磁盘百分比。 如果用户同时配置“dfs.datanode.du.reserved.percentage”和“dfs.datanode.du.reserved”,则采用这两个参数较大的数值作为DataNode的预留空间大小。 建议基于磁盘空间设置“dfs.datanode.du.reserved”或者“dfs.datanode.du.reserved.percentage”。