第一种、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. x86 cpu卷积网络的自动调谐

    x86 cpu卷积网络的自动调谐 这是一个关于如何为x86cpu调整卷积神经网络的文档. 本文不会在Windows或最新版本的macOS上运行.要让它运行,需要将主体包装在 if __name__ = ...

  2. Salesforce LWC学习(三十四) 如何更改标准组件的相关属性信息

    本篇参考: https://www.cnblogs.com/zero-zyq/p/14548676.html https://www.lightningdesignsystem.com/platfor ...

  3. springmvc——CharacterEncodingFilter过滤器要放在所有过滤器前面

    CharacterEncodingFilter的拦截顺序必须是第一个,否则还是会出现乱码问题.这是因为 request对象的parameter并不是一开始就解析的,它是等你第一次调用getParame ...

  4. go-zero:开箱即用的微服务框架

    go-zero 是一个集成了各种工程实践的 Web 和 rpc 框架,它的弹性设计保障了大并发服务端的稳定性,并且已经经过了充分的实战检验. go-zero 在设计时遵循了 "工具大于约定和 ...

  5. Django基础之模型层(02)

    1 重要概念 # 多表查询 """ 正向查询 反向查询 当前查询对象是否含有外键字段 如果有就是正向 没有无则是反向 口诀: 正向查询按外键字段 多对多需要额外再加一个. ...

  6. LuatOS | 全新在线模拟器,随时随地发挥创意

    LuatOS --运行在嵌入式硬件的实时操作系统,开启全新物联网生态. 聚焦嵌入式应用生态,内置功能可支持绝大多数物联网应用场景.深度整合Lua语言,只需少量内存和Flash空间就能运行.不局限于合宙 ...

  7. 三、WPF入门教程——布局和常用Panel学习

    布局和常用Panel学习 一.简介 所有的WPF布局容器都派生自System.Windows.Controls.Panel.Panel继承自FrameworkElement. 在Panel中有一个比较 ...

  8. 题解 P3940 分组

    有些梦想虽然遥不可及,但不是不可能实现.只要我足够的强. 前言 调了挺长时间的,并查集合并的时候需要 find 一下,不然会炸内存.... 解题思路 参考了题解区一篇思路非常好的题解,在这里讲一下自己 ...

  9. 6.6考试总结(NOIP模拟4)

    前言 考试这种东西暴力拉满就对了QAQ T1 随 题解 解题思路 DP+矩阵乘(快速幂)+数论 又是一道与期望无关的期望题,显然答案是 总情况/情况数(\(n^m\)). 接下来的问题就是对于总情况的 ...

  10. 『无为则无心』Python基础 — 12、Python运算符详细介绍

    目录 1.表达式介绍 2.运算符 (1)运算符的分类 (2)算数运算符 (3)赋值运算符 (4)复合赋值运算符 (5)比较运算符 3.逻辑运算符 拓展1:数字之间的逻辑运算 拓展2:Python中逻辑 ...