MAPREDUCE服务 MRS-HDFS Colocation:代码样例

时间:2024-06-19 16:04:42

代码样例

完整样例代码可参考com.huawei.bigdata.hdfs.examples.ColocationExample。

在运行Colocation工程时,需要将HDFS用户绑定supergroup用户组。

  1. 初始化

    使用Colocation前需要进行kerberos安全认证。

    private static void init() throws IOException {
        LoginUtil.login(PRNCIPAL_NAME, PATH_TO_KEYTAB, PATH_TO_KRB5_CONF, conf);
      }
  2. 获取实例

    样例:Colocation的操作使用DFSColocationAdmin和DFSColocationClient实例,在进行创建group等操作前需获取实例。

    public static void main(String[] args) throws IOException {
        init();
        dfsAdmin = new DFSColocationAdmin(conf);
        dfs = new DFSColocationClient();
        dfs.initialize(URI.create(conf.get("fs.defaultFS")), conf);
        createGroup();
        put();
        delete();
        deleteGroup();
        dfs.close();
        dfsAdmin.close();
      }
  3. 创建group

    样例:创建一个gid01组,组中包含3个locator。

      private static void createGroup() throws IOException {
        dfsAdmin.createColocationGroup(COLOCATION_GROUP_GROUP01,
            Arrays.asList(new String[] { "lid01", "lid02", "lid03" }));
      }
  4. 写文件,写文件前必须创建对应的group
    样例:写入testfile.txt文件。
     private static void put() throws IOException {
        FSDataOutputStream out = dfs.create(new Path("/testfile.txt"), true,
            COLOCATION_GROUP_GROUP01, "lid01");
        // 待写入到HDFS的数据.
        byte[] readBuf = "Hello World".getBytes("UTF-8");
        out.write(readBuf, 0, readBuf.length);
        out.close();
      }
  5. 删除文件
    样例:删除testfile.txt文件。
     public static void delete() throws IOException {
        dfs.delete(new Path("/testfile.txt"));
      }
  6. 删除group
    样例:删除gid01。
     private static void deleteGroup() throws IOException {
        dfsAdmin.deleteColocationGroup(COLOCATION_GROUP_GROUP01);
      }
support.huaweicloud.com/devg-mrs/mrs_06_0130.html