一、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

hadoop的磁盘位子 hadoop磁盘块的意义和作用_hadoop

二、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>} 
  
     ]] 
    
 [-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路径

hadoop的磁盘位子 hadoop磁盘块的意义和作用_hadoop的磁盘位子_02


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