首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Hadoop Distributed File System 简介(1)

Hadoop Distributed File System 简介(1)

HDFS 是一个 Apache Software Foundation 项目,是 Apache Hadoop 项目的一个子项目(参见 )。Hadoop 非常适于存储大型数据(比如 terabytes 和 petabytes),并使用 HDFS 作为其存储系统。HDFS 允许您连接多个集群中包含的节点(普通个人计算机),那些集群上分布着一些数据文件。然后您可以将那些数据文件作为一个无缝文件系统来进行访问和存储。对数据文件的访问通过一种流线型(streaming) 方式进行处理,这意味着应用程序或命令通过 MapReduce 处理模型直接执行(参见 )。
HDFS 是容错的,且提供对大数据集的高吞吐量访问。本文探索 HDFS 的主要特性,并提供一个高级 HDFS 架构视图。
HDFS 概览HDFS 与其他分布式文件系统有许多相似点,但也有几个不同点。一个明显的区别是 HDFS 的 “一次写入、多次读取(write-once-read-many)” 模型,该模型降低了并发性控制要求,简化了数据聚合性,支持高吞吐量访问。
HDFS 的另一个独特的特性是下面这个观点:将处理逻辑放置到数据附近通常比将数据移向应用程序空间更好。
HDFS 将数据写入严格限制为一次一个写入程序。字节总是被附加到一个流的末尾,字节流总是以写入顺序存储。
HDFS 有许多目标,下面是一些最明显的目标:
  • 通过检测故障和应用快速、自动的恢复实现容错性
  • 通过 MapReduce 流进行数据访问
  • 简单可靠的聚合模型
  • 处理逻辑接近数据,而不是数据接近处理逻辑
  • 跨异构普通硬件和操作系统的可移植性
  • 可靠存储和处理大量数据的可伸缩性
  • 通过跨多个普通个人计算机集群分布数据和处理来节约成本
  • 通过分布数据和逻辑到数据所在的多个节点上进行平行处理来提高效率
  • 通过自动维护多个数据副本和在故障发生时自动重新部署处理逻辑来实现可靠性
HDFS 向应用程序提供一些接口,将它们移到更靠近数据所在的位置,下一小节将详细介绍这一点。
进入 HDFS 的应用程序接口您可以以多种不同的方法访问 HDFS。HDFS 提供了一个原生 Java™ 应用程序编程接口(API)和一个针对这个 Java API 的原生 C 语言封装器。另外,您可以使用一个 web 浏览器来浏览 HDFS 文件。
中描述的应用程序也可用于 HDFS 的接口。
表 1. 可以与 HDFS 接口的应用程序应用程序说明FileSystem (FS) shell一个命令行接口,类似于常见的 Linux® 和 UNIX® shells(bash、csh,等等),支持与 HDFS 数据进行交互。DFSAdmin可用于管理一个 HDFS 集群的命令集。fsckHadoop 命令/应用程序的一个子命令。可以使用 fsck 命令来检查文件的不一致(比如缺失块),但不能使用 fsck 命令更正这些不一致。 Name node 和 Data node 这些节点拥有内置 web 服务器,允许管理员检查集群的当前状态。
HDFS 拥有一个功能强大的杰出特性集,这要归功于它的简单但强大的架构。
HDFS 架构HDFS 由一些互联的节点集群组成,文件和目录驻留在那些节点上。一个 HDFS 集群包含一个节点,称为 NameNode,该节点管理文件系统名称空间并规范客户端对文件的访问。另外, Data node (DataNodes)将数据作为块存储在文件中。
Name node 和 Data node 在 HDFS 中,一个给定的 Name node 管理一些文件系统名称空间操作,比如打开、关闭以及重命名文件和目录。 Name node 还将数据块映射到 Data node,处理来自 HDFS 客户端的读写请求。 Data node 还根据 Name node 的指令创建、删除和复制数据块。
展示了 HDFS 的高级架构。
图 1.  HDFS 架构如图 1 所示,一个集群包含一个 Name node 。这种设计有利于形成一个简化模型来管理每个名称空间并仲裁数据分布。
Name node 和 Data node 之间的关系 Name node 和 Data node 是一些软件组件,旨在以一种解耦合方式跨多个异构操作系统在普通的 PC 机上运行。HDFS 是使用 Java 编程语言构建的;因此,任何支持 Java 编程语言的机器都能运行 HDFS。一个典型的安装集群拥有一台专用机器,用于运行一个 Name node ,可能还有一个 Data node。集群中的其他每台机器都运行一个 Data node。
通信协议所有 HDFS 通信协议都构建于 TCP/IP 协议之上。HDFS 客户端连接到 Name node 上打开的一个 Transmission                Control Protocol (TCP) 端口,然后使用一个基于 Remote Procedure Call (RPC) 的专有协议与 Name node 通信。 Data node 使用一个基于块的专有协议与 Name node 通信。

Data node 持续循环,询问 Name node 的指令。 Name node 不能直接连接到 Data node ,它只是从 Data node 调用的函数返回值。每个 Data node 都维护一个开放的服务器套接字,以便客户端代码或其他 Data node 能够读写数据。 Name node 知道这个服务器的主机或端口,将信息提供给有关客户端或其他 Data node 。请参见  侧边栏,了解关于 Data node、Name node 和客户端之间通信的更多信息。
Name node 维护和管理对文件系统名称空间的更改。
返回列表