Hadoop分布式文件系统(HDFS)用于大数据项目

时间:2020-02-23 14:33:27  来源:igfitidea点击:

Hadoop分布式文件系统是一个多函数,弹性,群集的方法,用于管理大数据环境中的文件。
HDFS不是文件的最终目标。
相反,它是一种数据服务,它提供了数据卷和速度高时所需的独特函数。
因为数据写入一次,然后在此后读取多次,而不是其他文件系统的常数读写,HDFS是支持大数据分析的绝佳选择。

大数据namenodes.

HDFS通过将大文件打破到名为块的较小部分。
块存储在数据节点上,并且是nameNode的责任,了解数据节点构成完整文件的块。
NameNode还充当"流量警察",管理所有访问文件。

群集中所有文件的完整集合有时被称为文件系统名称空间。
它是namenode的作业来管理此命名空间。

即使在NameNode和数据节点之间存在强有力的关系,它们也以"松散耦合"的方式运行。
这允许群集元素动态行使,在需求增加时添加服务器。
在典型配置中,我们可以找到一个nameNode,并且可能是在机架中的一个物理服务器上运行的数据节点。
其他服务器仅运行数据节点。

数据节点之间的通信使它们可以在正常文件系统操作期间协作。
这是必要的,因为一个文件的块可能会存储在多个数据节点上。
由于NameNode对群集的正确操作非常重要,因此它可以并且应该复制以防止单点故障。

大数据节点

数据节点不智能,但它们是有弹性的。
在HDFS集群中,数据块跨多个数据节点复制,并由NameNode管理访问权限。
当集群的所有节点收集到机架中时,复制机制设计用于最佳效率。
实际上,NameNode使用"机架ID"来跟踪群集中的数据节点。

数据节点还提供"心跳"消息来检测并确保NameNode和数据节点之间的连接。
当不再存在心跳时,Namenode从群集中取消数据节点,并保持操作,只要没有任何事情发生一样。
当心跳返回时,它将透明地向用户或者应用程序添加到群集中。

数据完整性是一个关键函数。
HDFS支持旨在提供数据完整性的许多函数。
正如我们所希望的那样,当文件被丢弃到块然后在群集中的不同服务器上分发时,任何元素的操作的任何变化都可能影响数据完整性。
HDFS使用事务日志和校验和验证来确保群集中的完整性。

事务日志跟踪每个操作,并且在文件系统的审计或者重建方面都有生效,应该是不提供的事情。

校验和验证用于保证HDFS中文件的内容。
当客户端请求文件时,它可以通过检查其校验和来验证内容。
如果校验和匹配,则可以继续文件操作。
如果没有,则报告错误。
校验和文件是隐藏的,以帮助避免篡改。

数据节点在商品服务器中使用本地磁盘持久性。
所有数据块都是本地存储的,主要用于性能原因。
数据块跨多个数据节点复制,因此一个服务器的故障可能不一定损坏文件。
在实现群集时建立复制程度,数据节点的数量和HDFS命名空间。

大数据的HDFS

HDFS通过将文件破坏到较小块的相关集合来解决大数据挑战。
这些块分布在HDFS集群中的数据节点中,并由NameNode管理。
块大小可配置,通常为128兆字节(MB)或者256MB,这意味着1GB文件为其基本存储需求消耗八个128MB块。

HDFS是有弹性的,因此在服务器故障的情况下,在整个群集中复制这些块。
HDFS如何跟踪所有这些碎片?
短答案是文件系统元数据。

元数据被定义为"有关数据的数据"。
将HDFS元数据视为用于提供以下详细描述的模板:

  • 创建文件时,访问,修改,删除,等等

  • 其中文件块存储在群集中

  • 谁有允许查看或者修改文件的权利

  • 群集中存储了多少个文件

  • 群集中存在多少个数据节点

  • 群集事务日志的位置

HDFS元数据存储在NameNode中,而群集运行时,将所有元数据加载到NameNode服务器的物理存储器中。
正如我们可能期望的那样,群集越大,元数据占用占据占据越大。

块服务器究竟是什么?
查看以下列表:

  • 将数据块存储在服务器的本地文件系统中。 HDFS在许多不同的操作系统上可用,并在Windows,Mac OS或者Linux上行事。

  • 基于NameNode中的元数据模板存储本地文件系统中的块的元数据。

  • 执行文件校验和的定期验证。

  • 向NameNode发送关于文件操作可用的块的定期报告。

  • 根据需要为客户提供元数据和数据。 HDFS支持从客户端应用程序中直接访问数据节点。

  • 基于"流水线"模型将数据转发到其他数据节点。

数据节点上的块放置对于数据复制和数据流水线的支持至关重要。
HDFS在本地保留每个块的一个副本。
HDFS是关于数据复制和弹性的认真。