Hadoop实战系列(二)hdfs的操作记录

189 阅读1分钟

本文主要整理关于hdfs的shell操作api和java操作的api内容。

shell操作

传文件

这里的hdfs://localhost:9000是你的hdfs服务端地址,如果你的本地机器有配置HDOOP_HOME环境的变量的话,它会自动识别到core-site.xml中国呢配置的fs.defaultFS属性的值。

hdfs dfs -put ./test.txt hdfs://localhost:9000/

下载文件

直接下载到本地磁盘,如果本地文件命名冲突,可以支持下载后重命名

hdfs dfs -get /test.txt
hdfs dfs -get /test.txt /重命名文件

查看文件目录

这里的-ls命令和linux命令一样,而且支持追加参数

hdfs dfs -ls hdfs://localhost:9000/
hdfs dfs -ls -R hdfs://localhost:9000/

创建目录

这里的-mkdir命令和linux命令一样,而且支持追加参数

hdfs dfs -mkdir /test
hdfs dfs -mkdir -R /test/dir1

删除文件

hdfs dfs -rm /test.txt

java的api操作

对于hdfs文件的操作,官方也有提供一些高级语言使用的sdk包,例如hadoop-client,下边是基于java的sdk去进行接口调用的代码案例。

<properties>
    <hdfs.version>3.3.6</hdfs.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>${hdfs.version}</version>
    </dependency>
</dependencies>

简单的java代码案例:

package org.hdfs.sample;

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

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * @Author idea
 * @Date: Created at 2024/10/2
 * @Description hdfs操作案例
 */
public class TestHdfsReadMain {

    public static void main(String[] args) {
        try {
            Configuration conf = new Configuration();
            String hdfsUserName = "root";
            // HDFS的访问路径
            URI hdfsUri = new URI("hdfs://127.0.0.1:9000");
            // 根据远程的NameNode节点,获取配置信息,创建HDFS对象
            FileSystem fs = FileSystem.get(hdfsUri, conf, hdfsUserName);
            System.out.println(fs.exists(new Path("/readme.txt")));
            FSDataInputStream fsDataInputStream = fs.open(new Path("/readme.txt"));
            byte[] content = new byte[100];
            fsDataInputStream.getWrappedStream().read(content);
            System.out.println("read: " + new String(content));
        } catch (URISyntaxException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }


}