更新时间:2024-08-03 GMT+08:00

设置HDFS存储策略

功能简介

为HDFS上某个文件或文件夹指定存储策略。

代码样例

  1. “${HADOOP_HOME}/etc/hadoop/”下的“Hdfs-site.xml”中设置如下参数。
    <name>dfs.storage.policy.enabled</name>
    <value>true</value>
  2. 重启HDFS,如图1 所示。
    图1 重启hdfs
  3. 登录MRSManager,选择服务管理 > HDFS > 服务配置,将“参数类别”设置为“全部配置”
  4. 搜索并查看“dfs.storage.policy.enabled”的参数值是否为“true”,如果不是,修改为“true”,并单击“保存配置”,重启HDFS。
  5. 查看代码。

    如下是代码片段,详细代码请参考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.");
        }
      }