热门IT资讯网

HDFS 实验 (一) 原理

发表于:2024-11-23 作者:热门IT资讯网编辑
编辑最后更新 2024年11月23日,原文在此https://hadoop.apache.org/docs/r1.2.1/hdfs_design.htmlhadoop 两大组件 mapreduce和hdfs用HDFS的目标避免硬件故障硬件

原文在此

https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html

hadoop 两大组件 mapreduce和hdfs

用HDFS的目标

避免硬件故障

硬件故障是常态,而不是例外。一个HDFS实例可能包括数百或数千个服务器,存储文件系统的部分数据。事实上,有大量的组件,每个组件都有一个非平凡的失效概率意味着HDFS的一些组件总是非功能。因此,故障的快速检测,从自动的恢复是HDFS的一个核心构架目标。

流式数据访问

应用程序运行在HDFS需要流媒体访问他们的数据集。它们不是一般用途的文件系统上运行的通用应用程序。HDFS被设计为批处理,而不是由用户交互使用。重点是高吞吐量的数据访问,而不是低延迟的数据访问。POSIX的一些要求是不是有针对性的HDFS的应用所需要的。在几个关键的领域POSIX语义被交易来增加数据吞吐量。

大数据集

HDFS上运行的应用程序有大量的数据集。HDFS中典型的文件大小百万兆字节字节。因此,HDFS被调谐到支持大文件。它应该为单个集群中的数百个节点提供高聚合数据带宽和规模。它应该在一个实例中支持数以千万计的文件。

一致性模型

HDFS的应用需要写一次读文件的许多访问模型。创建、写入和关闭的文件不需要更改。这种假设简化了数据一致性问题,并允许高吞吐量数据访问。MapReduce应用程序或Web爬虫应用程序非常适合这个模型。有一个计划支持在将来追加对文件的写操作。

移动计算比移动数据便宜

应用程序请求的计算如果在其所运行的数据附近执行,则效率要高得多。当数据集的大小是巨大的时,情况尤其如此。这减少了网络拥塞,提高了系统的总体吞吐量。假设是,将计算迁移到数据位置的位置通常更好,而不是将数据移动到应用程序运行的地方。HDFS提供的接口的应用将更接近数据所在。

跨异构硬件和软件平台的可移植性

HDFS被设计为可以很容易从一个平台移植到另一个。这有利于广泛采用HDFS作为一个大的应用平台的选择。

节点和数据节点

HDFS有主从式架构。一个HDFS集群由一个单一的节点,一个主服务器,管理文件系统的命名空间和调节客户访问文件。此外,有多个数据节点,通常每一个节点的集群,其中管理连接到节点,它们运行在存储。HDFS文件系统命名空间暴露并允许用户将数据存储在文件中。在内部,一个文件被分成一个或多个数据块,这些块存储在一组数据节点。Namenode执行文件系统的命名空间操作如打开,关闭,和重命名文件和目录。这也决定了数据块到数据节点的映射。数据节点负责为读写文件系统的客户端的请求。数据节点执行创建,删除,并从NameNode在指令复制。

原理图

复制原理

HDFS的设计可靠地存储非常大的文件在机器在一大簇。它将每个文件存储成一组块;除了最后一个块之外,文件中的所有块都是相同的大小。文件的块被复制用于容错。块大小和复制因子可配置为每个文件。应用程序可以指定文件副本的个数。复制因子可以在文件创建时指定,以后可以更改。文件在HDFS写一次,随时都有严格的作家。

对于复制块的所有决定。它定期收到的心跳,从集群中的每个数据节点blockreport。一个心跳的收据表明DataNode运行正常。一个blockreport列出所有在DataNode块。

翻译文,请笑纳。。。。

FS Shell 文件操作

Action

Command

Create a directory named /foodir

bin/hadoop dfs -mkdir /foodir

Remove a directory named /foodir

bin/hadoop dfs -rmr /foodir

View the contents of a file named /foodir/myfile.txt

bin/hadoop dfs -cat /foodir/myfile.txt

FS shell is targeted for applications that need a scripting language to interact with the stored data.

DFSAdmin

The DFSAdmin command set is used for administering an HDFS cluster. These are commands that are used only by an HDFS administrator. Here are some sample action/command pairs:

Action

Command

Put the cluster in Safemode

bin/hadoop dfsadmin -safemode enter

Generate a list of DataNodes

bin/hadoop dfsadmin -report

Recommission or decommission DataNode(s)

bin/hadoop dfsadmin -refreshNodes

api的链接如下,可以用c或者java

http://hadoop.apache.org/docs/current/api/

0