hadoop的hdfs中避免因节点掉线产生网络风暴
控制节点掉线RPC风暴的参数
三个参数都是hdfs-site.xml中参数,具体可以参考apache hadoop官网,其实块的复制速度有两个方面决定,一是namenode分发任务的速度,二则是datanode之间进行复制的速度。前者可以理解成入口,后者可以当成出口。
1.入口参数:从namenode层面控制任务分发,这个参数修改必须重启namenode,不需要重启datanode.
dfs.namenode.replication.work.multiplier.per.iteration
这个参数apache hadoop默认值2,cdh集群默认值10
这个参数决定了当NN与DN进行心跳(3s)发送任务列表时,告服务器托管网诉每个DN可以进行复制的block数量。比如集群有500个节点,这个值设置为10,那么一次心跳namnode可以发送d服务器托管网atanode复制的数据块数量是10*500=5000块。假如一个节点掉线/退役有800000块block需要复制,则namenode需要多长时间可以将待复制块的任务分发完给datanode呢。
极限计算的结果:
任务分发时间=待复制block总数/(集群活跃dn*参数值)*心跳时间
time=800000/(500*10)=160次心跳*3s/每次心跳=480s=8分钟
所以节点越多,会分发任务越快,分发速度跟节点数和这个参数都成正比
2.出口参数:相比上面从nanode任务分发控制,下面两个使用datanode层面控制,这两个参数也需要重启namenode
1.dfs.namenode.replication.max-streams
apache hadoop默认值是2,cdh集群默认20。
这个参数含义是控制datanode节点进行数据复制的最大线程数,从上面我们知道block的复制优先级分成5种。这个参数控制不包含最高优先级的块复制。即除最高优先级的复制流限制
2.dfs.namenode.replication.max-streams-hard-limit
这个值apache hadoop默认值2,cdh集群默认值40
这个参数含义是控制datanode所有优先级块复制的流个数,包含最高优先级;一般上面和上面两个参数互相的配合使用。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
是什么 是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。 只有通过这个镜像文件才能生成Do…