第一种、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. 构建可扩展的GPU加速应用程序(NVIDIA HPC)

    构建可扩展的GPU加速应用程序(NVIDIA HPC) 研究人员.科学家和开发人员正在通过加速NVIDIA GPU上的高性能计算(HPC)应用来推进科学发展,NVIDIA GPU具有处理当今最具挑战性 ...

  2. Spring如何使用三级缓存解决循环依赖

    Spring如何使用三级缓存解决循环依赖 首先来了解一下什么是循环依赖 @Component public class A { @Autowired B b; } @Component public ...

  3. WordPress安装篇(1):使用PHPStudy安装WordPress

    我是"小白",既不会编程也不懂CSS能自己搭建网站吗?可以的!只要你会用鼠标,懂打字就能搭建出属于你自己的网站.要怎么样才能做到昵?让我们一起来看看如何实现的吧.在Windows环 ...

  4. 【NX二次开发】Block UI OrientXpress

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  5. 在Visual Studio 中使用git——同步到远程服务器-上(十一)

    在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...

  6. SprignBoot是如何访问工程目录下的静态资源?

    ​ 目录 1.牛刀小试 1.1 图片静态资源的访问 1.2 为静态资源添加访问前缀 1.3  WelCome Page 的奇妙跳转 2.那么,SpringBoot是如何做到的呢? ​​​​​​​ 1. ...

  7. [.NET大牛之路 002] 什么是 .NET

    .NET 是一个开发平台,或者叫开发者平台.使用 .NET 你可以创建不同类型的应用程序,使用多种开发语言.编辑器和工具库创建网页.手机.桌面以及游戏等应用.其核心特点是:免费.开源和跨平台. 语言和 ...

  8. 7、linux快捷键

    ctrl +a:切换到命令行开始 ctrl+e:切换到命令行结尾 ctrl+c:终止当前命令或脚本 ctrl+d:退出当前shell,相当于exit ctrl+l:清除当前屏幕的内容,相当于clear ...

  9. 7、openstack安装

    1.openstack配置架构图: 2.主机设置: (1)两台主机名分别是controller和compute1: hostnamectl set-hostname controller hostna ...

  10. Docker搭建Jenkins+Maven/Gradle——代码自动化运维部署平台(二)

    一.简介 1.Jenkins 概述: Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins ...