HDFS的架构要点

2019-03-28 14:21|来源: 网络

HDFS的架构采用master/slave模式,一个HDFS集群是由一个Namenode和多个Datanode组成。

在HDFS集群中,只有一个Namenode结点。Namenode作为HDFS集群的中心服务器,主要负责:

1、管理HDFS集群中文件系统的名字空间(Namespace),例如打开文件系统、关闭文件系统、重命名文件或者目录等;另外,对任何请求对文件系统名字空间或者属性进行修改的操作,都被Namenode记录下来。

2、管理客户端对HDFS集群中的文件系统中的文件的访问,实际上文件以块的形式存储在Datanode上,文件系统客户端向Namenode请求所要执行操作的文件块(该块存储在指定的Dadanode数据结点上),然后通过与Datanode结点交互来完成文件读写的操作。那么,文件系统客户端与Namenode交互的过程中,只有从Namenode中获取到了所请求的文件块所对应的Datanode结点,才能执行文件的读写操作。也就是说,Namenode结点还负责确定指定的文件块到具体的Datanode结点的映射关系。

3、管理Datanode结点的状态报告,包括Datanode结点的健康状态报告和其所在结点上数据块状态报告,以便能够及时处理失效的数据结点。

在HDFS集群中,一个Datanode结点可以存在多个,一般是一个结点上对应一个Datanode实例。Datanode数据结点进程的任务是:

1、负责管理它所在结点上存储的数据的读写。一般是文件系统客户端需要请求对指定数据结点进行读写操作,Datanode作为数据结点的服务进程来与文件系统客户端打交道。同时,是否需要执行对文件块的创建、删除、复制等操作,Datanode数据结点进程还要在Namenode的统一指挥调度下完成,当与Namenode交互过程中收到了可以执行文件块的创建、删除或复制操作的命令后,才开始让文件系统客户端执行指定的操作。具体文件的操作并不是Datanode来实际完成的,而是经过Datanode许可后,文件系统客户端进程来执行实际操作。

2、向Namenode结点报告状态。每个Datanode结点会周期性地向Namenode发送心跳信号和文件块状态报告,以便Namenode获取到工作集群中Datanode结点状态的全局视图,从而掌握它们的状态。如果存在Datanode结点失效的情况时,Namenode会调度其它Datanode执行失效结点上文件块的复制处理,保证文件块的副本数达到规定数量。

3、执行数据的流水线复制。当文件系统客户端从Namenode服务器进程获取到要进行复制的数据块列表(列表中包含指定副本的存放位置,亦即某个Datanode结点)后,会首先将客户端缓存的文件块复制到第一个Datanode结点上,此时并非整个块都复制到第一个Datanode完成以后才复制到第二个Datanode结点上,而是由第一个Datanode向第二个Datanode结点复制,……,如此下去完成文件块及其块副本的流水线复制。

通过上面的叙述,可以看到,在HDFS集群中,存在三个主要的进程:Namenode进程、Datanode进程和文件系统客户端进程,这三个进程之间都是基于Hadoop实现的RPC机制进行通信的,该IPC模型基于Client/Server模式进行通信。因此上述三个进程之间存在如下端到端通信与交互:

1、(Client)Datanode / Namenode(Server)

2、(Client)DFS Client / Namenode(Server)

3、(Client)DFS Client / Datanode(Server)

4、(Client)Datanode A / Datanode B(Server)

相关问答

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

    最下面那张图里环境变量设置的那一行多了一个$符号 export JAVA_HOME=/usr/java/jdk1.6.0_35
  • 如何上传的?api么?你写两个不同的文件试试 先确定问题在哪,如果有错误日志贴出来
  • 您可以查看一些库: libpydfs pydoop There are some libraries that you can take a look: libpydfs pydoop
  • 您可以从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 ...
  • 现在,HDFS连接器会将每个主题写入其自己的目录。 您可以在写入后组合HDFS中的目录,或者在写入HDFS之前在Kafka中组合主题,但连接器本身不会这样做。 Right now the HDFS connector will write each topic to its own directory. You can combine directories in HDFS after writing, or combine topics in Kafka before writing to HDFS, b ...
  • 首先,HBase将其数据存储在HDFS中。 所以我相信你的HBase集群上有HDFS。 当impala正在向HDFS读取/写入数据时,它直接访问OS级别的块。 这就是为什么黑斑羚在这方面如此之快。 当impala读取HBase数据时,它将成为使用其api的HBase客户端,而不是直接从磁盘读取HBase数据。 因此,HBase不必与Impala安装在同一个集群上。 但是,群集需要能够相互访问。 First HBase stores its data in HDFS. So I am sure you hav ...
  • 默认情况下,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的分布式文件系统。 我也 ...