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

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("删除失败!"); }
}


http://www.kler.cn/a/553395.html

相关文章:

  • PH热榜 | 2025-02-19
  • 元数据服务器的概述
  • JavaScript与AJAX:让网页动起来的魔法与秘密
  • JWT 令牌
  • 【前端学习笔记】Vue3
  • ubuntu上如何查看coredump文件默认保存在哪个路径?
  • 【Spring】详解Spring IOCDI
  • Memcached(主主复制与keepalive高可用)
  • 美化个人github主页,部署github-readme-stats
  • 数字化赋能,3D数字博物馆开启沉浸式体验
  • Android今日头条的屏幕适配方案
  • 华为手机突然自动重启且锁屏密码错误
  • 无线网络安全配置指南:WPA、WPA2、WPA3及WAPI详解
  • 解决Python升级导致PySpark任务异常方案
  • 详细介绍Tess4J的使用:从PDF到图像的OCR技术实现
  • netcore https配置
  • 前沿计组知识入门
  • 【算法精练】背包问题(01背包问题)
  • 简站主题:简洁、实用、SEO友好、安全性高和后期易于维护的wordpress主题
  • 使用 Jetty 构建 HTTPS 服务入门指南