目录

  • HDFS介绍
  • HDFS基础操作
  • Java操作HDFS

HDFS介绍

  • HDFS 是一种允许文件通过网络在多台主机上分享的文件系统,可以让多台机器上的多个用户分享文件和存储空间。
  • 分布式文件管理系统有很多,HDFS 只是其中一种实现
  • 注意:HDFS 不适合存储小文件(几KB或几M的小文件)

HDFS基础操作

  1. 操作格式
    hdfs dfs -xxx schema: // authority / path
    -xxx : 命令(读、写、创建、查看等)
    schema :hdfs
    authority :地址+端口(bigdata01:9000)
    path :路径

  2. 上传文件

# 上传 NOTICE.txt 文件至根路径
hdfs dfs -put NOTICE.txt hdfs://bigdata01:9000/
  1. 查看指定路径信息
# 查看根目录下信息
hdfs dfs -ls hdfs://bigdata01:9000/

# 查看根目录多级文件及目录信息
hdfs dfs -ls -R hdfs://bigdata01:9000/


4. 查看 HDFS 文件内容

# 查看 NOTICE.txt 文件内容
hdfs dfs -cat hdfs://bigdata01:9000/NOTICE.txt
  1. 下载文件到本地
# 下载 NOTICE.txt 文件至本地当前目录下
hdfs dfs -get hdfs://bigdata01:9000/NOTICE.txt .
# 下载 NOTICE.txt 文件至本地上一层目录下
hdfs dfs -get hdfs://bigdata01:9000/NOTICE.txt ../
# 下载 NOTICE.txt 文件至本地当前目录下并指定新文件名
hdfs dfs -get hdfs://bigdata01:9000/NOTICE.txt NOTICE.txt.bak


6. 创建目录

# 在根目录下创建 test 目录
hdfs dfs -mkdir hdfs://bigdata01:9000/test
# 递归创建多级目录
hdfs dfs -mkdir -p hdfs://bigdata01:9000/abc/xyz
  1. 删除文件及目录
# 删除 NOTICE.txt 文件
hdfs dfs -rm hdfs://bigdata01:9000/NOTICE.txt
# 删除 NOTICE.txt 文件
hdfs dfs -rm -r hdfs://bigdata01:9000/abc

8. 统计目录下文件数量

# 统计根目录下文件数量
hdfs dfs -ls hdfs://bigdata01:9000/

9. 统计目录下文件大小

# 统计根目录下文件大小
hdfs dfs -ls hdfs://bigdata01:9000/ | grep / | awk -F ' ' '{print $8,$5}'

Java操作HDFS

  • 由于操作 HDFS 会进行用户验证,配置不进行验证
# 停止服务
stop-all.sh
# 打开配置文件 hdfs-site.xml
vi /usr/local/hadoop-3.2.0/etc/hadoop/hdfs-site.xml
# 添加如下属性
<property><name>dfs.permissions.enabled</name><value>false</value>
</property>
# 启动服务
start-all.sh
# 查看进程是否正确
jps
  • Maven 项目进入依赖
<!-- 引入 hadoop-3.2.0 依赖-->
<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.2.0</version>
</dependency>
  • 写如下测试代码
package com.july.hdfs;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 org.apache.hadoop.io.IOUtils;import java.io.*;/*** @Auther: july* @Date: 2022-02-19 - 18:29 * @Description: 对 hadoop3.2.0 HDFS 上传文件、下载文件、删除文件操作* @version: 1.0*/
public class HdfsDemo {public static void main(String[] args) throws IOException {// 创建一个配置对象Configuration conf = new Configuration();// 指定 HDFS 地址conf.set("fs.defaultFS", "hdfs://192.168.30.128:9000");// 获取操作 HDFS 的对象FileSystem fileSystem = FileSystem.get(conf);// 上传文件//new HdfsDemo().uploadFile(fileSystem);// 下载文件//new HdfsDemo().downloadFile(fileSystem);// 删除文件或目录new HdfsDemo().deleteFile(fileSystem);}// 删除文件public void deleteFile(FileSystem fileSystem) {try {// 删除指定的文件或目录,当删除目录时第二个参数设置为 true 为递归删除boolean result = fileSystem.delete(new Path("/test.txt"), true);System.out.println( result ? "删除成功" : "删除失败");} catch (IOException e) {e.printStackTrace();}}// 下载文件public void downloadFile(FileSystem fileSystem) {OutputStream outputStream;FSDataInputStream fsDataInputStream;try {// 本地文件输出流outputStream = new FileOutputStream("D:\\NOTICE.txt");// 获取 HDFS 文件系统的输入流fsDataInputStream = fileSystem.open(new Path("/NOTICE.txt"));// 下载文件,并自动关闭流IOUtils.copyBytes(fsDataInputStream, outputStream, 1024, true);} catch (Exception e) {e.printStackTrace();}}// 上传文件public void uploadFile(FileSystem fileSystem) {InputStream inputStream;FSDataOutputStream fsDataOutputStream;try {// 本地文件输入流inputStream = new FileInputStream("C:\\test.log");// 获取 HDFS 文件系统的输出流fsDataOutputStream = fileSystem.create(new Path("/test.log"));// 上传文件,并自动关闭流IOUtils.copyBytes(inputStream, fsDataOutputStream, 1024, true);} catch (Exception e) {e.printStackTrace();}}
}

Hadoop之HDFS的使用相关推荐

  1. 安装完Hadoop之后,命令行输入hadoop或hdfs却找不到命令的解决方法

    安装完Hadoop之后,命令行输入hadoop或hdfs却找不到命令的解决方法 参考文章: (1)安装完Hadoop之后,命令行输入hadoop或hdfs却找不到命令的解决方法 (2)https:// ...

  2. Hadoop基础-HDFS集群中大数据开发常用的命令总结

    Hadoop基础-HDFS集群中大数据开发常用的命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本盘博客仅仅列出了我们在实际生成环境中常用的hdfs命令,如果想要了解更多, ...

  3. Hadoop之HDFS面试知识复习

    Hadoop之HDFS面试知识复习 目录 HDFS的存储机制 secondary namenode工作机制 NameNode与SecondaryNameNode 的区别与联系? hdfs整体架构介绍 ...

  4. Hadoop之HDFS读写数据流程

    Hadoop之HDFS读写数据流程 目录 HDFS写数据流程 HDFS读数据流程 网络拓扑概念 机架感知 1. HDFS写数据流程 HDFS写数据流程,如下图 客户端通过Distributed Fil ...

  5. Hadoop之HDFS常用Shell命令

    Hadoop之HDFS常用Shell命令 启动Hadoop集群 sbin/start-dfs.shsbin/start-yarn.sh -help:输出这个命令参数 hadoop fs -help r ...

  6. Hadoop之HDFS概述

    Hadoop之HDFS概述 目录 HDFS产生背景 HDFS概念 HDFS优缺点 HDFS组成架构 1. HDFS产生背景 随着数据量越来越大,在一个操作系统管辖的范围内存不下了,那么就分配到更多的操 ...

  7. Hadoop之HDFS文件操作

    摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HD ...

  8. Spring boot项目整合Hadoop的HDFS

    由于最近需要使用Spring boot整合Hadoop的HDFS,但是在整合的过程遇到了很多问题,网上也没有现成教程,都是自己摸索出来的,配置了很久都没能把项目搭建出来,希望对大家有帮助. 使用Spr ...

  9. Hadoop点滴-HDFS命令行接口

    1.-help[cmd] 显示命令的帮助信息 ./hdfs dfs -help ls1 2.-ls(r) 显示当前目录下的所有文件 -R层层循出文件夹 ./hdfs dfs -ls /log/map ...

  10. Hadoop基础-Hdfs各个组件的运行原理介绍

    Hadoop基础-Hdfs各个组件的运行原理介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode工作原理(默认端口号:50070) 1>.什么是NameN ...

最新文章

  1. html怎么让文本自动换行不,【HTML】让pre标签文本自动换行
  2. 题目1103:二次方程计算器
  3. C++的cin和cout取消同步
  4. SAP Spartacus not found页面的显示触发机制 - ErrorPageTemplate
  5. mysql allowmultiqueries=true_Mysql批量更新的一个坑-allowMultiQueries=true允许批量更新(转)...
  6. mac版crt8.0.2打开无响应怎么办_Mac电脑程序无响应怎么办?教你强制退出无响应程序...
  7. 人们的Live Meeting系列 (floyd)
  8. border做三角形
  9. 使用Apache + knewcode,用传统C++构建Web网站
  10. Java基础篇:什么是异常,异常处理的基础是什么?
  11. 大学本科计算机考试小抄,大学考试竟允许光明正大打小抄你也考不过
  12. 迪文屏串口更新协议了解
  13. 实习日记 08/23 day33 理解JVM---Java核心卷中的并发
  14. MATLAB学习(一)——————format 命令
  15. iOS源码资源之各种项目源码汇总
  16. php抢购问题,PHP并发抢购解决方案
  17. k8s(二):cenos7下搭建k8s集群(kubeamd方式)
  18. 网页制作流程--(项目案例)学成在线
  19. 【前言】 VVC理论知识之基本框架
  20. python实现面部特效_Python 3 利用 Dlib 实现摄像头实时人脸检测和平铺显示

热门文章

  1. /Volumes/TeXLive2019/install-tl: No binary platform specified/available, quitting.
  2. 使用canvas将多张图片合并为一张
  3. S3(Simple Storage Service) 对象存储 详细介绍
  4. python计算单词长度_python – 返回字符串中的单词长度
  5. keil 中 warning: #1-D: last line of file ends without a newline的解决办法
  6. 我的过错不值得原谅,麻木的岁月我还要背负多久。
  7. Java常用工具类-发短信(集成华软通信短信网关)
  8. 国内运营商的Sim卡在日版iPhone上的使用方法(卡贴安装方法)
  9. vue自定义组件,ElementUi表单校验v-model不能即时生效的解决方法
  10. 基于C语言设计的一个医院叫号系统