更新时间:2024-06-14 GMT+08:00
设置HDFS存储策略
功能简介
为HDFS上某个文件或文件夹指定存储策略。
代码样例
- 在“${HADOOP_HOME}/etc/hadoop/”下的“Hdfs-site.xml”中设置如下参数。
<name>dfs.storage.policy.enabled</name> <value>true</value>
- 重启HDFS,如图1 所示。
- 登录MRSManager,选择“参数类别”设置为“全部配置”。 ,将
- 搜索并查看“dfs.storage.policy.enabled”的参数值是否为“true”,如果不是,修改为“true”,并单击“保存配置”,重启HDFS。
- 查看代码。
如下是代码片段,详细代码请参考com.huawei.bigdata.hdfs.examples中的HdfsMain类。
/** * 设置存储策略 * @param policyName * 策略名称能够被接受: * <li>HOT * <li>WARM * <li>COLD * <li>LAZY_PERSIST * <li>ALL_SSD * <li>ONE_SSD * @throws IOException */ private void setStoragePolicy(String policyName) throws IOException{ if(fSystem instanceof DistributedFileSystem) { DistributedFileSystem dfs = (DistributedFileSystem) fSystem; Path destPath = new Path(DEST_PATH); Boolean flag = false; mkdir(); BlockStoragePolicySpi[] storage = dfs.getStoragePolicies(); for (BlockStoragePolicySpi bs : storage) { if (bs.getName().equals(policyName)) { flag = true; } System.out.println("StoragePolicy:" + bs.getName()); } if (!flag) { policyName = storage[0].getName(); } dfs.setStoragePolicy(destPath, policyName); System.out.println("success to set Storage Policy path " + DEST_PATH); rmdir(); } else{ System.out.println("Storage Policy is only supported in HDFS."); } }
父主题: 开发HDFS应用