最近更新时间:2024-12-03 10:07:19
本文介绍如何通过Java SDK访问KS3-HDFS服务。
登录KMR控制台。
选择 存算分离 -> 点击编辑 -> 开启存算分离。
填入AK/SK信息。
点击确认。
1. 请确认输入的AK/SK有bucket-name的对应操作权限。
2. 空间策略设置详情请参见文档:空间策略设置。
在配置选项卡中,会自动填写相关配置项默认值,请根据实际情况修改,并保存。
重启HDFS,MapReduce,Spark,HBase和Hive服务。
验证。
hdfs dfs -ls ks3://{bucket-name}/
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount ks3-input ks3-output
使用示例:
import alluxio.conf.PropertyKey;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
publicclassOK8 {
publicstaticvoidmain(String[] args)throws Exception {
StringaccessKey="";
StringaccessSecret="";
org.apache.hadoop.conf.Configurationconf=neworg.apache.hadoop.conf.Configuration();
conf.set(PropertyKey.MASTER_RPC_ADDRESSES.getName(), "gateway地址");
conf.set("alluxio.user.client.base.filesystem.class", "alluxio.client.file.Ks3HdfsMetaFileSystem");
conf.set("alluxio.ks3.hdfs.mode", "true");
conf.set("fs.ks3.AccessKey", accessKey);
conf.set("fs.ks3.AccessSecret", accessSecret);
conf.set("fs.ks3.endpoint", "ks3-cn-beijing.ksyuncs.com");
conf.set("fs.ks3.impl", "alluxio.hadoop.Ks3HdfsFileSystem");
FileSystemfs2=newPath("ks3://YourBucketName/").getFileSystem(conf);
FileStatus[] rs = fs2.listStatus(newPath("/ryan/m"));
System.out.println(rs.length);
}
}
在对象存储系统中,约定俗称用以"/"结尾的空文件代表这是一个文件夹。
禁止在ks3上存在同名的文件和文件夹,比如如果同时存在ks3 key为"/dir1/dir2/hello_world","/dir1/dir2/hello_world/",可能会导致KS3-HDFS发生异常行为。
关于KS3-HDFS更多实践详情请参见文档:KS3-HDFS实践
纯净模式