HDFS的shell和API操作

2021-06-20 22:05

阅读:612

  • 使用maven导入jar包(推荐)

    3)hdfs编程中的重要的 两个对象:

      Configuration类的介绍
      Configuration类是加载hadoop中的相应的配置文件

    Configuration conf=new Configuration(true);
    如果在这里没有在source folder中放入相应的配置文件:
    core-site.xml、hdfs-site.xml、yarn-site.xml、mapreduce-site.xml…
    那么Configuration类会自动的加载jar包中的配置文件:
    hadoop-hdfs-2.7.6.jar/hdfs-default.xml
    只有在sourcefolder中放入相应的配置时,才能够加载相应的配置,但是配置文件的名称必须是site 或者default的文件,才能够正确加载

      使用相应的方法加载配置文件:

    Configuration conf=new Configuration();
    conf.addResource(""); //这例实参的内容为配置文件的权限定名称

      FileSystem类的介绍
    获取FileSystem对象:

    //以这种方式获取的fs对象是本地的文件系统的对象,如果在windows下就是windows的对象
    Configuration conf=new Configuration();
    FileSystem fs=FileSystem.get(conf);
    //能加载自己集群的文件系统对象
    conf.set("fs.defaultFS", "hdfs://hadoop01:9000");

    解决编程时的权限问题:
     由于hdfs文件系统是基于用户的,在Windows下eclipse中操作hdfs默认的用户是Windows的用户,在操作hdfs文件系统时没有权限的,所以在做读写操作时,可能会报出:
    技术分享图片
    解决方案
    (1)在运行时使用run configuration,配置相应的参数:-DHADOOP_USER_NAME=hadoop(指定运行用户)
    (2)在代码中指定用户:FileSystem.get(newURI("hdfs://hadoop01:9000"),conf,"hadoop");
    (3)在代码中指定jvm运行时使用的用户System.setProperty("HADOOP_USER_NAME", "hadoop"); 这里需要使用run configuration运行
    (4)在Windows中添加一个hadoop用户,不建议使用
    如果以上方式仍然出现问题,那么就需要在window的path中配置一个环境变量:
    DHADOOP_USER_NAME = hadoop 即可。


  • 评论


    亲,登录后才可以留言!