HDFS命令

HDFS命令
HDFS使用的典型块大小为128 MB。因此,一个HDFS文件被分成128 MB的块,如果可能的话,每个块将驻留在不同的DataNode上。
dfs和fs的区别:fs在本地和HDFS交互时使用。dfs仅仅是针对于HDFS。
创建命令
$ hadoop fs -mkdir -p delete / test1$ hadoop fs -mkdir -p delete / test2$ hadoop fs -ls delete/
第一种删除 ,将要删文件移入垃圾箱
$ hadoop fs -rm -r delete / test1将hdfs:// localhost:8020 / user / hadoop / delete / test1移至:hdfs:// localhost:8020 / user / hadoop / .Trash / Current
第二种删除,直接删除要删文件
$ hadoop fs -rm -r -skipTrash delete / test2 删除/ test2
查看垃圾箱文件
$ hadoop fs -ls .Trash / Current / user / hadoop (hdp)/ delete /
移动文件命令 :从垃圾目录中将被删除文件移动到目标目录中
$ hadoop fs -mv /user/hdp/.Trash/Current/user/hdp/delete /user/hdp/hadoop101/testsun
  • hadoop fs -mv / user / hadoop / file1 / user / hadoop / file2
  • hadoop fs -mv hdfs://nn.example.com/file1 hdfs://nn.example.com/file2 hdfs://nn.example.com/file3 hdfs://nn.example.com/dir1
上传文件命令 :从将本地文件上传到hadoop中(因为你无法直接修改hadoop中的文件,所以必须本地修改再上传)
$ hadoop fs -put test.txt /tmp/hadoop101
读取文件内容的命令:
$ hadoop fs -cat /tmp/hadoop101/test.txt
文件复制到本地文件系统的命令:
$ hadoop fs -get /tmp/hadoop101/testsun/sun.txt testsun/delete
  • hadoop fs -get / user / hadoop / file localfile
  • hadoop fs -get hdfs://nn.example.com/user/hadoop/file localfile
  • -p:保留访问和修改时间,所有权和权限。(假设权限可以跨文件系统传播)-f:覆盖目标,如果它已经存在。
  • -ignorecrc:跳过对下载的文件进行CRC校验。-crc:为下载的文件写入CRC校验和。
查看给定目录中包含的文件和目录大小的命令:
$ hadoop fs -du /tmp/hadoop101
显示具体文件大小 的命令:
$ hadoop fs -du -s /tmp/hadoop101/testsun/sun.txt
$ hadoop fs -dus /tmp/hadoop101/testsun/sun.txt(旧版)
创建一个指定name的 文件:(Linux中创建文件是touch)
$ hadoop fs -touchz /tmp/hadoop101/sh.txt
HDFS Federation机制
NameNod内存空间使用过高的问题,紧接着提到了其中一个解决方案,就是 HDFS Federation .
所有关于存储数据的信息和管理是放在NameNode这边,而真实数据的存储则是在各个DataNode下.而这些隶属于同一个NameNode所管理的数据都是在同一个命名空间下的.而一个namespace对应一个block pool.Block Pool是同一个namespace下的block的集合.
HDFS Federation 意味着在集群中将会有多个namenode/namespace,多namespace的方式可以直接减轻单一NameNode的压力.我们完全可以将上面部分大的文件目录移到另外一个NameNode上做管理. 更重要的一点在于,这些NameNode是共享集群中所有的DataNode的,它们还是在同一个集群内的


HDFS Federation方案的优势
第一点,命名空间的扩展.因为随着集群使用时间的加长,HDFS上存放的数据也将会越来越多.这个时候如果还是将所有的数据都往一个NameNode上存放,这个文件系统会显得非常的庞大.这时候我们可以进行横向扩展,把一些大的目录分离出去.使得每个NameNode下的数据看起来更加的精简.
第二点,性能的提升.这个也很好理解.当NameNode所持有的数据量达到了一个非常大规模的量级的时候(比如超过1亿个文件),这个时候NameNode的处理效率可能就会有影响,它可能比较容易的会陷入一个繁忙的状态. 而整个集群将会受限于一个单点NameNode的处理效率,从而影响集群整体的吞吐量. 这个时候多NameNode机制显然可以减轻很多这部分的压力.
第三点,资源的隔离.这一点考虑的就比较深了.通过多个命名空间, 我们可以将关键数据文件目录移到不同的NameNode上,以此不让这些关键数据的读写操作受到其他普通文件读写操作的影响 .也就是说这些NameNode将会只处理特定的关键的任务所发来的请求,而屏蔽了其他普通任务的文件读写请求,以此做到了资源的隔离。
### HDFS 命令列表及使用方法 以下是常见的 HDFS 命令及其具体用法: #### 创建目录 用于在 HDFS 上创建新目录。可以指定路径来定义要创建的目录位置。 ```bash hdfs dfs -mkdir /path/to/directory ``` 此命令会在 HDFS 的根目录下创建名为 `directory` 的文件夹[^1]。 #### 列出文件和目录 显示指定路径下的所有文件和子目录的内容。 ```bash hdfs dfs -ls /path/to/directory ``` 该命令会返回目标路径下的文件名、权限、大小和其他元数据信息[^3]。 #### 递归列出文件和目录 当需要查看某个目录以及其所有子目录中的内容时,可使用 `-lsr` 参数执行递归操作。 ```bash hdfs dfs -lsr /path/to/directory ``` 这相当于 Unix 系统中的 `ls -R` 命令。 #### 删除文件或目录 删除单个文件或整个目录(需谨慎)。对于非空目录,默认情况下无法直接删除;可以通过添加参数强制完成。 ```bash hdfs dfs -rm /path/to/file # 删除单一文件 hdfs dfs -rm -r /path/to/folder # 强制移除目录及其内部项 ``` #### 复制本地文件到 HDFS 或反之亦然 把计算机上的普通文档上传至分布式存储系统中保存起来供后续处理分析之用; 或者下载已存在的远程资源回到个人机器上做进一步研究学习等用途皆可通过下面两条语句实现: ```bash hdfs dfs -put local_file_path hdfs_destination_path # 将本地文件放入HDFS hdfs dfs -get hdfs_source_path local_destination_path # 把HDFS里的东西取回本机硬盘里去存档备份之类的工作场景非常实用哦~ ``` 需要注意的是,在实际应用过程中可能会遇到不同版本之间存在细微差异的情况——即有些环境可能支持省略掉“fs”这部分而仅仅保留核心动词部分即可正常运行相应功能模块;还有就是如果事先做好了全局配置的话甚至连前面那个单词都能省略掉从而达到更加简洁明快的效果呢!不过具体情况还得视项目部署情况和个人习惯偏好来做最终决定啦~[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值