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

HDFS的概念及shell操作

HDFS 产出背景及定义

产生背景

        随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系

统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这

就是分布式文件管理系统。HDFS 只是分布式文件管理系统中的一种。

定义

        HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目
录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务
器有各自的角色。

HDFS组成架构

1.NameNode

就是Master,它 是一个主管、管理者。

作用:

(1)管理HDFS的名称空间;

(2)配置副本策略;

(3)管理数据块(Block)映射信息;

(4)处理客户端读写请求。

2.DataNode

就是Slave。NameNode 下达命令,DataNode执行实际的操作。

(1)存储实际的数据块;

(2)执行数据块的读/写操作。

3.Client

就是客户端。

(1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传;

(2)与NameNode交互,获取文件的位置信息;

(3)与DataNode交互,读取或者写入数据;

(4)Client提供一些命令来管理HDFS,比如NameNode格式化;

(5)Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作;

4.Secondary NameNode

并非NameNode的热备。当NameNode挂掉的时候,它并不 能马上替换NameNode并提供服务。

(1)辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ; (2)在紧急情况下,可辅助恢复NameNode。

HDFS 文件块大小

HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数 ( dfs.blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M。

如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开 始位置所需的时间。导致程序在处理这块数据时,会非常慢。

HDFS 的 Shell 操作

基本语法

hdfs dfs 具体命令 或者  hadoop fs 具体命令 
两者效果完全相同

准备工作

1、首先将hadoop集群启动

start-dfs.sh
start-yarn.sh

2、查看命令详细解释

hdfs dfs -help rm

翻译:

 -rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ... :
  删除与指定文件模式匹配的所有文件。相当于Unix
  命令 “rm<src>”
                                                                                 
-f 如果该文件不存在,则不显示诊断消息或
              修改退出状态以反映错误。                       
  -[rR] 递归删除目录。                                  
  -跳过废纸篓选项会绕过废纸篓(如果启用),并立即删除<src>。 
  - 安全选项需要安全确认,如果启用,需要         
              删除超过的大目录前的确认       
              <hadoop.shell.delete.limit.num.files> 文件。预计在以下情况下会出现延迟
              递归地遍历大目录以计算   
              确认前要删除的文件。  

3、创建文件夹

在hdfs中创建一个名为HelloHadoop的文件夹

 hadoop fs -mkdir /HelloHadoop

 创建完毕我们可以在web界面中看到该文件夹

 上传命令

1、-moveFromLocal:从本地剪切粘贴到 HDFS

先在hadoop中新建一个hdfs1.txt的文件并在里面写入helloHdfs

vim hdfs1.txt

执行命令将该文件剪切到HDFS的HelloHadoop文件夹中

hdfs dfs -moveFromLocal ./hdfs1.txt /HelloHadoop

 在web界面中查看该文件

 

2、-copyFromLocal:从本地文件系统中拷贝文件到 HDFS 路径去

在hadoop中创建hdfs2.txt文件并在里面输入helloHDFS

vim hdfs2.txt

 执行命令将该文件复制到HDFS的HelloHadoop文件夹中

hdfs dfs -copyFromLocal ./hdfs2.txt /HelloHadoop

  在web界面中查看该文件

 

3、-put:等同于 copyFromLocal,生产环境更习惯用 put

在hadoop中创建hdfs3.txt文件并在里面输入helloDFS

vim hdfs3.txt

  执行命令将该文件复制到HDFS的HelloHadoop文件夹中

hdfs dfs -put ./hdfs3.txt /HelloHadoop

 

 在web界面中查看该文件

4、 -appendToFile:追加一个文件到已经存在的文件末尾

在hadoop中创建hdfs4.txt文件并在里面输入abc

vim hdfs4.txt

执行命令将该文件中的内容追加到HDFS的HelloHadoop文件夹中的hdfs1.txt中

 hdfs dfs -appendToFile ./hdfs4.txt /HelloHadoop/hdfs1.txt

 使用查看命令查看追加到hdfs1.txt中的内容

 hdfs dfs -cat /HelloHadoop/hdfs1.txt

 我们可以看到hdfs4.txt中的内容abc已经追加到了hdfs1.txt中

下载命令

1、-copyToLocal:从 HDFS 拷贝到本地

执行命令将HelloHadoop文件夹下的hdfs1.txt文件复制到本地的home文件夹中

hdfs dfs -copyToLocal /HelloHadoop/hdfs1.txt /home

 进到home目录中查看文件拷贝成功

 

2.-get:等同于 copyToLocal,生产环境更习惯用 get

执行命令将HelloHadoop文件夹下的hdfs2.txt文件复制到本地的home文件夹中

 hdfs dfs -get /HelloHadoop/hdfs2.txt /home

  进到home目录中查看文件拷贝成功

 

系统操作命令

1、-ls: 显示目录信息

执行命令查看目录信息

 hdfs dfs -ls /HelloHadoop

 

2、-cat:显示文件内容

执行命令查看HelloHadoop文件夹中hdfs1.txt文件中的内容

 hdfs dfs -cat /HelloHadoop/hdfs1.txt

3、-chgrp、-chmod、-chown:Linux 文件系统中的用法一样,修改文件所属权限 

hdfs dfs -chmod 666 /HelloHadoop/hdfs1.txt

4、-mkdir:创建路径

在HDFS中创建一个名为hhh的目录

hdfs dfs -mkdir /hhh

5、-cp:从 HDFS 的一个路径拷贝到 HDFS 的另一个路径 

 执行命令将HelloHadoop目录中的hdfs1.txt文件拷贝到hhh目录中

hdfs dfs -cp /HelloHadoop/hdfs1.txt /hhh

查看hhh目录 拷贝成功

 

6、-mv:在 HDFS 目录中移动文件

 执行命令将HelloHadoop目录中的hdfs2.txt文件移动到hhh目录中

hdfs dfs -mv /HelloHadoop/hdfs2.txt /hhh

7、-tail:显示一个文件的末尾 1kb 的数据

执行命令查看HelloHadoop目录中的hdfs1.txt文件末尾1kb大小的内容

 hdfs dfs -tail /HelloHadoop/hdfs1.txt

 

8、-rm:删除文件或文件夹、

执行命令删除HelloHadoop目录中的hdfs2.txt文件

hdfs dfs -rm /HelloHadoop/hdfs2.txt

9、-rm -r:递归删除目录及目录里面内容

执行命令遍历删除HelloHadoop目录中的所有文件

hdfs dfs -rm -r /HelloHadoop

10、-du: 统计文件夹的大小信息

11、-setrep:设置 HDFS 中文件的副本数量

执行命令更改HelloHadoop目录中的hdfs1.txt文件的副本数量

相关文章:

  • Spring Web 应用程序中的 Flash 属性指南
  • 虚拟机共享物理机网路的NAT连接方法
  • Netty入门——基于NIO实现机器客服案例
  • Maven项目管理工具
  • 探索可观测性:AIOps中的时序数据应用
  • RISCV:cv_regress
  • 计算机毕业设计Java校园管理系统(系统+源码+mysql数据库+lw文档)
  • (附源码)Springboot中北创新创业官网 毕业设计 271443
  • Go语学习笔记 - 实现将mp4通过rtmp推送流媒体服务
  • 读取HDFS数据写入MySQL_大数据培训
  • MySQL日志管理(十一)
  • 前端一面经典vue面试题(持续更新中)
  • leetcode 638. 大礼包-思路整理
  • [附源码]Python计算机毕业设计Django新冠疫苗接种预约系统
  • “无所不能”的 ChatGPT,正准备把各行各业打得满地找牙
  • Mac系统安装Kafka 3.x及可视化工具
  • HTML学生个人网站作业设计:HTML做一个公司官网首页页面(纯html代码)
  • 一个超好看的音乐网站设计与实现(HTML+CSS)
  • winform 处理tabcontrol控件,隐藏顶部的tab标签,及tabcontrol的边框线
  • ESB产品Oracle数据库升级说明
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉