HDFS基础与操作

一、HDFS的概念

1.概念

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

2.组成

HDFS集群包括,NameNode和DataNode以及Secondary Namenode。

NameNode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息。
DataNode 负责管理用户的文件数据块,每一个数据块都可以在多个datanode上存储多个副本。
Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间(一小时)获取HDFS元数据的快照。

3.HDFS文件块大小(物理切块)

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

HDFS的块比磁盘的块大,其目的是为了最小化寻址开销。如果块设置得足够大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。因而,传输一个由多个块组成的文件的时间取决于磁盘传输速率。

如果寻址时间约为10ms,而传输速率为100MB/s,为了使寻址时间仅占传输时间的1%,我们要将块大小设置约为100MB。默认的块大小128MB。

块的大小:10ms*100*100M/s = 100M

在这里插入图片描述

二、HFDS命令行操作

1)基本语法

bin/hadoop fs 具体命令

2)参数大全

bin/hadoop fs

[-appendToFile … ]
[-cat [-ignoreCrc] …]
[-checksum …]
[-chgrp [-R] GROUP PATH…]
[-chmod [-R] <MODE[,MODE]… | OCTALMODE> PATH…]
[-chown [-R] [OWNER][:[GROUP]] PATH…]
[-copyFromLocal [-f] [-p] … ]
[-copyToLocal [-p] [-ignoreCrc] [-crc] … ]
[-count [-q] …]
[-cp [-f] [-p] … ]
[-createSnapshot []]
[-deleteSnapshot ]
[-df [-h] [ …]]
[-du [-s] [-h] …]
[-expunge]
[-get [-p] [-ignoreCrc] [-crc] … ]
[-getfacl [-R] ]
[-getmerge [-nl] ]
[-help [cmd …]]
[-ls [-d] [-h] [-R] [ …]]
[-mkdir [-p] …]
[-moveFromLocal … ]
[-moveToLocal ]
[-mv … ]
[-put [-f] [-p] … ]
[-renameSnapshot ]
[-rm [-f] [-r|-R] [-skipTrash] …]
[-rmdir [–ignore-fail-on-non-empty]

…]
[-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} ]|[–set <acl_spec> ]]
[-setrep [-R] [-w] …]
[-stat [format] …]
[-tail [-f] ]
[-test -[defsz] ]
[-text [-ignoreCrc] …]
[-touchz …]
[-usage [cmd …]]

3)常用命令操作
(1)-help:输出这个命令参数

bin/hdfs dfs -help rm

(2)-ls: 显示目录信息

hadoop fs -ls /
Hadoop fs -lsr /   (lsr递归查询,会查出所有目录)

(3)-mkdir:在hdfs上创建目录

hadoop fs -mkdir -p /hdfs路径

(4)-moveFromLocal从本地剪切粘贴到hdfs

hadoop fs -moveFromLocal 本地路径 /hdfs路径

(5)–appendToFile :追加一个文件到已经存在的文件末尾

hadoop  fs -appendToFile  本地路径  /hdfs路径

(6)-cat :显示文件内容

hadoop fs -cat /hdfs路径

(7)-tail -f:监控文件

hadoop fs -tail -f /hdfs路径

(8)-chmod、-chown:linux文件系统中的用法一样,修改文件所属权限

hadoop  fs -chmod  777  /hdfs路径
hadoop  fs -chown  someuser:somegrp   /hdfs路径

(9)-cp :从hdfs的一个路径拷贝到hdfs的另一个路径

hadoop  fs -cp  /hdfs路径1  / hdfs路径2

(10)-mv:在hdfs目录中移动/重命名 文件

hadoop fs -mv /hdfs路径 /hdfs路径

(11)-get:等同于copyToLocal,就是从hdfs下载文件到本地

hadoop fs -get / hdfs路径 ./本地路径

(12)-getmerge :合并下载多个文件到linux本地,比如hdfs的目录 /aaa/下有多个文件:log.1, log.2,log.3,…(注:是合成到Linux本地)

hadoop fs -getmerge /aaa/log.* ./log.sum
合成到不同的目录:hadoop fs -getmerge /hdfs1路径 /hdfs2路径 /

(13)-put:等同于copyFromLocal

hadoop  fs -put  /本地路径  /hdfs路径

(14)-rm:删除文件或文件夹

hadoop fs -rm -r /hdfs路径

(16)-du:统计文件夹的大小信息

hadoop fs -du -s -h / hdfs路径

(17)-count:统计一个指定目录下的文件节点数量

hadoop fs -count /hdfs路径

(18)-setrep:设置hdfs中文件的副本数量:3是副本数,可改

hadoop fs -setrep 3 / hdfs路径

在这里插入图片描述
这里设置的副本数只是记录在namenode的元数据中,是否真的会有这么多副本,还得看datanode的数量

发布了50 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43520450/article/details/105400404