大数据开发——Hadoop三大核心之HDFS基本原理与工作机制(三)

349 阅读3分钟

「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」。

5.HDFS的副本机制和机架感知

5.1 HDFS 文件副本机制

所有的文件都是以 block 块的方式存放在 HDFS 文件系统当中,作用如下:

  1. 一个文件有可能大于集群中任意一个磁盘,引入块机制,可以很好的解决这个问题

  2. 使用块作为文件存储的逻辑单位可以简化存储子系统

  3. 块非常适合用于数据备份进而提供数据容错能力在 Hadoop1 当中, 文件的 block 块默认大小是 64M, hadoop2 当中, 文件的 block 块大小默认是128M, block 块的大小可以通过 hdfs-site.xml 当中的配置文件进行指定

<property>

   <name>dfs.block.size</name>

   <value>块大小 以字节为单位</value>

</property>

图片.png

5.2 机架感知

HDFS分布式文件系统的内部有一个副本存放策略:以默认的副本数=3为例:

1、第一个副本块存本机

2、第二个副本块存跟本机同机架内的其他服务器节点

3、第三个副本块存不同机架的一个服务器节点上

6.hdfs的命令行使用

ls

格式:  hdfs dfs -ls URI

作用:类似于Linux的ls命令,显示文件列表

hdfs dfs   -ls /

lsr

格式 :   hdfs dfs -lsr URI

作用 : 在整个目录下递归执行ls, 与UNIX中的ls-R类似

hdfs dfs   -lsr /

mkdir

格式 : hdfs dfs [-p] -mkdir <paths>

作用 :   以<paths>中的URI作为参数,创建目录。使用-p参数可以递归创建目录

put

格式   : hdfs dfs -put <localsrc > ... <dst>

作用 : 将单个的源文件src或者多个源文件srcs从本地文件系统拷贝到目标文件系统中(

对应的路径)。也可以从标准输入中读取输入,写入目标文件系统中

hdfs dfs -put /rooot/a.txt /dir1

moveFromLocal

格式: hdfs dfs -moveFromLocal <localsrc>   <dst>

作用:   和put命令类似,但是源文件localsrc拷贝之后自身被删除

hdfs dfs -moveFromLocal /root/install.log /

moveToLocal

未实现

get

格式   hdfs dfs  -get [-ignorecrc ] [-crc] <src> <localdst>

作用:将文件拷贝到本地文件系统。 CRC 校验失败的文件通过-ignorecrc选项拷贝。 文件和CRC

校验和可以通过-CRC选项拷贝

hdfs dfs  -get   /install.log /export/servers

mv

格式 : hdfs dfs -mv URI   <dest>

作用: 将hdfs上的文件从原路径移动到目标路径(移动之后文件删除),该命令不能夸文件系统

hdfs dfs  -mv /dir1/a.txt   /dir2

rm

格式: hdfs dfs -rm [-r] 【-skipTrash】 URI 【URI 。。。】

作用:   删除参数指定的文件,参数可以有多个。   此命令只删除文件和非空目录。

如果指定-skipTrash选项,那么在回收站可用的情况下,该选项将跳过回收站而直接删除文件;

否则,在回收站可用时,在HDFS Shell 中执行此命令,会将文件暂时放到回收站中。

hdfs dfs  -rm  -r /dir1

cp

格式:     hdfs  dfs  -cp URI [URI ...] <dest>

作用:    将文件拷贝到目标路径中。如果<dest>  为目录的话,可以将多个文件拷贝到该目录

下。

-f

选项将覆盖目标,如果它已经存在。

-p

选项将保留文件属性(时间戳、所有权、许可、ACL、XAttr)。

hdfs dfs -cp /dir1/a.txt /dir2/b.txt

cat

格式:hdfs dfs  -cat URI [uri ...]

作用:将参数所指示的文件内容输出到stdout

hdfs dfs  -cat /install.log

chmod

格式:      hdfs   dfs  -chmod  [-R]  URI[URI  ...]

作用:    改变文件权限。如果使用  -R 选项,则对整个目录有效递归执行。使用这一命令的用户

必须是文件的所属用户,或者超级用户。

hdfs dfs -chmod -R 777 /install.log

chown

格式:      hdfs   dfs  -chown  [-R]  URI[URI  ...]

作用:    改变文件的所属用户和用户组。如果使用  -R 选项,则对整个目录有效递归执行。使用

这一命令的用户必须是文件的所属用户,或者超级用户。

hdfs dfs  -chown  -R hadoop:hadoop /install.log

appendToFile

格式: hdfs dfs -appendToFile ...

作用: 追加一个或者多个文件到hdfs指定文件中.也可以从命令行读取输入.

 hdfs dfs -appendToFile a.xml b.xml /big.xml