HDFS Federation(联邦)

2019-03-28 13:35|来源: 网络

注:这个文档已经有很多译文,但不同的人翻译有不同的理解,时间匆忙,加之英文水平有限,有误的地方请指正。

原文:http://Hadoop.apache.org/common/docs/current/hadoop-yarn/hadoop-yarn-site/Federation.html

本指南是对HDFS联邦的简要介绍及如何配置和管理HDFS联邦。

 

背景

 


HDFS主要有两大模块:

Namespace

包括目录、文件和块。

它支持所有命名空间相关的文件操作,如创建、删除、修改,查看所有文件和目录。

Block Storage Service(块存储服务)包括两部分

namenode中的块的管理

提供datanode集群的注册、心跳检测等功能。

处理块的报告信息和维护块的位置信息。

支持块相关的操作,如创建、删除、修改、获取块的位置信息。

管理块的冗余信息、创建副本、删除多余的副本等。

存储:datanode提供本地文件系统上块的存储、读写、访问等。

以前的HDFS框架整个集群只允许有一个namenode,一个namenode管理所有的命名空间,HDFS联邦通过增加多个namenode来打破这种限制。

 

namenodes/namespaces


为了水平扩展名称服务,联邦使用多个独立的namenodes/namespaces。所有的namenodes是联邦的,因此,单个namenode是独立的,不需要和其它namenode协调合作。datanode作为统一的块存储设备被所有namenode节点使用。每一个datanode节点都在所有的namenode进行注册。datanode发送心跳信息、块报告到所有namenode,同时执行所有namenode发来的命令。

 

Block Pool(块池)

一个块池就是属于一个namespace的一组块。datanodes存储集群中所有的块池,它独立于其它块池进行管理。这允许namespace在不与其它namespace交互的情况下生成块的ID,有故障的namenode不影响datanode继续为集群中的其它namenode服务。一个namespace和它的blockpool一起叫做namespace volume,这是一个自己的管理单位,当一个namenode被删除,那么在datanode上的相应的block pool也会被删除。在集群进行升级的时候,每一个namespace volume独立的进行升级。

 

ClusterID

增加一个新的ClusterID标识来在集群中所有的节点。当一个namenode被格式化的时候,这个标识被指定或自动生成,这个ID会用于格式化集群中的其它namenode

 

主要优点

namespace的可扩展性:HDFS的水平扩展,但是命名空间不能扩展,通过在集群中增加namenode来扩展namespace,以达到大规模部署或者解决有很多小文件的情况。

Performance(性能):在之前的框架中,单个namenode文件系统的吞吐量是有限制的,增加更多的namenode能增大文件系统读写操作的吞吐量。

Isolation(隔离):一个单一的namenode不能对多用户环境进行隔离,一个实验性的应用程序会加大namenode的负载,减慢关键的生产应用程序,在多个namenode情况下,不同类型的程序和用户可以通过不同的namespace来进行隔离。

相关问答

更多
  • hadoop hdfs的问题[2021-10-30]

    最下面那张图里环境变量设置的那一行多了一个$符号 export JAVA_HOME=/usr/java/jdk1.6.0_35
  • 如何上传的?api么?你写两个不同的文件试试 先确定问题在哪,如果有错误日志贴出来
  • 铲子和队列提供了不同的方式来从一个RabbitMQ节点转发消息到另一个。 联合交易所 通过联合交换,队列可以连接到上游(源)节点上的队列。 另外,下游(目标)节点上的交换将收到发布到上游节点的消息副本。 联合交换与交换交换绑定相似,因为它们可以(可选地)订阅来自上游交换机的有限的一组消息。 联合队列 (注:这些是RabbitMQ 3.2.x中的新增功能) 使用联合队列,消费者可以连接到上游(源)和下游(目标)节点上的队列。 本质上,下游队列是上游队列中的消费者,期望有更多的下游消费者以与附加到上游队列的消费 ...
  • 您可以从hadoop ls命令检索时间戳并使用awk解析它。文件/目录时间戳有模式。 对于文件它是 permissions number_of_replicas userid groupid filesize modification_date modification_time filename 它是目录 permissions userid groupid modification_date modification_time dirname 文件的第6和第7个字段为您提供修改日期和时间。 您可以 ...
  • 您可以通过两种方式写入远程HDFS, 使用可用的WebHDFS api 。它支持在Hadoop集群外部运行的系统,以访问和操作HDFS内容。 它不需要客户端系统安装hadoop二进制文件。 将客户端系统配置为Hadoop edge node以与Hadoop集群/ HDFS进行交互。 请参考, https://hadoop.apache.org/docs/r1.2.1/webhdfs.html http://www.dummies.com/how-to/content/edge-nodes-in-hadoop ...
  • Cloudera Manager不支持将多个NameNode添加到同一物理主机,因此无法进行列出的配置。 这是为了避免NameNode主机过载而设计的。 如果要为3个单独的命名空间启用高可用性,则需要将群集扩展为6个节点。 Cloudera Manager doesn't support adding multiple NameNodes to the same physical host, so the configuration you listed won't be possible. This is ...
  • 默认情况下,Hadoop将使用本地模式。 您可能需要在$HADOOP_HOME/conf/core-site.xml中将fs.default.name设置为hdfs://localhost.localdomain:8020/ 。 为此,请将其添加到core-site.xml : fs.default.name hdfs://localhost.localdomain:8020/ Accumulo ...
  • 使用Teradata DB本身 - 没有。 然而:),Teradata提供所谓的UDA ( 统一数据架构 ),其中Teradata,Aster DB和Hadoop(HDFS)相互连接,几乎可以无缝地协同工作:)。 通常,如果您只想使用非结构化数据,请选择Aster。 这是Teradata的产品,您可以直接与HDFS连接。 HDFS在这里用作廉价且快速的数据存储。 更有趣的解决方案将提出新的Aster版本(6),其中将实现AFS ( Aster文件系统 )。 ASR是一种类似于HDFS的分布式文件系统。 我也 ...
  • HDFS高可用性和HDFS联合之间的主要区别在于联合中的名称节点彼此不相关。 在HDFS联合中,所有名称节点共享一个元数据池,其中每个名称节点都有自己的池,因此提供了容错功能,即如果联合中的一个名称节点失败,则不会影响其他名称节点的数据。 所以,Federation =多个名称节点,没有相关性。 在HDFS HA的情况下,有两个名称节点 - 主NN和备用NN。 主NN每次都很努力,而Standby NN只是坐在那里,并且偶尔会对主要Namenode的元数据进行冷却和更新,这使得它们相关。 当主要NN厌倦了这 ...
  • 我终于找到了问题并纠正了它。 它位于namenodes的hdfs-site.xml配置文件中。 你可以在hadoop安装库中找到它:在我的情况下它位于〜/ hadoop-2.7.2 / etc / hadoop / 此外,标准配置还要确保dfs.name.dir属性引用每个namenode的元数据库的位置。 就我而言,对于所有的名称节点,我为此目的创建了/ hdfs / name目录 ,并具有适当的所有权(专门为使用hadoop而创建的用户) 所以你必须在你群集的所有名称节点的hdfs-site.xml中添 ...