第一种、shell交互

官方文档:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0/hadoop-project-dist/hadoop-common/FileSystemShell.html

例子:

1、 hdfs dfs -ls [-R] <args>

-R:递归列出目录所有内容

hdfs dfs -ls  /     :列出根目录的内容

2、hdfs dfs -put <localsrc> ... <dst>  上传文件

3、hdfs dfs -text <src> 或者  hdfs dfs -cat URI [URI ...]  查看文件内容

4、hdfs dfs -mkdir [-p] <paths>  创建文件夹

-p:自动创建父目录

5、hdfs dfs -rm [-f] [-r|-R] [-skipTrash] URI [URI ...] 删除文件

第二种、Java交互

package rdb.com.hadoop01;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.Progressable;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/*
 * Hadoop HDFS Java API 操作
 */
public class HDFSAPP {
    
    public static final String HDFS_PATH="hdfs://192.168.44.183:8020";
    
    FileSystem fileSystem = null;
    Configuration configuration = null;
    
    @Before
    public void setUp()throws Exception{
        configuration = new Configuration();
        fileSystem = FileSystem.get(new URI(HDFS_PATH), configuration,"hadoop");
        
    }
    
    /**
     * 创建文件夹
     * @throws IOException 
     * @throws IllegalArgumentException 
     */
    @Test
    public void mkdir() throws Exception{
        //创建文件夹
        fileSystem.mkdirs(new Path("/javaApi/test01"));
    }
    
    /**
     * 创建文件
     *@throws Exception
     */
    @Test
    public void create()throws Exception{
        FSDataOutputStream outPut = fileSystem.create(new Path("/javaApi/test01/a.txt"));
        outPut.write("hadoop 分布式文件系统:HDFS".getBytes());
        outPut.flush();
        outPut.close();
    }
    
    /**
     * 查看文件内容
     *@throws Exception
     */
    @Test
    public void cat()throws Exception{
        FSDataInputStream input = fileSystem.open(new Path("/javaApi/test01/a.txt"));
        IOUtils.copyBytes(input, System.out, 1024);
        input.close();
    }
    
    /**
     * 重命名
     *@throws Exception
     */
    @Test
    public void rename() throws Exception{
        fileSystem.rename(new Path("/javaApi/test01/a.txt"), new Path("/javaApi/test01/b.txt"));
    }
    
    /**
     * 从本地拷贝文件到hdfs
     */
    @Test
    public void copyFromLocalFile()throws Exception{
        fileSystem.copyFromLocalFile(new Path("D://PS//logo.png"), new Path("/javaApi/test01"));
    }
    
    /**
     * 从本地拷贝大文件,带进度条上传
     *@throws Exception
     */
    @Test
    public void copyFromLocalFileWithProgress()throws Exception{
        InputStream in = new BufferedInputStream(new FileInputStream(new File("D://PS//001.rar")));
        FSDataOutputStream out = fileSystem.create(new Path("/javaApi/test01/001.rar"), new Progressable() {    
            public void progress() {
                //以*表示上传进度
                System.out.print("*");
            }
        });
        IOUtils.copyBytes(in, out, 1024);
    }
    
    /**
     * 下载文件
     *@throws Exception
     */
    @Test
    public void copyToLocal()throws Exception{
        fileSystem.copyToLocalFile(false,new Path("/javaApi/test01/b.txt"), new Path("D://PS//tmp//"),true);
    }
    
    @Test
    public void listPath()throws Exception{
        FileStatus[] fileStatus = fileSystem.listStatus(new Path("/javaApi/test01"));
        for(FileStatus f:fileStatus){
            String isDir = f.isDirectory()? "文件夹" : "文件";
            String path = f.getPath().toString();
            System.out.println(isDir+":"+path);
        }
    }
    
    /**
     * 删除
     *@throws Exception
     */
    @Test
    public void delete()throws Exception{
        fileSystem.delete(new Path("/javaApi/test01"),true);
    }
    
    @After
    public void tearDown() throws Exception{
        fileSystem.close();
    }

}

HDFS学习总结之API交互的更多相关文章

  1. 深度学习常用数据集 API(包括 Fashion MNIST)

    基准数据集 深度学习中经常会使用一些基准数据集进行一些测试.其中 MNIST, Cifar 10, cifar100, Fashion-MNIST 数据集常常被人们拿来当作练手的数据集.为了方便,诸如 ...

  2. hadoop之HDFS学习笔记(一)

    主要内容:hdfs的整体运行机制,DATANODE存储文件块的观察,hdfs集群的搭建与配置,hdfs命令行客户端常见命令:业务系统中日志生成机制,HDFS的java客户端api基本使用. 1.什么是 ...

  3. HDFS学习

    HDFS体系结构 HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)(如图所示).名称节点作为中心服务器, ...

  4. 测试开发:从0到1学习如何测试API网关

    本文来自我的一名学员分享 日常工作中,难免会遇到临危受命的情况,虽然没有这么夸张,但是也可能会接到一个陌生的任务,也许只是对这个概念有所耳闻.也许这个时候会感到一丝的焦虑,生怕没法完成领导交给的测试任 ...

  5. #学习笔记#JSP数据交互

    #学习笔记#JSP数据交互 数据库的使用方式:   当用户在第一个页面的查询框输入查询语句点提交的时候我们是用什么样的方式完成这个查询的? 答:我们通过在第一个页面提交表单的形式,真正的数据库查询时在 ...

  6. SVG 学习<四> 基础API

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  7. 大数据(5) - HDFS中的常用API操作

    一.安装java 二.IntelliJ IDEA(2018)安装和破解与初期配置 参考链接 1.进入官网下载IntelliJ IDEA https://www.jetbrains.com/idea/d ...

  8. 前后端API交互数据加密——AES与RSA混合加密完整实例

    前言 前段时间看到一篇文章讲如何保证API调用时数据的安全性(传送门:https://blog.csdn.net/ityouknow/article/details/80603617),文中讲到利用R ...

  9. Java学习笔记之---API的应用

    Java学习笔记之---API的应用 (一)Object类 java.lang.Object 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个 ...

随机推荐

  1. MinkowskiPooling池化(下)

    MinkowskiPooling池化(下) MinkowskiPoolingTranspose class MinkowskiEngine.MinkowskiPoolingTranspose(kern ...

  2. GPU上如何优化卷积

    GPU上如何优化卷积 本文将演示如何在TVM中编写高性能卷积实现.我们以平方大小的输入张量和滤波器为例,假设卷积的输入是大批量的.在本例中,使用不同的布局来存储数据,以实现更好的数据局部性.缓冲区布局 ...

  3. Java面试必知必会:基础

    面试考察的知识点多而杂,要完全掌握需要花费大量的时间和精力.但是面试中经常被问到的知识点却没有多少,你完全可以用 20% 的时间去掌握 80% 常问的知识点. 一.基础 包括: 杂七杂八 面向对象 数 ...

  4. 菜鸟刷题路:剑指 Offer 09. 用两个栈实现队列

    剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的 ...

  5. 【NX二次开发】创建老版的基准平面uf5374

    使用uf5374() 源码: double dP1[3] = { 0.0,0.0,0.0 }; double dP2[3] = { 0.0,1.0,0.0 }; double dP3[3] = { 0 ...

  6. 如果你这么去理解HashMap就会发现它真的很简单

    Java中的HashMap相信大家都不陌生,也是大家编程时最常用的数据结构之一,各种面试题更是恨不得掘地三尺的去问HashMap.HashTable.ConcurrentHashMap,无论面试题多么 ...

  7. Spring Boot 2.x基础教程:如何扩展XML格式的请求和响应

    在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...

  8. SpringCloud(6)Eureka架构与CAP原则与取舍策略

    一:Eureka架构 Register(服务注册):把自己的 IP 和端口注册给 Eureka. Renew(服务续约):发送心跳包,每 30 秒发送一次,告诉 Eureka 自己还活着.如果 90 ...

  9. LevelDB学习笔记 (2): 整体概览与读写实现细节

    1. leveldb整体介绍 首先leveldb的数据是存储在磁盘上的.采用LSM-Tree实现,LSM-Tree把对于磁盘的随机写操作转换成了顺序写操作.这是得益于此leveldb的写操作非常快,为 ...

  10. 关于Excel中表格转Markdown格式的技巧

    背景介绍 Excel文件转Markdown格式的Table是经常会遇到的场景. Visual Studio Code插件 - Excel to Markdown table Excel to Mark ...