学习 Alluxio(四):Java API

配置

配置 Alluxio Master 主机地址:

Configuration.set(PropertyKey.MASTER_HOSTNAME, "alluxio_master");

配置用户:

Configuration.set(PropertyKey.SECURITY_LOGIN_USERNAME, "alluxio");

默认会使用当前用户,如果当前用户没有权限,则会抛出异常 alluxio.exception.status.PermissionDeniedException: Permission denied

写文件

FileSystem fs = FileSystem.Factory.get();  
try (FileOutStream out = fs.createFile(new AlluxioURI("/tmp/test"))) {  
    out.write("it works!".getBytes("utf-8"));
} catch (AlluxioException | IOException e) {
    // do something
}

在创建文件时,可以对写操作进行配置:

CreateFileOptions createFileOptions = CreateFileOptions.defaults()  
    .setWriteType(WriteType.MUST_CACHE);
try (FileOutStream out = fs.createFile(new AlluxioURI("/tmp/test"), createFileOptions)) {  
} catch (AlluxioException | IOException e) {
    // do something
}

WriteType 选项:

  • CACHE_THROUGH
    数据同步地写入到 Alluxio 的 Worker 和底层存储系统。
  • MUST_CACHE
    数据被同步地写入到 Alluxio 的 Worker。但不会被写入到底层存储系统。这是默认写类型。
  • THROUGH
    数据被同步地写入到底层存储系统。但不会被写入到 Alluxio 的 Worker。
  • ASYNC_THROUGH
    数据被同步地写入到 Alluxio 的 Worker,并异步地写入到底层存储系统。处于实验阶段。

读文件

try (FileInStream in = fs.openFile(new AlluxioURI("/tmp/test"))) {  
    String content = IOUtils.toString(in, "utf-8");
    System.out.println(content);
} catch (AlluxioException | IOException e) {
    // do something
}

在打开文件时,可以对读操作进行配置:

OpenFileOptions openFileOptions = OpenFileOptions.defaults().setReadType(ReadType.CACHE);

try (FileInStream in = fs.openFile(new AlluxioURI("/tmp/test"), openFileOptions)) {  
} catch (AlluxioException | IOException e) {
    // do something
}

ReadType 选项:

  • CACHE_PROMOTE
    如果读取的数据在 Worker 上时,该数据被移动到 Worker 的最高层。如果该数据不在本地 Worker 的 Alluxio 存储中,那么就将一个副本添加到本地 Alluxio Worker 中。 如果 alluxio.user.file.cache.partially.read.block
    设置为 true,没有完全读取的数据块也会被 全部
    存到 Alluxio 内。 相反,一个数据块只有完全被读取时,才能被缓存
  • CACHE
    如果该数据不在本地 Worker 的 Alluxio 存储中,那么就将一个副本添加到本地 Alluxio Worker 中。如果 alluxio.user.file.cache.partially.read.block
    设置为 true,没有完全读取的数据块也会被 全部
    存到 Alluxio 内。 相反,一个数据块只有完全被读取时,才能被缓存。
  • NO_CACHE
    仅读取数据,不在 Alluxio 中存储副本。

参考

  • Alluxio Java Client – Docs | Alluxio

原文 

http://dyingbleed.com/alluxio-4/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 学习 Alluxio(四):Java API

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址