HDFS基本概念
概念 | 作用 | 特性 |
1. HDFS是一个文件系统,用于存储文件,通过统一的命名空间--目录树来定位文件; 2. HDFS是分布式的,有很多服务器联合起来实现其功能,集群中的服务器有各自的角色; 重点概念:文件切块,副本存放,元数据(目录结构及文件分块信息) | 设计思想:分而治之 将大文件、大批量文件分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析。 在大数据系统中作用:为各类分布式运算框架(如:mapreduce,spark,tez,....)提供数据存储服务。 | (1) HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64M; (2) HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/file.data; (3) 目录结构及文件分块信息(元数据)的管理由namenode节点承担 (4) 文件的各个block的存储管理由datanode节点承担 (5) HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的修改; 注意:适合用来做数据分析,并不合适用来做网盘应用,因为,不便修改,延迟大,网络开销大,成本高。 |
HDFS 常用命令
查看HDFS文件目录 | hdfs dfs -ls hdfs://master:9999/(当前还没有文件) | ||||||||||||||
创建一个文件或目录 | 目录: hdfs dfs -mkdir hdfs://master:9999 /user 递归创建多个目录: hdfs dfs -mkdir -p hdfs://master:9999/test2/test22 文件: hdfs dfs -touchz /user/hadoop-twq/cmd/flag.txt | ||||||||||||||
把本地文件word.txt上传到HDFS文件系统上去 ( copyFromLocal / put) | hdfs dfs -copyFromLocal word.txt /user/hadoop-twq/cmd 再上传一次就会报错,如果想要覆盖文件要加-f 用put方式代替copyFromlocal方式上传 hdfs dfs -put -f word.txt /user/hadoop-twq/cmd | ||||||||||||||
下载HDFS文件到当前堡垒机路径下 | hdfs dfs -get /user/hadoop-twq/cmd/put.txt hdfs dfs -copyToLocal /user/hadoop-twq/cmd/put.txt ./ | ||||||||||||||
查看文件内容 | hdfs dfs -cat /user/hadoop-twq/cmd/word.txt | ||||||||||||||
移动文件 | hdfs dfs -mv /user/hadoop-twq/cmd/flag.txt(源文件) /user/hadoop-twq(目标路径) | ||||||||||||||
修改hdfs文件权限 | 将put.txt文件权限改成744: hdfs dfs -chmod 744 /user/hadoop-twq/cmd/put.txt
权限码值
| ||||||||||||||
查看文件大小 | hdfs dfs -du /user/hadoop-twq/cmd hdfs dfs -du -h /user/hadoop-twq/cmd(大小可读) hdfs dfs -du -s -h /user/hadoop-twq/cmd(整个目录有多大) | ||||||||||||||
查看当前目录的层级结构 tree -C 在文件和目录清单加上色彩,便于区分各种类型。 -N 直接列出文件和目录名称,包括控制字符和中文 -D 显示修改时间。 -t 按照时间排序。 | |||||||||||||||
cat -n file 显示文件的行数 | |||||||||||||||
cat content > file 可以将内容输入到file中 | |||||||||||||||
合并下载多个文件。比如hdfs目录/aaa/下有多个文件:log.1,log.2,log.3... | hdfs dfs -getmerge /aaa/log.* ./log.sum |
删除文件或文件夹 | hdfs dfs -rm -r /aaa/bbb/ 删除空目录 hdfs dfs -rmdir /aaa/bbb/ccc |
追加一个文件到已经存在的文件末尾 | hdfs dfs -appendToFile ./hellotx /hello.tx |