HDFS EC 血泪史(献给想要在HDFS启用EC的朋友们)

如果想在你的hdfs 上开启EC,并使用HDP,或是CDH版本的时候,请仔细阅读,并认真想清楚你的场景。

我们是由于一些原因,先用HDP 3.1.5 腾讯云的虚拟机在搭建了一套hadoop。然后在这个期间,想利用HDFS EC来节省使用容量。

但是后续我们会利用腾讯云混合云,把一些物理服务器加入到这个集群,然后将这些cvm datanode节点下线。来控制成本。

这个时候问题来了。

在HDP 3.1.5 版本里,hadoop hdfs 版本是3.1.1 在这个版本里EC功能又很多的bug ,其中对大的一个问题就是,在cvm节点下线中产生的bug。

我一次性下线了10台节点,但是由于之前datanode jvm 配置8G ,导致datanode jvm 频繁Full GC 。有很多出现卡住,假死的情况。所以触发了 HDFS-14946 bug。

HDFS-14946 (https://issues.apache.org/jira/browse/HDFS-14946)

就是多个节点同时下线,产生的EC数据无法重建问题。直接影响线上数据损坏,不可用。

另外还有一个HDFS 管理页面,首页里的Number of Under-Replicated Blocks 与 Datanode 页面里的 节点的 Number of Under-Replicated Blocks 总和不一致。

首页里是0, 节点页面,各个退役的节点里还有 几个,几十个block 。一直不动。很难判断是否真全部退役完毕。不知道该不该关闭、删除这些退役的机器。

另外如果EC block group中数据miss block 情况,在hdfs 管理页面不会显示(如果是传统3副本情况,如果有3个机器down了,管理页面会红字显示,那些文件miss)

很多的问题、bug都在HDFS 3.3 版本中修复。

另外开启EC 写入性能会比三副本下降65% 。

https://www.slideshare.net/HadoopSummit/hdfs-erasure-coding-in-action(yahoo japan PPT分享的测试数据。) 具体大家可以测试下。

总结,HDP 3.1.5 想用EC 那么就不要退役下线节点。或是下线节点的时候,一次2台退役。

你可能感兴趣的:(HDFS EC 血泪史(献给想要在HDFS启用EC的朋友们))