根据Hadoop 3.x发行说明,他们引入了擦除编码来克服存储问题。
纠删码是一种持久存储数据的方法,与复制相比,可显著节省空间。像 Reed-Solomon (10,4) 这样的标准编码具有 1.4 倍的空间开销,而标准 HDFS 复制的开销为 3 倍。
由于纠删码在重建过程中会产生额外的开销,并且主要执行远程读取,因此传统上用于存储较冷、访问频率较低的数据。用户在部署此功能时应考虑纠删码的网络和 CPU 开销。
我正在寻找相同的示例配置文件。
此外,即使在设置 ec 策略并使用hdfs ec-enablePolicy
启用它之后,该策略是否仅适用于冷文件,或者默认情况下实施它以存储整个 hdfs 文件?
在hadoop3中,我们可以对HDFS中的任何folder
启用擦除编码策略。
列出支持的擦除策略的命令:
./bin/hdfs ec -listPolicies
启用 XOR-2-1-1024k 擦除策略的命令:
./bin/hdfs ec -enablePolicy -policy XOR-2-1-1024k
将擦除策略设置为 HDFS 目录的命令:
./bin/hdfs ec -setPolicy -path /tmp -policy XOR-2-1-1024k
命令将策略集获取到给定目录:
./bin/hdfs ec -getPolicy -path /tmp
从目录中删除策略的命令,即取消设置策略:
./bin/hdfs ec -unsetPolicy -path /tmp
禁用策略的命令:
./bin/hdfs ec -disablePolicy -policy XOR-2-1-1024k
编辑:
一个名为user_ec_policies.xml.template
的示例 EC 策略 XML 文件位于 Hadoop conf 目录 ($HADOOP_HOME/etc/hadoop/) 中,可供参考。
默认情况下REPLICATION
策略始终处于启用状态。默认情况下,纠删码策略处于禁用状态。
纠删码仅适用于选定的HDFS
路径,例如,如果在设置策略时选择/erasure_code_data 作为路径,则 EC 仅适用于此目录。 HDFS中已经存在的其他文件,如/tmp/user具有复制策略。