HDFS JAVAAPI总结

简介: HDFS JAVAAPI总结

maven仓库

<dependencies>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>2.7.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>2.7.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdfs</artifactId>
        <version>2.7.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-core</artifactId>
        <version>2.7.5</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

javaApi

package com.nzqk.demo;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
/**
 * @Version 1.0
 * @Author:zhaoJiaCai
 * @Date:2020/12/10 星期四   07:59
 */
public class demo_03 {
    /**
     * 创建文件夹
     */
    @Test
    public void demo_01() {
        Configuration conf = new Configuration();
        boolean boo = false;
        try {
            FileSystem fs = FileSystem.get(new URI("hdfs://192.168.10.3:8020"), conf);
            boo = fs.createNewFile(new Path("/111.txt"));
        } catch (Exception ex) {
        }
        if (boo) {
            System.out.println("创建文件成功!");
        } else {
            System.out.println("创建文件失败!");
        }
    }
    /**
     * 修改
     */
    @Test
    public void demo_02() {
        Configuration conf = new Configuration();
        boolean boo = false;
        try {
            FileSystem fs = FileSystem.get(new URI("hdfs://192.168.10.3:8020"), conf);
            boo = fs.rename(new Path("/111.txt"), new Path("/222.txt"));
        } catch (Exception ex) {
        }
        if (boo) {
            System.out.println("修改文件成功!");
        } else {
            System.out.println("修改文件失败!");
        }
    }
    /**
     * 查看   所有文件
     */
    @Test
    public void demo_03() {
        try {
            //1 获取文件系统
            Configuration configuration = new Configuration();
            FileSystem fs = FileSystem.get(new URI("hdfs://192.168.10.3:8020"), configuration, "root");
            // 2 获取文件详情
            RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true);
            while (listFiles.hasNext()) {
                LocatedFileStatus status = listFiles.next();
                // 输出详情
                // 文件名称
                System.out.println(status.getPath().getName());
                // 长度
                System.out.println(status.getLen());
                // 权限
                System.out.println(status.getPermission());
                // 分组
                System.out.println(status.getGroup());
                // 获取存储的块信息
                BlockLocation[] blockLocations = status.getBlockLocations();
                for (BlockLocation blockLocation : blockLocations) {
                    // 获取块存储的主机节点
                    String[] hosts = blockLocation.getHosts();
                    for (String host : hosts) {
                        System.out.println(host);
                    }
                }
                System.out.println("-----------分割线----------");
            }
            // 3 关闭资源
            fs.close();
        } catch (Exception ex) {
        }
    }
    /**
     * 查看 遍历根目录下的所有文件 文件夹
     */
    @Test
    public void testListStatus() throws IOException, InterruptedException, URISyntaxException {
        // 1 获取文件配置信息
        Configuration configuration = new Configuration();
        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.10.3:8020"), configuration, "root");
        // 2 判断是文件还是文件夹
        FileStatus[] listStatus = fs.listStatus(new Path("/"));
        for (FileStatus fileStatus : listStatus) {
            System.out.println("============================");
            // 如果是文件
            if (fileStatus.isFile()) {
                System.out.println("f:" + fileStatus.getPath().getName());
            } else {
                System.out.println("d:" + fileStatus.getPath().getName());
            }
            //获取路径
            System.out.println(fileStatus.getPath().getParent().toString());
            String str = fileStatus.getPath().getParent().toString();
            String[] split = str.split("\\/");
            str = "";
            for (int i = 3; i < split.length; i++) {
                str += "/" + split[i];
            }
            System.out.println(str);
            // 长度
            System.out.println(fileStatus.getLen());
            // 权限
            System.out.println(fileStatus.getPermission());
            // 分组
            System.out.println(fileStatus.getGroup());
            System.out.println("文件的块大小: " + (fileStatus.getBlockSize() / 1024 / 1024));
            System.out.println("目录所有者:  " + fileStatus.getOwner());
            System.out.println("目录备份数: " + fileStatus.getReplication());
        }
        // 3 关闭资源
        fs.close();
    }
    /**
     * 删除
     */
    @Test
    public void testDelete() throws IOException, InterruptedException, URISyntaxException {
        // 1 获取文件系统
        Configuration configuration = new Configuration();
        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.10.3:8020"), configuration, "root");
        // 2 执行删除
        boolean delete = fs.delete(new Path("/222.txt"), true);
        // 3 关闭资源
        fs.close();
    }
    /**
     * 下载
     */
    @Test
    public void testCopyToLocalFile() throws IOException, InterruptedException, URISyntaxException {
        // 1 获取文件系统
        Configuration configuration = new Configuration();
        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.10.3:8020"), configuration, "root");
        // 2 执行下载操作
        // boolean delSrc 指是否将原文件删除
        // Path src 指要下载的文件路径
        // Path dst 指将文件下载到的路径
        // boolean useRawLocalFileSystem 是否开启文件校验
        fs.copyToLocalFile(false, new Path("/demo_01/part-m-00000"), new Path("e:/1.txt"), true);
        // 3 关闭资源
        fs.close();
    }
    /**
     * 上传
     */
    @Test
    public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {
        // 1 获取文件系统
        Configuration configuration = new Configuration();
        configuration.set("dfs.replication", "2");
        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.10.3:8020"), configuration, "root");
        // 2 上传文件
        fs.copyFromLocalFile(new Path("e:/A.png"), new Path("/A.png"));
        // 3 关闭资源
        fs.close();
        System.out.println("over");
    }
}


目录
相关文章
|
分布式计算 Hadoop 测试技术
Hadoop【基础知识 05】【HDFS的JavaAPI】(集成及测试)
【4月更文挑战第5天】Hadoop【基础知识 05】【HDFS的JavaAPI】(集成及测试)
224 8
|
分布式计算 Java Hadoop
HDFS javaAPI编程
HDFS javaAPI编程
HDFS javaAPI编程
|
分布式计算 Java Hadoop
hadoop HDFS javaAPI编程
hadoop HDFS javaAPI编程
hadoop HDFS javaAPI编程
|
分布式计算 Java Hadoop
Hadoop之HDFS04【JavaAPI操作】
前面项目中我们是创建的java项目来演示的,但是hadoop相关的依赖太多了,不方便,本文通过maven项目来演示HDFS的java API操作
Hadoop之HDFS04【JavaAPI操作】
|
9月前
|
XML 存储 分布式计算
【赵渝强老师】史上最详细:Hadoop HDFS的体系架构
HDFS(Hadoop分布式文件系统)由三个核心组件构成:NameNode、DataNode和SecondaryNameNode。NameNode负责管理文件系统的命名空间和客户端请求,维护元数据文件fsimage和edits;DataNode存储实际的数据块,默认大小为128MB;SecondaryNameNode定期合并edits日志到fsimage中,但不作为NameNode的热备份。通过这些组件的协同工作,HDFS实现了高效、可靠的大规模数据存储与管理。
936 70
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
500 6
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
210 3
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
272 5
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
166 4