Hadoop从入门到精通系列之--4.HDFS概述和HDFS的shell操作

目录

一 HDFS概述

二 HDFS的优缺点

2.1优点

2.2缺点

三 HDFS的组成结构

四 HDFS文件块的大小

4.1 什么是块

4.2总结

五 HDFS的shell操作

5.1基本语法

5.2常用命令


一 HDFS概述

HDFS(Hadoop  Distributed   File  System)是一个文件系统,主要用来解决一个操作系统不能存储大量数据,所以讲数据存储在多台操作系统上,就需要一个文件系统管理多台操作系统,HDFS只是分布式文件管理信息系统的一种。

HDFS的适用场景:适合一次写入,多次读出的场景,且不支持文件的修改,适合用来做数据分析,不适合用来做网盘应用。

二 HDFS的优缺点

2.1优点

  1. 高容错性:自动保存多个副本,且当一个副本丢失的时候,它可以自动寻找另一台机器备份一份
  2. 适合处理大数据:GB、TB以上级别
  3. 可构建在廉价的机器上

2.2缺点

  1. 不适合低时延的数据访问:大白话就是不能快速的存储数据
  2. 对于小文件无奈:不适合处理小文件
  3. 不支持并发写入:同一个文件只能被一个线程写,不允许多个线程同时改写
  4. 仅支持数据追加,不允许数据修改

三 HDFS的组成结构

四 HDFS文件块的大小

4.1 什么是块

HDFS的文件在物理上按照块大小存储的,块的大小可以通过hdfs-default.xml查看:

看到了吧!自己可以设置的,那么为什么是128m呢?很少有人思考这个问题,我来仔细解释一下:首先我们要知道HDFS的作用,存储和读取,那么这个块的大小就要保证它的读取速度达到最优对吧,假设寻址时间为10ms,就是找到这个文件的时间为10ms;当寻址时间是传输时间的1%时整个系统达到最优,就是说10/0.01=1000ms=1s;现在市场上大部分磁盘传输速度是100m/s,所以块的大小等于1s乘100m/s等于100m,128m是1024的倍数,所以块大小设置为128m。

4.2总结

块的大小经常作为面试题出现,总结一句:块的大小根据磁盘传输速率。

五 HDFS的shell操作

5.1基本语法

HDFS的shell操作指的就是怎么操作我们集群上的分布式文件系统,基础语法只要是两个,均可以:

  • bin/hadoop   fs   -具体命令
  • bin/hdfs   dfs      -具体命令

5.2常用命令

  • 启动集群(不属于hdfs的操作命令):sbin/start-dfs.sh和sbin/start-yarn.sh
  • 查看文件系统:bin/hadoop   fs   -ls  / 或者  bin/hdfs   dfs   -ls   /

根据web端口验证是正确的。后面的一些就不再截图验证了,太麻烦,而且影响阅读效率

  • 在HDFS上建立文件夹:bin/hadoop   fs   -mkdir  -p  /wangleijia/wanglei 或者  bin/hdfs   dfs   -mkdir  -p  /wangleijia1/wanglei1

  • 从本地系统(Linux)剪切粘贴到HDFS上:bin/hadoop   fs   -moveFromLocal     ./wanglei.txt    /user/wanglei或者  bin/hdfs   dfs   -moveFromLocal     ./wanglei.txt    /user/wanglei
  • 追加一个文件到已经存在的文件末尾:这个文件是本地文件bin/hadoop   fs   -appendToFile    wanglei.txt    /user/wanglei/wanglei.txt或者  bin/hdfs   dfs   -appendToFile    wanglei.txt    /user/wanglei/wanglei.txt
  • 显示HDFS上的文件内容:bin/hadoop   fs   -cat   /wangleijia/wanglei.txt 或者  bin/hdfs   dfs   -cat   /wangleijia/wanglei.txt
  • 修改文件的所在组,读写可执行权限,所有者:bin/hadoop   fs   -chgrp   -R  newgroup    /wangleijia 或者  bin/hdfs   dfs   -chgrp   -R  newgroup    /wangleijia;bin/hadoop   fs   -chmod  777   /wangleijia/wanglei.txt 或者  bin/hdfs   dfs   -chmod  777   /wangleijia/wanglei.txt;bin/hadoop   fs   -chown wanglei:wanglei   /wangleijia/wanglei.txt 或者  bin/hdfs   dfs   -chown wanglei:wanglei   /wangleijia/wanglei.txt;
  • 从本地操作系统拷贝到HDFS上:bin/hadoop   fs   -copyFromLocal    ./haidai.txt   /wangleijia 或者  bin/hdfs   dfs   -copyFromLocal    ./haidai.txt   /wangleijia
  • 从HDFS下载到本地:bin/hadoop   fs   -copyToLocal     /wangleijia/wanglei.txt    ./ 或者  bin/hdfs   dfs   -copyToLocal     /wangleijia/wanglei.txt    ./
  • HDFS上的相互拷贝:bin/hadoop   fs   -cp   /wangleijia/NOTICE.txt /wangleijia1/或者bin/hdfs dfs -cp   /wangleijia/NOTICE.txt /wangleijia1/
  • HDFS上的移动:bin/hadoop   fs   -mv   /wangleijia/NOTICE.txt /wangleijia1/或者bin/hdfs dfs -mv   /wangleijia/NOTICE.txt /wangleijia1/
  • 从HDFS上下载到本地:等于copyToLocal;bin/hadoop   fs   -get     /wangleijia/wanglei.txt    ./ 或者  bin/hdfs   dfs   -get     /wangleijia/wanglei.txt    ./
  • 从本地上传到HDFS上:等于copyFromLocal;bin/hadoop   fs   -put   ./haidai.txt   /wangleijia 或者  bin/hdfs   dfs   -put   ./haidai.txt   /wangleijia
  • 删除:bin/hadoop   fs   -rm -R     /wangleijia 或者  bin/hdfs   dfs   -rm -R     /wangleijia1
  • 设置副本数量:bin/hadoop   fs   -setrep      5     /wangleijia 或者  bin/hdfs   dfs   -setrep      5     /wangleijia

这里设置的副本数只是记录在NameNode的元数据中,是否真的会有这么多副本,还得看DataNode的数量。因为目前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10。

以上就是常用的HDFS的shell操作,对于Linux用的比较熟的人来说还是很好理解的。注意有些地方指令跟着参数的,比如-R需要大写,否则会出错,不过也没关系,出错了提示很明显。

发布了111 篇原创文章 · 获赞 60 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Haidaiya/article/details/84932445