hdfs命令行操作摘录

hdfs分布式文件系统

优点:一次写多次读;流式数据访问;一次写入、多次读取

缺点:高延迟;不适合存储大量小文件

NameNode

负责管理整个dfs文件系统的元数据,即,存储所有的文件目录、每个文件的具体信息(即:每个文件被分了多少块、每块文件的大小及存放位置)等。

DataNode

DataNode负责存放具体数据内容。

Block

数据块,通常以64MB为单位,具有多个冗余副本

读数据流程

client在向hdfs读数据时,先从NameNode获取文件的每个数据块的存放位置,再去指定的DataNode读取数据,最后通知NameNode关闭文件。

写数据流程

client在向hdfs写数据时,先通知NameNode创建文件,NameNode经过一系列的检查,反馈给client一个DataNode列表进行写数据操作。然后,client再去找特定的DataNode进行写数据,最后关闭文件。

client在写入某一块特定的数据时,要同时备份多份数据块,假设要备份3份,则写数据的流程如下:

client只向第一个DataNode写数据,随后的备份操作由DataNode传递下去,这样做的目的是减小client的读写压力,当备份完最后一块数据时,由最后一块数据所在DataNode向前一个DataNode发送ack确认包,此操作一直传递到client那里

hdfs的常用命令

查看文件列表:ls

列出hdfs文件系统根目录下的目录和文件:hadoop fs -ls/

列出hdfs文件系统所有的目录和文件:hadoop fs -ls -R /

列出hdfs文件系统中input目录中的目录和文件:hadoop fs -ls /input

上传文件到hadoop:put

将本地文件localfile拷贝到hadoop文件系统的input目录下的file1:hdfs dfs -put localfile /input/file1

将本地文件localfile1、localfile2拷贝到hadoop文件系统的input目录下:hdfs dfs -put localfile1 localfile2 /input

下载文件到本地:get

将hfds文件系统input目录下的file文件拷贝到本地localfile文件中:hdfs dfs -get /input/file localfile

创建目录:mkdir

在hdfs文件系统的根目录下创建input文件夹。该方式只能一级一级地创建目录,父目录必须存在:hadoop fs -mkdir /input

递归创建目录,如果父目录不存在就创建该父目录:hadoop fs -mkdir -p /dir1/dir2

删除文件、文件夹:rm

删除文件:下main三种方式均可

hdfs dfs -rm /input/file1

hdfs dfs -rm -R /input 

hdfs dfs -rm -r /input

复制文件:cp

相同目录下拷贝:hdfs dfs -cp /input/file1 /input/file2

不同目录下拷贝文件:hdfs dfs -cp /input/file1 /another/file2

拷贝多个文件到另外目录:hdfs dfs -cp /input/file1 /input/file2 /another

移动文件:mv

不同目录下移动文件:hdfs dfs -mv /input/file1 /another/file2

移动多个文件到另外目录:hdfs dfs -mv /input/file1 /input/file2 /another

打印文件内容:cat

打印/input/file1文件的内容:hdfs dfs -cat /input/file1

查看hdfs系统状态

查看hdfs文件系统的基本信息:存储空间使用情况、datanode节点信息等:hdfs dfsadmin -report

你可能感兴趣的:(hdfs命令行操作摘录)