Java API 读写 hdfs分布式文件系统 (创建目录、读文件、写文件)

                         Java API 读写 hdfs 操作

一、概述

    操作hdfs分布式文件系统的类为FileSystem对象

    1、创建文件夹(递归创建):fs. mkdirs()

    2、写文件  : fs.create(new Path()),返回FSDataOutputStream对象

    3、读文件  : fs.open(new Path())  , 返回FSDataInputStream对象

二、代码

package com.example.hdfs;


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

import java.net.URI;
import java.util.logging.Logger;

分布式文件系统HDFS文件创建读写的方法和操作指南如下: ### 命令行操作 - **创建文件**:可直接在HDFS创建文件。 - **查看文件内容**:能查看HDFS文件的具体内容。 - **追加文件内容**:可在已有文件的末尾添加新的内容。 - **上传文件**:将本地文件上传HDFS。 - **下载文件到本地**:把HDFS中的文件下载到本地系统。 - **删除文件**:移除HDFS中的指定文件。 - **删除目录**:删除HDFS中的指定目录[^1]。 ### API操作 - **文件夹的创建**:使用APIHDFS创建文件夹。 - **文件创建**:通过API接口HDFS创建文件。 - **重命名**:对HDFS中的文件文件夹进行重命名操作。 - **上传文件HDFS**:借助API将本地文件上传HDFS。 - **上传多个文件HDFS**:可批量上传多个本地文件HDFS。 - **下载HDFS文件到本地**:利用APIHDFS中的文件下载到本地。 - **查看文件块的信息**:获取HDFS文件的块相关信息。 - **创建文件入内容**:在创建文件的同时向其中入指定内容。 - **上传文件HDFS**:针对大文件也能通过API上传HDFS。 - **查看文件内容**:使用API取并查看HDFS文件的内容[^1]。 ### 创建文件流程 当有新的数据需要发送,并且块创建阶段处于PIPELINE_SETUP_CREATE时,DataStreamer会和NameNode通信,调用AddBlock方法,通知NameNode创建、分配新的块及位置,NameNode会初始化Pipeline和发送流。同时,DataNode数据接收服务线程启动(DataXceiverServer & DataXceiver)[^5]。 ### 编程任务操作 在编程中,在主函数main中需获取hadoop的系统设置,并在其中创建HDFS文件。要指定创建文档路径(必须设置为/user/hadoop/myfile才能评测),输入内容必须是本关要求内容才能评测,还需添加文件输出部分。同时,只能在指定区域进行代码编,其他区域仅供参考请勿改动[^4]。 ### 实验操作 在实验方面,要熟练掌握Hadoop操作指令及HDFS命令行接口,掌握HDFS原理,熟练掌握HDFSAPI使用方法,掌握单个本地文件入到HDFS文件的方法以及多个本地文件批量入到HDFS文件的方法。要给出主要实验步骤成功的效果截图,分别在本地和集群测试并给出测试效果截图,对实验工作进行全面总结,完成实验内容后,实验报告文件名显示学号姓名信息[^2]。 ### 示例代码(Java) 以下是一个简单的Java代码示例,用于在HDFS创建文件入内容: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.IOException; import java.io.OutputStream; public class HDFSCreateFile { public static void main(String[] args) throws IOException { Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); FileSystem fs = FileSystem.get(conf); Path filePath = new Path("/user/hadoop/myfile"); OutputStream os = fs.create(filePath); String content = "This is a test content."; os.write(content.getBytes()); os.close(); fs.close(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值