HDFS的操作SHELL和API

HDFS的shell操作和JavaAPI的使用:

WEB

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

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

SHELL

查看

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

创建文件夹

hdfs dfs -mkdir [-p]<paths>

新建文件

hdfs dfs -touchz<paths>

查看文件

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

追写文件

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

上传下载

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

删除文件

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

磁盘空间

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目录下。

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

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

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

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

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复制文件到本地磁盘
……….. ………. …………….

上传文件

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("文件上传成功");
    }
}

创建文件

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("创建文件成功");

    }
}

文件详情

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)));

    }
}

下载文件

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();

    }
}

删除文件

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("删除成功");
    }
}

原文地址:https://www.cnblogs.com/fmgao-technology/p/10417302.html

时间: 2024-08-30 03:08:01

HDFS的操作SHELL和API的相关文章

大数据技术之_04_Hadoop学习_01_HDFS_HDFS概述+HDFS的Shell操作(开发重点)+HDFS客户端操作(开发重点)+HDFS的数据流(面试重点)+NameNode和SecondaryNameNode(面试开发重点)

第1章 HDFS概述1.1 HDFS产出背景及定义1.2 HDFS优缺点1.3 HDFS组成架构1.4 HDFS文件块大小(面试重点)第2章 HDFS的Shell操作(开发重点)第3章 HDFS客户端操作(开发重点)3.1 HDFS客户端环境准备3.2 HDFS的API操作3.2.1 HDFS文件上传(测试参数优先级)3.2.2 HDFS文件下载3.2.3 HDFS文件夹删除3.2.4 HDFS文件名更改3.2.5 HDFS文件详情查看3.2.6 HDFS文件和文件夹判断3.3 HDFS的I/O

HDFS的基本shell操作

(1)分布式文件系统 随着数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 .它是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间. 而它最主要的特性就是通透性.让实际上是通过网络来访问文件的动作,由程序与用户看来,就像是访问本地的磁盘一般.即使系统中有某些节点脱机,整体来说系统仍然可以持续运作而不会有数据损失 分布式文件管理系

HDFS体系结构及shell操作

一.hadoop1.1.0的介绍 hadoop是适合大数据的分布式存储和计算的平台 hadoop核心组成由hdfs和mapreduce组成 hdfs是主从式结构,主节点只有一个,是namenode:从节点有很多个 分布式文件系统与HDFS (HDFS体系结构与基本概念) Distributed File System 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上  的文件,这就是分布式文件管理

HDFS简单的shell操作--大数据纪录片第二记

一.基本语法: bin/hadoop fs -具体命令 二.部分简单命令操作 1.显示命令的参数: help ls 2.显示该目录下所有文件: ls 目录 3.在hdfs上创建目录: mkdir 目录 4.从本地剪切到hdfs上: moveFromLocal 本地位置 hdfs上位置 5.追加一个文件A到已存在文件B末尾: appendToFile A B 6.显示文件内容: cat 文件 7.显示文件末尾: tail 文件所在位置 其实hdfs上的shell命令和linux下差不多,不继续列举

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

一.概述 近年来,大数据技术如火如荼,怎样存储海量数据也成了当今的热点和难点问题,而HDFS分布式文件系统作为Hadoop项目的分布式存储基础,也为HBASE提供数据持久化功能,它在大数据项目中有很广泛的应用. Hadoop分布式文件系统(Hadoop Distributed File System.HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.HDFS是Hadoop项目的核心子项目,是一种具有高容错性.高可靠性.高可扩展性.高吞吐量等特征的分布

HDFS简介及用C语言访问HDFS接口操作实践

一.概述 近年来,大数据技术如火如荼,如何存储海量数据也成了当今的热点和难点问题,而HDFS分布式文件系统作为Hadoop项目的分布式存储基础,也为HBASE提供数据持久化功能,它在大数据项目中有非常广泛的应用. Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.HDFS是Hadoop项目的核心子项目,是一种具有高容错性.高可靠性.高可扩展性.高吞吐量等特征的分

Hadoop之HDFS(客户端操作) 1.环境准备

HDFS客户端操作 1.HDFS客户端环境准备 1.根据自己电脑的操作系统拷贝对应的编译后的hadoop jar包到非中文路径(例如:D:\Develop\hadoop-2.7.2),如图所示. 图 编译后的hadoop jar包 2.配置HADOOP_HOME环境变量,如图所示. 图  配置HADOOP_HOME环境变量 3. 配置Path环境变量,如图所示. 图  配置Path环境变量 4.创建一个Maven工程HdfsClientDemo 5.导入相应的依赖坐标+日志添加 <depende

Hadoop之HDFS文件操作

摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HDFS是一种分布式文件系统,为MapReduce这种框架下的海量数据分布式处理而设计. Hadoop之HDFS文件操作常有两种方式,一种是命令行方式,即Hadoop提供了一套与Linux文件命令类似的命令行工具:另一种是JavaAPI,即利用Hadoop的Java库,采用编程的方式操作HDFS的文件.

Javascript操作DOM常用API总结

Javascript操作DOM常用API总结 原文地址:http://luopq.com/2015/11/30/javascript-dom/ 类型 Node类型(ELEMENT_NODE:1 ATTRIBUTE_NODE:2 TEXT_NODE:3 COMMENT_NODE:8``DOCUMENT_NODE:9 DOCUMENT_FRAGMENT_NODE:11) 节点创建型(createElement createTextNode cloneNode createDocumentFragme