当前位置: 首页 > news >正文

Hadoop之HDFS的使用

HDFS是什么:HDFS是一个分布式的文件系统,是个网盘,HDFS是一种适合大文件存储的分布式文件系统

HDFS的Shell操作

1、查看hdfs根目录下的内容 - ls

hdfs dfs -ls hdfs://hadoop01:9000/

url 在 使 用 时 默 认 是 可 以 省 略 的 , 因 为 hdfs 在 执 行 的 时 候 会 根 据HDOOP_HOME自动识别配置文件中的fs.defaultFS属性

可以写成:hdfs dfs -ls /

还有一版旧版写法

hadoop fs -ls /

想要递归显示所有目录的信息,可以在ls后面添加-R参数 

[root@bigdata01 hadoop-3.2.0]# hdfs dfs -ls -R / 

2、从本地上传文件 - put

[root@bigdata01 hadoop-3.2.0]# hdfs dfs -put README.txt /

3、查看HDFS文件内容 - cat

[root@bigdata01 hadoop-3.2.0]# hdfs dfs -cat /README.txt

 4、下载文件到本地 - get

// 防止当前目录中已经有这个文件了,要么换到其它目录,要么给文件重命名

[root@bigdata01 hadoop-3.2.0]# hdfs dfs -get /README.txt README.txt.bak

5、[创建文件夹 - mkdir

[root@bigdata01 hadoop-3.2.0]# hdfs dfs -mkdir /test

// 如果要递归创建多级目录,还需要再指定-p参数

[root@bigdata01 hadoop-3.2.0]# hdfs dfs -mkdir -p /abc/xyz

6、 删除文件/文件夹  - rm

[root@bigdata01 hadoop-3.2.0]# hdfs dfs -rm /README.txt

// 删除目录需要指定-r参数

[root@bigdata01 hadoop-3.2.0]# hdfs dfs -rm -r /test

7、统计根目录下文件的个数

[root@bigdata01 hadoop-3.2.0]# hdfs dfs -ls / |grep /| wc -l  

 8、hdfs dfs 可以配置简写

// 临时配置

alias hls="hdfs dfs -ls"

// 永久配置

nano ~/.bashrc

alias hls="hdfs dfs -ls"

source ~/.bashrc

// 验证

hls /

9、Java 操作 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 org.apache.hadoop.io.IOUtils;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URI;
/**
 * Java代码操作HDFS
 * 文件操作:上传文件、下载文件、删除文件 * Created by xuwei */
public class HdfsOp { 
 public static void main(String[] args) throws Exception{
 //创建一个配置对象
 Configuration conf = new Configuration();
 //指定HDFS的地址
 conf.set("fs.defaultFS","hdfs://bigdata01:9000");
 //获取操作HDFS的对象
 FileSystem fileSystem = FileSystem.get(conf); put(fileSystem);
 }
 /**
 * 文件上传
 * @param fileSystem
 * @throws IOException
 */
 private static void put(FileSystem fileSystem) throws IOException {
 //获取HDFS文件系统的输出流
 FSDataOutputStream fos = fileSystem.create(new Path("/user.txt"));
 //获取本地文件的输入流
 FileInputStream fis = new FileInputStream("D:\\user.txt");
 //上传文件:通过工具类把输入流拷贝到输出流里面,实现本地文件上传到HDFS IOUtils.copyBytes(fis,fos,1024,true); }
}

/**
 * 下载文件
 * @param fileSystem
 * @throws IOException
 */
private static void get(FileSystem fileSystem) throws IOException{
 //获取HDFS文件系统的输入流
 FSDataInputStream fis = fileSystem.open(new Path("/README.txt"));
 //获取本地文件的输出流
 FileOutputStream fos = new FileOutputStream("D:\\README.txt");
 //下载文件
 IOUtils.copyBytes(fis,fos,1024,true);
}

/**
 * 删除文件
 * @param fileSystem
 * @throws IOException
 */
private static void delete(FileSystem fileSystem) throws IOException{
 //删除文件,目录也可以删除
 //如果要递归删除目录,则第二个参数需要设置为true //如果是删除文件或者空目录,第二个参数会被忽略
 boolean flag = fileSystem.delete(new Path("/LICENSE.txt"),true); 
if(flag){
 System.out.println("删除成功!"); 
}else{
 System.out.println("删除失败!"); }
}

相关文章:

  • 从零开始:Gitee 仓库创建与 Git 配置指南
  • 服务器硬件知识--------linux系统初识and安装
  • Linux csplit 命令实现日志文件的拆分
  • 软考高级《系统架构设计师》知识点(五)
  • Spring事务原理的具体实现,以及包括源码以及具体在实际项目中的使用。
  • 【etcd】etcd_APIs 简单KV、watch、lease、txn命令
  • 数据结构-顺序表
  • 东方财富股吧发帖与评论爬虫
  • 基于腾讯云TI-ONE 训练平台快速部署和体验 DeepSeek 系列模型
  • 「AI学习笔记」机器学习与深度学习的区别:从技术到产品的深度解析(四)...
  • 如何高效利用 AI 工具提升开发效率?
  • 机器学习PCA和LDA
  • du-磁盘占用管理
  • 基于Python实现的缓存淘汰替换策略算法,该算法将缓存分区
  • MongoDB 架构设计:深入解析核心组件与工作原理
  • 二分搜索法、二分查找法【C/C ++】
  • 数据结构:最小生成树
  • FFmpeg源码:av_strlcpy函数分析
  • 探索 DeepSeek:AI 领域的璀璨新星
  • 深度学习实战道路裂缝缺陷识别
  • 2025年“投资新余•上海行”钢铁产业“双招双引”推介会成功举行
  • 新华保险一季度净赚58.82亿增19%,保费收入增28%
  • 郭继孚被撤销全国政协委员资格,此前为北京交通发展研究院长
  • 呼伦贝尔市委常委、组织部长闫轶圣调任内蒙古交通集团党委副书记
  • 新一届中国女排亮相,奥运冠军龚翔宇担任队长
  • 日韩 “打头阵”与美国贸易谈判,汽车、半导体产业忧虑重重