hadoop2.6.0源码剖析-客户端(第二部分--DistributedFileSystem)

DistributedFileSystem这个类在包package org.apache.hadoop.hdfs中,为用户开发基于HDFS的应用程序提供了API,这个类有几个成员变量:

private Path workingDir;
private URI uri;
private String homeDirPrefix = DFSConfigKeys.DFS_USER_HOME_DIR_PREFIX_DEFAULT;

DFSClient dfs;
private boolean verifyChecksum = true;

DistributedFileSystem类的继承关系如下:

既然DistributedFileSystem类是用来对开发人员提供api接口服务的,那么开发人员该如何去使用它呢?我们看一下下面的例子:

//读取配置文件

Configuration conf = new Configuration();

//获取文件系统

FileSystem fs = FileSystem.get(URI.create("hdfs://hadoop1:9000"),conf);

Path srcPath = new Path(path);

//调用mkdir()创建目录,(可以一次性创建,以及不存在的父目录)

boolean flag = fs.mkdirs(srcPath);

if(flag) {

    System.out.println("create dir ok!");

}else {

    System.out.println("create dir failure");

}

//关闭文件系统

fs.close();

我们发现,例子中直接使用了DistributedFileSystem父类FileSystem,而没有使用DistributedFileSystem,这个是为什么呢?接下来我们到FileSystem类的get方法中:

/** Returns the FileSystem for this URI's scheme and authority.  The scheme
   * of the URI determines a configuration property name,
   * <tt>fs.<i>scheme</i>.class</tt> whose value names the FileSystem class.
   * The entire URI is passed to the FileSystem instance's initialize method.
   */
  public static FileSystem get(URI uri, Configuration conf) throws IOException {

    //uri是hdfs文件的路径

    //下面用到了URI类,关于这个类的使用,可以到https://blog.csdn.net/weixin_39935887/article/details/81432814https://www.jianshu.com/p/58b9245a6f16中了解详情
    String scheme = uri.getScheme();//获取一个url中的协议,比如https或者http等
    String authority = uri.getAuthority();

    if (scheme == null && authority == null) {     // use default FS
      return get(conf);//如果协议和域名都为null,那么就采用默认的FS
    }

    if (scheme != null && a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值