HDFS Federation(HDFS 联盟)介绍

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

1. 当前HDFS架构和功能概述

更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

我们先回顾一下HDFS功能。HDFS实际上具有两个功能:命名空间管理(Namespace management)和块/存储管理服务(block/storage management)。



1.1 命名空间管理

HDFS的命名空间包含目录、文件和块。命名空间管理:是指命名空间支持对HDFS中的目录、文件和块做类似文件系统的创建、修改、删除、列表文件和目录等基本操作。


1.2 块/存储管理

在块存储服务中包含两部分工作:块管理物理存储。这是一个更通用的存储服务。其他的应用可以直接建立在Block Storage上,如HBase,Foreign Namespaces等。


1.2.1 块管理

A) 处理Data Node向Name Node注册的请求,处理datanode的成员关系,处理来自Data Node周期性的心跳。

B) 处理来自块的报告信息,维护块的位置信息。

C) 处理与块相关的操作:块的创建、删除、修改及获取块信息。

D) 管理副本放置(replica placement)和块的复制及多余块的删除。


1.2.2 物理存储

所谓物理存储就是:Data Node把块存储到本地文件系统中,对本地文件系统的读、写。


1.3 当前HDFS的架构

在当前的HDFS架构中(Hadoop v0.23之前),在整个HDFS集群中只有一个命名空间,并且只有单独的一个Name Node,这个Name Node负责对这单独的一个命名空间进行管理。这也正是单点失效(Single Point Failure)的隐患所在。本文所讲的HDFS Federation就是针对当前HDFS架构上的缺陷所做的改进,简单说HDFS Federation就是使得HDFS支持多个命名空间,并且允许在HDFS中同时存在多个Name Node

简单回顾一下目前HDFS的架构,如下图所示。在整个HDFS集群中只有一个Namenode,还有一个Backup Namenode。Namenode会实时将变化的HDFS的信息同步给Backup Namenode。Backup Namenode顾名思义是用来做Namenode的备份的。Namenode中命名空间以层次结构组织中存储着文件名和BlockID的对应关系、BlockID和具体Block位置的对应关系。这个单独的Namenode管理着数个Datanode,Block分布在各个Datanode中,每个Datanode会周期性的向此Namenode发送心跳消息,报告自己所在Datanode的使用状态。Block是用来存储数据的最小单元,通常一个文件会存储在一个或者多个Block中,默认Block大小为64MB。

相关问答

更多
  • 以前都是看书,系统的把书看过几遍,看看视频怎么样吧,效果如何.
  • hadoop hdfs的问题[2021-10-30]

    最下面那张图里环境变量设置的那一行多了一个$符号 export JAVA_HOME=/usr/java/jdk1.6.0_35
  • 您可以通过两种方式写入远程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 ...
  • 我的问题是 hive是否创建单独的文件目录? 如果您创建配置单元表(托管/外部)并使用load命令加载数据,则为YES。 如果您创建外部表并指向现有文件,则为NO。 我是否必须先创建配置表并从HDFS导入数据? 不一定,您可以创建一个配置单元外部表并指向此现有文件。 由于我想创建一个包含300列中30列的表,因此hive是否只创建了包含这30列的文件? 您可以使用hiveQL轻松完成。 按照以下步骤(注意:这不是唯一的方法): 创建一个包含300列的外部表,并指向现有文件。 使用所需的30列创建另一个配置单 ...
  • 如果没有提供路径,hadoop将尝试复制hdfs主目录中的文件。 换句话说,如果您以utrecht身份登录,它将尝试将ubuntu-14.04-desktop-amd64.iso复制到/user/utrecht 。 但是,此文件夹不是从头开始存在的(通常可以通过Web浏览器检查dfs)。 要使命令有效,您有两种选择: 把它复制到其他地方( /工作,但把所有东西都放在那里可能会导致未来的复杂化) 使用hdfs dfs -mkdir /yourFolderPath创建所需的目录 If no path is pr ...
  • 默认情况下,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中添 ...