HDFS的shell操作和JavaAPI的使用:

WEB

  • WEB端口50090查看SecondaryNameNode信息。可以查看Hadoop的版本,NameNode的IP,Checkpoint等信息。

  • WEB端口50070可以查看HDFS的信息和目录结构

SHELL

查看

1234
hdfs dfs -ls [-d][-h][-R] <paths>[-d]:返回path[-h]:按照KMG数据大小单位显示文件大小,默认B[-R]:级联显示paths下文件

创建文件夹

1
hdfs dfs -mkdir [-p]<paths>

新建文件

1
hdfs dfs -touchz<paths>

查看文件

123
hdfs dfs -cat/[-ignoreCrc] [src]hdfs dfs -text -ignoreCrc /input/test  #忽略校验hdfs dfs -cat -ignoreCrc /input/test

追写文件

12
hdfs dfs --appendToFile <localsrc> <dst>如果localsrc为"-"表示数据来自键盘输入用"Ctrc+C"取消输入

上传下载

12
hdfs dfs -put [-f][-p]<localsrc> <dst>   # 上传到指定目录hdfs dfs -get [-p]<src>   <localhost>    # 现在到本地

删除文件

123
hdfs dfs -rm [-f] [-r] <src>-f 如果要删除的文件不存在,不显示错误信息-r/R 级联删除目录下所有文件和子目录文件

磁盘空间

123
hdfs dfs -du[-s][-h]<path>[-s]显示指定目录所占空间大小[-h]按照K M G 数据显示文件大小

JAVA API

步骤

  1. 实例化Configuration

Configuration封装了客户端或服务器的配置,Confiuration实例会自动加载HDFS的配置文件core-site.xml,从中获取Hadoop集群中的配置信息。因此我们要把集群的配置core-site.xml放在Maven项目的resources目录下。

1
Configuration conf = new Configuration();
  1. 实例化FileSystem

FileSystem类是客户端访问文件系统的入口,是一个抽象的文件系统。DistributedFileSystem类是FileSystem的一个具体实现。实例化FileSystem并发挥默认的文件系统代码如下:

1
FileSystem fs = FileSystem.get(conf);
  1. 设置目标对象的路径

HDFS API 提供了Path类来封装文件路径。PATH类位于org.apache.hadoop.fs.Path包中,代码如下:

1
Path path = new Path("/input/write.txt");

执行文件操作

得到Filesystem实例后,就可以使用该实例提供的方法成员执行相应的操作。如果:打开文件,创建文件、重命名文件、删除文件。

​ FileSystem类常用成员函数

方法名称及参数 返回值 功能
create(Path f) FSDataOutputStream 创建一个文件
open(Path f) FSDatatInputStream 打开指定的文件
delete(Path f) boolean 删除指定文件
exsits(Path f) boolean 检查文件是否存在
getBlockSize(Path f) long 返回指定的数据块的大小
getLength(Path f) long 返回文件长度
mkdir(Path f) boolean 检查文件是否存在
copyFromLocalFile(Path src, Path dst) void 从本地磁盘复制文件到HDFS
copyToLocalFile(Path src, Path dst) void 从HDFS复制文件到本地磁盘
……….. ………. …………….

上传文件

123456789101112131415161718192021222324252627
package hdfs;

import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;

import java.net.URI;

public class PutFile {    public static void main(String[] args) throws Exception {

        Configuration conf = new Configuration();

        FileSystem fs = FileSystem.get(URI.create("hdfs://datanode1:9000"),conf,"hadoop");

        //本地文件        Path src = new Path("D:\\上传文件.txt");

        //HDFS 路径        Path dst = new Path("/input/上传文件.txt");

        fs.copyFromLocalFile(src, dst);        fs.close();        System.out.println("文件上传成功");    }}

创建文件

123456789101112131415161718192021
package hdfs;

import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;

import java.net.URI;

public class CreateFile {    public static void main(String[] args) throws Exception {        Configuration conf = new Configuration();

        FileSystem fs = FileSystem.get(URI.create("hdfs://datanode1:9000"), conf, "hadoop");        Path dfs = new Path("/input/上传文件.txt");        FSDataOutputStream newFile = fs.create(dfs, true);  //是否覆盖文件 true 覆盖 false 追加        newFile.writeBytes("this is a create file tes");        System.out.println("创建文件成功");

    }}

文件详情

1234567891011121314151617181920212223242526272829303132333435363738394041424344
package hdfs;

import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileStatus;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;

import java.net.URI;import java.text.SimpleDateFormat;import java.util.Date;

public class SeeInfo {    public static void main(String[] args) throws Exception {        Configuration conf = new Configuration();

        FileSystem fs = FileSystem.get(URI.create("hdfs://datanode1:9000"), conf, "hadoop");

        // HDFS文件        Path fpath = new Path("/input/上传文件.txt");

        FileStatus fileLinkStatus = fs.getFileLinkStatus(fpath);        //获得块大小        long blockSize = fileLinkStatus.getBlockSize();        System.out.println("blocksize:    " + blockSize);

        //获得文件大小        long len = fileLinkStatus.getLen();        System.out.println("Filesize:    " + len);

        //获得文件所有者        String owner = fileLinkStatus.getOwner();        System.out.println("FileOwner:     " + owner);

        //获得创建时间        SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");        long accessTime = fileLinkStatus.getAccessTime();        System.out.println("access time:   " + formater.format(new Date(accessTime)));

        //获得修改时间        long modificationTime = fileLinkStatus.getModificationTime();        System.out.println("modify time:    " + formater.format(new Date(modificationTime)));

    }}

下载文件

1234567891011121314151617181920212223242526272829
package hdfs;

import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IOUtils;

import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.URI;

public class GetFIle {    public static void main(String[] args) throws Exception {        Configuration conf = new Configuration();

        FileSystem fs = FileSystem.get(URI.create("hdfs://datanode1:9000"), conf, "hadoop");        // HDFS 文件        InputStream in = fs.open(new Path("/input/上传文件.txt"));

        //保存到本地位置        OutputStream out = new FileOutputStream("D://下载文件.txt");        IOUtils.copyBytes(in, out, 4096, true);

        System.out.println("下载文件成功");        fs.close();

    }}

删除文件

hdfs;
12345678910111213141516171819
package hdfs;

import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;

import java.net.URI;

public class DeleteFile {    public static void main(String[] args) throws Exception {        Configuration conf = new Configuration();

        FileSystem fs = FileSystem.get(URI.create("hdfs://datanode1:9000"), conf, "hadoop");

        Path path = new Path("/input/上传文件.txt");        fs.delete(path);        System.out.println("删除成功");    }}

HDFS的操作SHELL和API相关推荐

  1. HDFS简单介绍及用C语言訪问HDFS接口操作实践

    一.概述 近年来,大数据技术如火如荼,怎样存储海量数据也成了当今的热点和难点问题,而HDFS分布式文件系统作为Hadoop项目的分布式存储基础,也为HBASE提供数据持久化功能,它在大数据项目中有很广 ...

  2. 大数据基础系列 5:Hadoop 实验——熟悉常用的 HDFS 目录操作和文件操作

    文章目录 前言 一.实验目的 二.实验平台 三.实验内容和要求 3.1.HDFS 目录操作 3.1.1.创建用户目录 3.1.2.显示 HDFS 中与当前用户对应的目录内容 3.1.3.列出 HDFS ...

  3. Hadoop之HDFS文件操作

    摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HD ...

  4. linux 查看hdfs文件,Hadoop之HDFS文件操作

    摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行    Java API HDF ...

  5. hdfs java操作_hdfs java操作

    hdfs java操作 一般操作都是shell命令,记一下java操作 package hdfs; import java.io.FileInputStream; import java.net.UR ...

  6. 大数据上机基础—HDFS文件操作

    本文为在校学习大数据课程期间,对厦门大学林子雨老师大数据技术原理与应用 第三章 分布式文件系统HDFS学习指南一文进行的整理,方便自己学习查看 原文地址为大数据技术原理与应用 第三章 分布式文件系统H ...

  7. HDFS每日一练1 API读取文件

    HDFS每日一练1 API读取文件 更多整理都在我的github上:Auraros欢迎大家. 题目 在右侧代码编辑区中编写代码实现如下功能: 使用FSDataInputStream获取HDFS的/us ...

  8. hadoop的hdfs文件操作实现上传文件到hdfs

    hdfs文件操作操作示例,包括上传文件到HDFS上.从HDFS上下载文件和删除HDFS上的文件,大家参考使用吧 复制代码代码如下: import org.apache.hadoop.conf.Conf ...

  9. Javascript操作DOM常用API总结

    文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前, ...

最新文章

  1. 北京电子科技学院计算机专业,北京电子科技学院计算机技术怎么样
  2. MobileNet 笔记
  3. 批量 ping 测试脚本(IP 扫描)
  4. Silverlight4.0(9) 之 分页控件轻量级的Session
  5. EasyUI中Tabs标签页的简单使用
  6. IOS7使用原生API进行二维码和条形码的扫描
  7. 常用 API 函数(5): 文本和字体函数
  8. python概率密度函数参数估计_EM算法求高斯混合模型参数估计——Python实现
  9. 内网 根据计算机名查IP
  10. AngularJS-源码阅读(八.二)
  11. 参数是html代码,一些html标签的参数messup html/php代码
  12. matlab 信号与系统(一)—— 上采样(Upsampling)和下采样(Downsampling)
  13. 拓端tecdat|R语言通过伽玛与对数正态分布假设下的广义线性模型对大额索赔进行评估预测
  14. python迭代器学习与简单的实践
  15. Windows自带硬盘测试工具使用教程
  16. 业余无线电通信_如何办理业余无线电台执照
  17. 【图像隐藏】基于LSB算法实现数字水印嵌入提取matlab代码
  18. 淘宝违规考试软件1.0
  19. Linux 使用shell命令复制文件
  20. Linux就这个范儿 第12章 一个网络一个世界

热门文章

  1. 【博弈】Codeforces Round #573 (Div. 1) Tokitsukaze, CSL and Stone Game
  2. 【剑指offer】旋转数组的最小数字
  3. 使用jsp实现文件上传的功能
  4. (C/C++学习笔记) 十二. 指针
  5. 【idea】idea快捷键(更新中....)
  6. UI基础之UITableView案例QQ聊天界面
  7. SQL Server中的TempDB管理——TempDB基本知识(为什么需要版本存储区)
  8. ajax应用中如何禁止缓存
  9. mysql当时读_Mysql事务以及四中隔离级别实例2以及InnoDB如何解决当时读的幻读问题...
  10. hive解绑邮箱_django使用QQ企业邮箱发送邮件