百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Hadoop学习---HDFS的常用shell命令详解

bigegpt 2024-09-12 11:18 83 浏览

注意:访问hdfs系统的指令

hadoop dfs --- 已过时
hadoop fs -- 使用范围更大
hdfs dfs --范围相对较小

hadoop fs 和 hdfs dfs之间没有太大的区别

1. 在命令行中输入hdfs,回车后,就会提示hdfs后可以使用哪些命令,其中有一个是dfs。
2. 在命令行中输入hdfs dfs,回车后,就会提示dfs后可以添加的一些常用shell命令

常用shell命令

注意:分布式文件系统的路径在命令行中 要从/开始写,即绝对路径
?
1. 创建目录

[-mkdir [-p] <path> ...]#在分布式文件系统上创建目录 -p,多层级创建
调用格式:hdfs dfs -mkdir(-p) /目录

2. 上传指令

[-put [-f] [-p] [-l] <localsrc> ... <dst>]   #将本地文件系统的文件上传到分布式文件系统
调用格式:hdfs dfs -put/本地文件 /hadoop

注意:
1)/hadoop是hdfs上面的路径的减缩版,全称是:hdfs://namenode的名字:分布式文件系统的端口号/hadoop           例如:hdfs://master:9000/hadoop  
2)hadoop作为文件,在操作之前是可以不存在的.
?
[-moveFromLocal <localsrc> ... <dst>]#将本地文件系统的文件上传到分布式文件系统
调用格式:同put

注意:这里是将本地文件剪切到分布式文件系统
?
[-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]
调用格式:同put

注意:这里是将本地文件拷贝到分布式文件系统

3. 查看指令

[-ls [-d] [-h] [-R] [<path> ...]]#查看分布式文件系统的目录里内容
调用格式:hdfs dfs -ls/

[-cat [-ignoreCrc] <src> ...]  #查看分布式文件系统的文件内容
调用格式:hdfs dfs -cat/xxx.txt

[-tail [-f] <file>]#查看分布式文件系统的文件内容
调用格式:hdfs dfs -tail/xxx.txt

注意:默认最多查看1000行

4. 下载指令

[-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
调用格式:hdfs dfs -copyToLocal/hdfs上的路径   /本地路径   例如:hdfs dfs -copyToLocal/hadoop /root/hadooptest

注意:
1)本地路径的文件夹可以不存在
2)这里是将hadoop整体拷贝到线下路径中
?
[-moveToLocal <src> <localdst>]

注意:从hdfs的某个路径将数据剪切到本地,已经被遗弃了.不能使用.
?
[-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
调用格式:同copyToLocal
?
5. 删除指令

[-rm [-f] [-r|-R] [-skipTrash] <src> ...]
调用格式:hdfs dfs -rm-r/hadoop

注意:如果删除文件夹需要加-r

[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
调用格式:hdfs dfs -rmdir/hadoop
注意:hadoop必须是空文件夹,如果非空必须使用rm删除

6. 查看磁盘利用率和文件大小

[-df [-h] [<path> ...]] 查看分布式系统的磁盘使用情况
调用格式:hdfs dfs -df/

[-du [-s] [-h] <path> ...]#查看分布式系统上当前路径下文件的情况-h:human 以人类可读的方式显示
调用格式:hdfs dfs -du/hadoop
?
7. 向分布式文件系统中的文件里追加内容

[-appendToFile <localsrc> ... <dst>]
调用格式:hdfs dfs -appendToFile本地文件     hdfs上的文件

注意:不支持在中间随意增删改操作

8. 修改权限的,跟本地的操作一致,-R是让子目录或文件也进行相应的修改

[-chgrp [-R] GROUP PATH...]

[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]

[-chown [-R] [OWNER][:[GROUP]] PATH...]
?
9. 修改文件的副本数

[-setrep [-R] [-w] <rep> <path> ...]
调用格式:hadoop fs -setrep 3/   将hdfs根目录及子目录下的内容设置成3个副本

注意:当设置的副本数量与初始化时默认的副本数量不一致时,集群会作出反应,比原来多了会自动进行复制.

10. 查看文件的状态

hdfs dfs [generic options] -stat[format] <path> ...
命令的作用:当向hdfs上写文件时,可以通过dfs.blocksize配置项来设置文件的block的大小。这就导致了hdfs上的不同的文件block的大小是不相同的。有时候想知道hdfs上某个文件的block大小,可以预先估算一下计算的task的个数。stat的意义:可以查看文件的一些属性。
调用格式:hdfs dfs -stat[format] 文件路径
format的形式:
%b:打印文件的大小(目录大小为0)
%n:打印文件名
%o:打印block的size
%r:打印副本数
%y:utc时间 yyyy-MM-dd HH:mm:ss
%Y:打印自1970年1月1日以来的utc的微秒数
%F:目录打印directory,文件打印regular file
?
注意:
1)当使用-stat命令但不指定format时,只打印创建时间,相当于%y
2)-stat 后面只跟目录,%r,%o等打印的都是0,只有文件才有副本和大小

11. 测试  

hdfs dfs [generic options] -test-[defsz] <path>    
参数说明: -e:文件是否存在 存在返回0    -z:文件是否为空 为空返回0   -d:是否是路径(目录) ,是返回0
调用格式:hdfs dfs -test-d文件 

实例:hdfs dfs -test-d/shelldata/111.txt && echo"OK"|| echo"no"
解释:测试当前的内容是否是文件夹 ,如果是返回ok,如果不是返回no

12. 创建空文件

hdfs dfs [generic options] -touchz<path> ...   
调用格式:hdfs dfs touchz /hadooptest.txt

13. 显示当前文件夹及子文件夹的数量   子文件的数量以及 总大小

hdfs dfs [generic options] -count[-q] [-h] <path> ...   
调用格式:hdfs dfs  -count  /hadoop

14. 合并下载

hdfs dfs [generic options] -getmerge[-nl] <src> <localdst>
调用格式:hdfs dfs -getmergehdfs上面的路径   本地的路径    

实例:hdfs dfs -getmergo/hadoopdata/*.xml /root/test.test

15. 移动hdfs中的文件(更名)

hdfs dfds [generic options] -mv<src> ... <dst>   
调用格式:hdfs dfs -mv/hdfs的路径1 /hdfs的另一个路径2    

实例:hfds dfs -mv/aaa   /bbb 这里是将aaa整体移动到bbb中

16. 复制hdfs中的文件到hdfs的另一个目录

hdfs dfs [generic options] -cp[-f] [-p | -p[topax]] <src> ... <dst>
调用格式:hdfs dfs -cp/hdfs路径_1 /hdfs路径_2

17.设置Hadoop回收站trash: 当我们不小心删掉文件时,还有后悔药吃.
17.1 修改conf/core-site.xml文件

注意:我们需要在namenode和datanode同时设置垃圾回收,如果namenode可以使用,
datanode 的无效,如果namenode的失效了,会自动调用datanode的设置
?
<property>
  <name>fs.trash.interval</name>
<!-- 1440分钟后检查点会被清除,如果为0,垃圾回收站不会启用. -->
  <value>1440</value>
  </property>
<property>  
   <name>fs.trash.checkpoint.interval</name>  
   <value>0</value> 
</property>
?
解释:

一:检查点:

执行下面的语句后出现的.Trash/190907043825就是检查点
[root@master sbin]# hadoop fs -ls /user/root/.Trash/
19/09/07 05:15:42 WARN util.NativeCodeLoader: Unable to load native-hadoop library foryour platform... using builtin-java classes where applicable
Found 2items
drwx------   -root supergroup          02019-09-0704:36 /user/root/.Trash/190907043825
drwx------   -root supergroup          02019-09-0705:15 /user/root/.Trash/Current

二:fs.trash.interval

分钟数,当超过这个分钟数后检查点会被删除。如果为零,回收站功能将被禁用。默认是0.单位分钟。这里我设置的是1天(60*24) 
删除数据rm后,会将数据move到当前文件夹下的.Trash/current目录

三:fs.trash.checkpoint.interval

检查点创建的时间间隔(单位为分钟)。其值应该小于或等于fs.trash.interval。如果为零,则将该值设置为fs.trash.interval的值。

四:删除过程分析

这里的Deletion interval表示检查点删除时间间隔(单位为分钟)
这里的Emptier interval表示在运行线程来管理检查点之前,NameNode需要等待多长时间(以分钟为单位),即检查点创建时间间隔.NameNode删除超过fs.trash.interval的检查点,并为/user/${username}/.Trash/Current创建一个新的检查点。该频率由fs.trash.checkpoint.interval的值确定,且不得大于Deletion interval。这确保了在emptier窗口内回收站中有一个或多个检查点。

[root@master sbin]# hadoop fs -rm -r /hadoop4.txt
19/09/07 05:15:24 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval =1440minutes, Emptier interval =0minutes.
Moved: 'hdfs://master:9000/hadoop4.txt'to trash at: hdfs://master:9000/user/root/.Trash/Current
?
例如:
fs.trash.interval =120(deletion interval =2hours)
fs.trash.checkpoint.interval =60(emptier interval =1hour)
?
说明:
这导致NameNode为Current目录下的垃圾文件每小时创建一个新的检查点,并删除已经存在超过2个小时的检查点。
?
在回收站生命周期结束后,NameNode从HDFS命名空间中删除该文件。删除文件会导致与文件关联的块被释放。请注意,用户删除文件的时间与HDFS中相应增加可用空间的时间之间可能存在明显的时间延迟,即用户删除文件,HDFS可用空间不会立马增加,中间有一定的延迟。
?
五:expunge 清空回收站

要想使用这个命令,首先得有回收站,即fs.trash.interval的值不能为0
当我们执行expunge命令时,其实是会立刻创建一个新的检查点,并将/.Trash/Current中的内容立刻放入这个检查点.
实例: [root@master sbin]# hadoop fs -expunge 
19/09/07 05:15:58 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval =1440minutes, Emptier interval =0minutes.
19/09/07 05:15:58 INFO fs.TrashPolicyDefault: Created trash checkpoint: /user/root/.Trash/190907051558
?
六:如果想绕过垃圾回收站并立即从文件系统中删除文件。可以执行 hadoop fs  -rm-skipTrash

[root@master sbin]# hadoop fs -rm -skipTrash /hadoop111.txt
19/09/07 05:50:13 WARN util.NativeCodeLoader: Unable to load native-hadoop library foryour platform... using builtin-java classes where applicable
Deleted /hadoop111.txt
?
?
17.2.测试 

1)新建目录input

[root@master:/data/soft]# hadoop fs -mkdir /input
?
2)上传文件

[root@master:/data/soft]# hadoop fs -copyFromLocal /data/soft/file0* /input
?
3)删除目录input

[root@master data]# hadoop fs -rmr /input 
Moved to trash: hdfs://master:9000/user/root/input
?
4)参看当前目录

[root@master data]# hadoop fs -ls 
Found 2items 
drwxr-xr-x -root supergroup 02011-02-1222:17 /user/root/.Trash
发现input删除,多了一个目录.Trash
?
5)恢复刚刚删除的目录

[root@master data]# hadoop fs -mv /user/root/.Trash/Current/user/root/input /user/root/input
?
6)检查恢复的数据

[root@master data]# hadoop fs -ls input 
Found 2items 
-rw-r--r--3root supergroup 222011-02-1217:40 /user/root/input/file01 
-rw-r--r--3root supergroup 282011-02-1217:40 /user/root/input/file02

7)删除.Trash目录(清理垃圾)

[root@master data]# hadoop fs -rmr .Trash 
Deleted hdfs://master:9000/user/root/.Trash

相关推荐

当Frida来“敲”门(frida是什么)

0x1渗透测试瓶颈目前,碰到越来越多的大客户都会将核心资产业务集中在统一的APP上,或者对自己比较重要的APP,如自己的主业务,办公APP进行加壳,流量加密,投入了很多精力在移动端的防护上。而现在挖...

服务端性能测试实战3-性能测试脚本开发

前言在前面的两篇文章中,我们分别介绍了性能测试的理论知识以及性能测试计划制定,本篇文章将重点介绍性能测试脚本开发。脚本开发将分为两个阶段:阶段一:了解各个接口的入参、出参,使用Python代码模拟前端...

Springboot整合Apache Ftpserver拓展功能及业务讲解(三)

今日分享每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您,同时也希望获得您的支持和关注。架构开源地址:https://gitee.com/msxyspringboot整合Ftpserver参...

Linux和Windows下:Python Crypto模块安装方式区别

一、Linux环境下:fromCrypto.SignatureimportPKCS1_v1_5如果导包报错:ImportError:Nomodulenamed'Crypt...

Python 3 加密简介(python des加密解密)

Python3的标准库中是没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto和cryptography上,我...

怎样从零开始编译一个魔兽世界开源服务端Windows

第二章:编译和安装我是艾西,上期我们讲述到编译一个魔兽世界开源服务端环境准备,那么今天跟大家聊聊怎么编译和安装我们直接进入正题(上一章没有看到的小伙伴可以点我主页查看)编译服务端:在D盘新建一个文件夹...

附1-Conda部署安装及基本使用(conda安装教程)

Windows环境安装安装介质下载下载地址:https://www.anaconda.com/products/individual安装Anaconda安装时,选择自定义安装,选择自定义安装路径:配置...

如何配置全世界最小的 MySQL 服务器

配置全世界最小的MySQL服务器——如何在一块IntelEdison为控制板上安装一个MySQL服务器。介绍在我最近的一篇博文中,物联网,消息以及MySQL,我展示了如果Partic...

如何使用Github Action来自动化编译PolarDB-PG数据库

随着PolarDB在国产数据库领域荣膺桂冠并持续获得广泛认可,越来越多的学生和技术爱好者开始关注并涉足这款由阿里巴巴集团倾力打造且性能卓越的关系型云原生数据库。有很多同学想要上手尝试,却卡在了编译数据...

面向NDK开发者的Android 7.0变更(ndk android.mk)

订阅Google官方微信公众号:谷歌开发者。与谷歌一起创造未来!受Android平台其他改进的影响,为了方便加载本机代码,AndroidM和N中的动态链接器对编写整洁且跨平台兼容的本机...

信创改造--人大金仓(Kingbase)数据库安装、备份恢复的问题纪要

问题一:在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录,您可...

OpenSSH 安全漏洞,修补操作一手掌握

1.漏洞概述近日,国家信息安全漏洞库(CNNVD)收到关于OpenSSH安全漏洞(CNNVD-202407-017、CVE-2024-6387)情况的报送。攻击者可以利用该漏洞在无需认证的情况下,通...

Linux:lsof命令详解(linux lsof命令详解)

介绍欢迎来到这篇博客。在这篇博客中,我们将学习Unix/Linux系统上的lsof命令行工具。命令行工具是您使用CLI(命令行界面)而不是GUI(图形用户界面)运行的程序或工具。lsoflsof代表&...

幻隐说固态第一期:固态硬盘接口类别

前排声明所有信息来源于网络收集,如有错误请评论区指出更正。废话不多说,目前固态硬盘接口按速度由慢到快分有这几类:SATA、mSATA、SATAExpress、PCI-E、m.2、u.2。下面我们来...

新品轰炸 影驰SSD多款产品登Computex

分享泡泡网SSD固态硬盘频道6月6日台北电脑展作为全球第二、亚洲最大的3C/IT产业链专业展,吸引了众多IT厂商和全球各地媒体的热烈关注,全球存储新势力—影驰,也积极参与其中,为广大玩家朋友带来了...