个性化阅读
专注于IT技术分析

什么是HDFS

本文概述

Hadoop带有一个称为HDFS的分布式文件系统。在HDFS中, 数据分布在多台计算机上并进行复制, 以确保其对故障的持久性和对并行应用程序的高可用性。

由于它使用商品硬件, 因此具有成本效益。它涉及块, 数据节点和节点名称的概念。

在哪里使用HDFS

  • 超大文件:文件大小应为数百兆, 千兆字节或更多。
  • 流数据访问:读取整个数据集的时间比读取第一个数据的延迟更重要。 HDFS建立在一次写入和多次读取模式上。
  • 商品硬件:适用于低成本硬件。

哪里不使用HDFS

  • 低延迟数据访问:需要很少时间访问第一数据的应用程序不应使用HDFS, 因为HDFS对整个数据很重要, 而不是时间来获取第一条记录。
  • 大量小文件:名称节点包含内存中文件的元数据, 如果文件较小, 则名称节点的内存将占用大量内存, 这是不可行的。
  • 多次写入:当我们必须多次写入时, 不应使用它。

HDFS概念

  1. 块:块是它可以读取或写入的最小数据量。HDFS块默认为128 MB, 并且是可配置的。文件n HDFS分为块大小的块, 这些块作为独立的单元存储。系统中, 如果HDFS中的文件小于块大小, 则它不会占据整个块的大小, 即, 存储在块大小为128 MB的HDFS中的5 MB文件仅占用5MB的空间。只是为了最大程度地降低寻找成本。
  2. 名称节点:HDFS以主工作模式工作, 其中名称节点充当主节点。名称节点是HDFS的控制器和管理者, 因为它知道HDFS中所有文件的状态和元数据。元数据信息是文件许可权, 每个块的名称和位置。元数据很小, 因此将其存储在名称节点的内存中, 从而可以更快地访问数据。此外, HDFS群集可同时由多个客户端访问, 因此所有这些信息都由一台计算机处理。它执行诸如打开, 关闭, 重命名等文件系统操作。
  3. 数据节点:当被告知时, 它们存储和检索块;通过客户端或名称节点。它们定期向名称节点报告, 并列出要存储的块列表。作为商品硬件的数据节点还执行名称节点所述的块创建, 删除和复制的工作。

HDFS DataNode和NameNode映像:

HDFS数据节点NameNode

HDFS读取图像:

HDFS读取

HDFS写入映像:

HDFS写入

由于所有元数据都存储在名称节点中, 因此非常重要。如果失败, 则无法使用文件系统, 因为无法知道如何从数据节点中存在的块中重建文件。为了克服这个问题, 出现了辅助名称节点的概念。

次要名称节点:它是一个单独的物理计算机, 充当名称节点的帮助者。它执行定期检查点, 并与名称节点进行通信并拍摄元数据的快照, 这有助于最大程度地减少停机时间和数据丢失。

启动HDFS

HDFS应该首先进行格式化, 然后以分布式模式启动。命令在下面给出。

这种格式$ hadoop是-format所预期的

要启动$ start-dfs.sh

HDFS基本文件操作

将数据从本地文件系统放入HDFS首先在HDFS中创建一个文件夹, 可在其中从本地文件系统放入数据。 $ hadoop fs -mkdir / user / test将文件“ data.txt”从保存在本地文件夹/ usr / home / Desktop中的文件复制到HDFS文件夹/ user / test $ hadoop fs -copyFromLocal / usr / home / Desktop / data .txt / user / test显示HDFS文件夹的内容$ Hadoop fs -ls / user / test

将数据从HDFS复制到本地文件系统$ 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 /用户/ sonoo /

HDFS其他命令

下面是在命令中使用的

“ <path>”表示任何文件或目录名称。

“ <path> …”表示一个或多个文件或目录名称。

“ <文件>”表示任何文件名。

“ <src>”和“ <dest>”是定向操作中的路径名。

“ <localSrc>”和“ <localDest>”是上述路径, 但在本地文件系统上

把<localSrc> <目标>

从localSrc标识的本地文件系统中复制文件或目录到DFS中的dest。

copyFromLocal <localSrc> <目标>

相同的投入

copyFromLocal <localSrc> <目标>

相同的投入

moveFromLocal <localSrc> <目标>

从localSrc标识的本地文件系统中复制文件或目录到HDFS中的dest, 然后在成功后删除本地副本。

获取[-crc] <src> <localDest>

将src标识的HDFS中的文件或目录复制到localDest标识的本地文件系统路径。

猫<filen-ame>

在标准输出上显示文件名的内容。

moveToLocal <src> <localDest>

类似于-get一样工作, 但是成功删除HDFS副本。

setrep [-R] [-w] rep <路径>

为通过rep路径标识的文件设置目标复制因子。 (随着时间的推移, 实际的复制因子将趋向于目标)

touchz <路径>

在包含当前时间作为时间戳的路径上创建一个文件。如果文件在路径中已经存在, 则失败, 除非该文件的大小为0。

测试-[ezd] <路径>

如果路径存在, 则返回1;否则返回1。长度为零;或为目录, 否则为0。

stat [格式] <路径>

打印有关路径的信息。格式是一个字符串, 它接受以块(%b), 文件名(%n), 块大小(%o), 复制(%r)和修改日期(%y, %Y)为单位的文件大小。

赞(0)
未经允许不得转载:srcmini » 什么是HDFS

评论 抢沙发

评论前必须登录!