关于HDFS数据存储路径

hdfs中的绝对路径,就比较简单,就是类似/a/b/c/xxx这样的,就是从根目录开始,通过这个名字找到文件(目录),这个Linux的绝对路径是一样的概念。

由于我们并不会像操作Linux文件系统一样cd到hdfs的某个目录下,于是,hdfs中一般来说没有“当前目录”的概念(用fuse或者NFS情况除外)。于是一个hadoop fs -ls a/b/c/xxx这样的访问,就是“相对于hdfs上的当前用户目录”而说的相对路径。因此,如果你用一个叫XYZ的用户访问a/b/c/xxx的时候,前面就要拼上用户目录的前缀,就是/user/XYZ/a/b/c/xxx了(前面这个home目录的前缀“/user”其实也可以通过自行定义dfs.user.home.dir.prefix这个配置指定个别的)。

可以参考DistributedFileSystem.java中的实现。这个类的open(Path f, final int bufferSize)方法中,有如下的实现:

public FSDataInputStream open(Path f, final int bufferSize)
      throws IOException {
    statistics.incrementReadOps(1);
    Path absF = fixRelativePart(f);
    return new FileSystemLinkResolver<FSDataInputStream>() {

这里面的fixRelativePart方法就是将一个相对路径转换成绝对路径的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马超的博客

谢谢大佬的赞赏 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值