HDFS学习笔记(2)hdfs_shell & JavaAPI

FileSystem shell指令

appendToFile
cat
checksum
chgrp
chmod
chown
copyFromLocal
copyToLocal
count
cp
createSnapshot
deleteSnapshot
df
du
dus
expunge
find
get
getfacl
getfattr
getmerge
help
ls
lsr
mkdir
moveFromLocal
moveToLocal
mv
put
renameSnapshot
rm
rmdir
rmr
setfacl
setfattr
setrep
stat
tail
test
text
touchz
truncate
usage

FileSystem java API

測试代码

package hdfs;

import java.io.FileInputStream;
import java.io.FileOutputStream;
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;

public class HdfsOperator {
    static final String PATH = "hdfs://Master:9000/";
    static final String DIR = "/d1";
    static final String FILE = "/d1/hello";
    static final String loadFile = "F:/readme.txt";
    static final String downFile = "F:/readme_tmp.txt";
    private static void getList(FileSystem fileSystem, String DIR) throws Exception {
        final FileStatus[] listStatus = fileSystem.listStatus(new Path(DIR));
        for(FileStatus fileStatus : listStatus) {
            String isDir = fileStatus.isDirectory() ? "dir":"file";
            final String permission = fileStatus.getPermission().toString();
            final short replication = fileStatus.getReplication();
            final long len = fileStatus.getLen();
            final String path = fileStatus.getPath().toString();
            System.out.println(isDir+"\t"+permission+"\t"+replication+"\t"+len+"\t"+path);
        }
    }
    private static void getData(FileSystem fileSystem, String FILE) throws Exception {
        final FSDataInputStream in = fileSystem.open(new Path(FILE));
        final FileOutputStream out = new FileOutputStream(downFile);
        IOUtils.copyBytes(in, out, 4096, true);
        System.out.println("get hdfs: " +FILE+ " success! " + "saved as"+ downFile);
    }
    private static void putData(FileSystem fileSystem, String src, String dest ) throws Exception {
        final FSDataOutputStream out = fileSystem.create(new Path(dest));
        final FileInputStream in = new FileInputStream(src);
        IOUtils.copyBytes(in, out, 4096, true);
    }
    private static void remove(FileSystem fileSystem, String DIR) throws Exception {
        boolean flag = fileSystem.delete(new Path(DIR), true);
        System.out.println("del " + DIR + (flag ?

"  Success":"  failure") );
    }
    private static void create(FileSystem fileSystem, String DIR) throws Exception {
        if( fileSystem.exists(new Path(DIR)) == true) {
            remove(fileSystem, DIR);
        }
        fileSystem.mkdirs(new Path(DIR));
    }
    private static  FileSystem getFileSystem(String PATH) throws Exception {
        return FileSystem.get(new URI(PATH), new Configuration());

    }
    public static void main(String[] args) throws Exception {
        FileSystem fileSystem = getFileSystem(PATH);
        create(fileSystem, DIR);

        putData(fileSystem, loadFile, FILE);

        getData(fileSystem, FILE);

        getList(fileSystem, PATH);

        remove(fileSystem, FILE);
    }

}
时间: 2024-10-10 12:08:23

HDFS学习笔记(2)hdfs_shell & JavaAPI的相关文章

HDFS学习笔记(2)hdfs_shell & JavaAPI

FileSystem shell指令 官方文档: HDFS Commands Reference appendToFile cat checksum chgrp chmod chown copyFromLocal copyToLocal count cp createSnapshot deleteSnapshot df du dus expunge find get getfacl getfattr getmerge help ls lsr mkdir moveFromLocal moveToL

HDFS学习笔记(1)初探HDFS

Hadoop分布式文件系统(Hadoop Distributed File System, HDFS) 分布式文件系统是一种同意文件通过网络在多台主机上分享的文件系统.可让多机器上的多用户分享文件和存储空间. hdfs仅仅是当中一种.适用于一次写入.多次查询的情况.不支持并发写情况.小文件不合适. 2.HDFS架构 HDFS採用master/slave架构.一个HDFS集群是由一个Namenode和一定数目的Datanodes组成.Namenode是一个中心server,负责管理文件系统的名字空

Hadoop学习笔记_7_分布式文件系统HDFS --DataNode体系结构

分布式文件系统HDFS --DataNode体系结构 1.概述 DataNode作用:提供真实文件数据的存储服务. 文件块(block):最基本的存储单位[沿用的Linux操作系统地概念].对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block. 与Linux操作系统不同的是,一旦上传了一个小于Block大小的文件,则该文件会占用实际文件大小的空间. 2.进入hdfs-default.xml <prope

Hadoop学习笔记_5_分布式文件系统HDFS --shell操作

分布式文件系统HDFS --shell操作 分布式文件系统[Distributed File System]概述 数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 . 分布式文件系统特点: 是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间. 通透性.让实际上是通过网络来访问文件的动作,由程序与用户看来,就像是访问本地的磁盘一般

Hadoop学习笔记_6_分布式文件系统HDFS --NameNode体系结构

分布式文件系统HDFS --NameNode体系结构 NameNode 是整个文件系统的管理节点. 它维护着整个文件系统的文件目录树[为了使得检索速度更快,该目录树放在内存中], 文件/目录的元信息和每个文件对应的数据块列表. 接收用户的操作请求. Hadoop确保了NameNode的健壮性,不容易死亡.文件目录树以及文件/目录的元信息等归根到底是存放在硬盘中的,但是在Hadoop运行时,需要将其加载到内存中. 文件包括: fsimage:元数据镜像文件.存储某一时段NameNode内存元数据信

Hadoop源码学习笔记(1) ——第二季开始——找到Main函数及读一读Configure类

Hadoop源码学习笔记(1) ——找到Main函数及读一读Configure类 前面在第一季中,我们简单地研究了下Hadoop是什么,怎么用.在这开源的大牛作品的诱惑下,接下来我们要研究一下它是如何实现的. 提前申明,本人是一直搞.net的,对java略为生疏,所以在学习该作品时,会时不时插入对java的学习,到时也会摆一些上来,包括一下设计模式之类的.欢迎高手指正. 整个学习过程,我们主要通过eclipse来学习,之前已经讲过如何在eclipse中搭建调试环境,这里就不多述了. 在之前源码初

Hadoop学习笔记(8) ——实战 做个倒排索引

Hadoop学习笔记(8) ——实战 做个倒排索引 倒排索引是文档检索系统中最常用数据结构.根据单词反过来查在文档中出现的频率,而不是根据文档来,所以称倒排索引(Inverted Index).结构如下: 这张索引表中, 每个单词都对应着一系列的出现该单词的文档,权表示该单词在该文档中出现的次数.现在我们假定输入的是以下的文件清单: T1 : hello world hello china T2 : hello hadoop T3 : bye world bye hadoop bye bye 输

Hadoop学习笔记_2_Hadoop源起与体系概述[续]

Hadoop源起与体系概述 Hadoop的源起--Lucene Lucene是Doug Cutting开创的开源软件,用java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎 早期发布在个人网站和SourceForge,2001年年底成为apache软件基金会jakarta的一个子项目 Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎 对于大数据的

第126讲:Hadoop集群管理之Datanode目录元数据结构详解学习笔记

namenode是管理hdfs文件系统的元数据 datanode是负责当前节点上的数据的管理,具体目录内容是在初始阶段自动创建的.在用hdfs dfs namenode format时并没有对datanode进行format. 在datanode中目录是按文件信息存储的. datanode存在于具体节点上的hadoop-2.6.0/dfs/data/current中. datanode的VERSION内容与namenode的VERSION内容相似. storageID:在namenode与dat