HDFS命令和java API

本文介绍了如何在Hadoop环境中使用HDFS的Shell命令和Java API进行文件操作,包括创建、删除目录,上传、下载文件等,并提供了Java程序示例及执行步骤。
摘要由CSDN通过智能技术生成

熟练掌握HDFS的Shell访问和Java API访问

HDFS命令和java API的基本操作

实验步骤

  1. 搭建Hadoop伪分布式模式、或者完全分布式模式
  2. Windows里安装配置JDK+Eclipse+Maven
  3. 在Eclipse里新建Maven Project,新建包,新建class
  4. 编程上述4个Java程序
  5. 虚拟机的namenode主机上,启动Hadoop
  6. 在eclipse里运行上述4个Java程序
  7. 使用hdfs的shell命令查看运行结果
  8. 使用web console查看运行结果

Linux的shell命令
常用的linux的shell命令:
cd /aa 转到/aa目录
pws 显示当前目录
ll /aa 显示/aa目录
mkdir /aa 新建/aa目录
rm /aa/out.txt 删除/aa目录下的out.txt文件
cat /aa/out.txt 查看/aa目录下的out.txt文件的内容
vi /aa/out.txt 编辑/aa目录下的out.txt文件的内容
ifconfig 查看IP地址
ip addr 查看IP地址
hdfs的shell命令
hdfs的shell命令,有三种形式,用前面两个。
hdfs dfs √
hadoop fs √
hadoop dfs ×
常用的hdfs的shell命令:
hdfs dfs -ls / 查看hdfs根目录下文件和目录
hdfs dfs -ls -R / 查看hdfs根目录下包括子目录在内的所有文件和目录
hdfs dfs -mkdir /aa/bb 在hdfs的/aa目录下新建/bb目录
hdfs dfs -rm -r /aa/bb 删除hdfs的/aa目录下的/bb目录
hdfs dfs -rm /aa/out.txt 删除hdfs的/aa目录下的out.txt文件

hdfs dfs -put anaconda-ks.cfg /aa 把本地文件上传到hdfs
hdfs dfs -copyFromLocal a.txt / 把本地文件上传到hdfs
hdfs dfs -get /bb.txt bbcopy.txt 从hdfs下载文件到本地
hdfs dfs -copyToLocal /bb.txt bbcopy.txt 从hdfs下载文件到本地

1、获取 HDFS 文件系统

public static FileSystem getFileSystem() throws IOException, URISyntaxException{
        //1、获取配置文件
        Configuration conf = new Configuration();
        
//        FileSystem fs = FileSystem.get(conf);//集群环境下直接获取默认文件系统
        //2、指定的文件系统地址
        URI path = new URI("hdfs://test:9000");
        //3、返回指定的文件系统地址 ------本地测试使用此方法
        FileSystem fs = FileSystem.get(path, conf);
        //4、此处关闭文件系统流会报错,导致之后的操作无法进行
        /**
         * fs.close();
         * Exception in thread "main" java.io.IOException: Filesystem closed
    at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:795)
    at org.apache.hadoop.hdfs.DFSClient.primitiveMkdir(DFSClient.java:2743)
    at org.apache.hadoop.hdfs.DFSClient.mkdirs(DFSClient.java:2724)
    at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:870)
    at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:866)
    at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
    at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirsInternal(DistributedFileSystem.java:866)
    at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirs(DistributedFileSystem.java:859)
    at org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:1817)
    at com.dajiangtai.hdfsJavaAPI.FileTest.mkdir(FileTest.java:33)
    at com.dajiangtai.hdfsJavaAPI.FileTest.main(FileTest.java:46)

         * 
         * */
        return fs;
    }
 



    如果放到 hadoop 集群上面运行,获取文件系统可以直接使用 FileSystem.get(conf)。

2、创建文件目录

//创建文件目录
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值