Hadoop附带了一个名为HDFS的分布式文件系统。在HDFS中,数据分布在多台机器上,并进行了复制,以确保其对故障的耐用性和并行应用的高可用性。
它具有成本效益,因为它使用廉价的硬件。它涉及块、数据节点和节点名称的概念。
HDFS数据节点和名称节点的图像:
HDFS读取图像:
HDFS写入镜像:
所有的元数据都存储在名称节点中,这非常重要。如果名称节点失败,文件系统将无法使用,因为我们无法知道如何根据数据节点中的块重建文件。为了克服这个问题,引入了辅助名称节点的概念。
辅助名称节点: 它是一个独立的物理机器,作为名称节点的帮助器。它执行定期的检查点。它与名称节点通信并对元数据进行快照处理,有助于最小化停机时间和数据丢失。
首先要格式化HDFS,然后以分布式模式启动。以下是命令:
格式化:$ hadoop namenode -format
启动:$ start-dfs.sh
$ hadoop fs -mkdir /user/test
$ hadoop fs -copyFromLocal /usr/home/Desktop/data.txt /user/test
$ Hadoop fs -ls /user/test
$ hadoop fs -copyToLocal /user/test/data.txt /usr/bin/data_copy.txt
$ md5 /usr/bin/data_copy.txt /usr/home/Desktop/data.txt
递归删除
hadoop fs -rmr <arg>
示例:
hadoop fs -rmr /user/sonoo/
以下用于命令中:
“<path>
“表示任何文件或目录名称。
“<path>...
“表示一个或多个文件或目录名称。
“<file>
“表示任何文件名。
“<src>
“和”<dest>
“是有向操作中的路径名。
“<localSrc>
“和”<localDest>
“是一个本地文件系统上的路径。
put <localSrc><dest>
将本地文件或目录(由localSrc标识)复制到DFS中的dest位置。
copyFromLocal <localSrc><dest>
与-put命令相同。
copyFromLocal <localSrc><dest>
与-put命令相同。
moveFromLocal <localSrc><dest>
将本地文件或目录(由localSrc标识)复制到HDFS中的dest位置,并在成功后删除本地副本。
get [-crc] <src><localDest>
将HDFS中由src标识的文件或目录复制到本地文件系统路径localDest。
cat <filen-ame>
在标准输出中显示filename的内容。
moveToLocal <src><localDest>
类似于-get命令,在成功后删除HDFS中的复制。
setrep [-R] [-w] rep <path>
将路径为path的文件的目标副本数设置为rep。(实际副本数会随时间逐渐接近目标副本数)
touchz <path>
在路径path处创建一个包含当前时间戳的文件。如果路径已经存在一个文件,并且大小不为0,则操作失败。
test -[ezd] <path>
如果路径path存在、长度为零或为一个目录,则返回1;否则返回0。
stat [format] <path>
打印有关路径path的信息。format是一个字符串,可以接受块大小(%b)、文件名(%n)、块大小(%o)、副本数(%r)和修改日期(%y,%Y)。
本文链接:http://so.lmcjl.com/news/20085/