本文介绍如何通过Java SDK访问KS3-HDFS服务。
1. 将ks3 hdfs shade client jar和配套的hadoop-ks3 jar部署在/mnt/kmr/hadoop/1/hadoop-3.1.1/lib
2. 更改配置
core-site.xml【更改后需要重启Hdfs和Hive服务生效】
alluxio.user.client.base.filesystem.class=alluxio.client.file.Ks3HdfsMetaFileSystem
fs.ks3.impl=alluxio.hadoop.Ks3HdfsFileSystem
alluxio.master.rpc.addresses=ks3 hdfs endpoint地址
alluxio.ks3.hdfs.mode=true
注:
- 用户需填写对应的ks3-hdfs endpoint,示例:cn-beijing-internal.ks3-dls.ksyuncs.com。
- 如使用金山云KMR产品,可通过金山云控制台进行配置操作,注意所有的配置范围均须配置。
mapred-site.xml【更改后需要重启MapReduce】
mapred.output.committer.class=org.apache.hadoop.mapred.FileOutputCommitter
mapreduce.outputcommitter.factory.scheme.ks3=org.apache.hadoop.mapreduce.lib.output.PathOutputCommitterFactory
spark-defaults【更改后需要重启Spark】
spark.driver.extraClassPath=/mnt/kmr/hadoop/1/hadoop-3.1.1/lib
spark.executor.extraClassPath=/mnt/kmr/hadoop/1/hadoop-3.1.1/lib
spark.sql.parquet.output.committer.class=org.apache.parquet.hadoop.ParquetOutputCommitter
hbase-site.xml 【更改后需要重启Hbase服务】
hbase.rootdir=ks3://${bucket-name}/hbase #将bucket name替换为开通ks3-hdfs的桶名称
hbase.wal.dir=hdfs://hdfs-ha/hbase
hbase.bulkload.staging.dir=/tmp/hbase-staging
3. 验证
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;
public class OK8 {
public static void main(String[] args) throws Exception {
String accessKey = "";
String accessSecret = "";
org.apache.hadoop.conf.Configuration conf = new org.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");
FileSystem fs2 = new Path("ks3://YourBucketName/").getFileSystem(conf);
FileStatus[] rs = fs2.listStatus(new Path("/ryan/m"));
System.out.println(rs.length);
}
}
关于KS3-HDFS更多实践详情请参见文档:KS3-HDFS实践
文档内容是否对您有帮助?
评价建议不能为空
非常感谢您的反馈,我们会继续努力做到更好!