引言
最近在研究Hadoop的HDFS分布式文件系统,在网上找了一些资料,稍微整理了下,并对HDFS分布式存储进行了简单的存储测试,跟FTP服务器存储进行了对比,测试数据在文档后面。现在先来了解下什么是Hadoop吧!
什么是Hadoop?
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。这个项目的地址是http://hadoop.apache.org/core/。
Hadoop框架中最核心的设计就是:MapReduce和HDFS。
MapReduce
MapReduce的思想是由Google发表的一篇论文GFS、MapReduce所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。MapReduce从它名字上来看就大致可以看出个缘由,两个动词Map和Reduce,“Map(展开)”就是将一个任务分解成为多个任务,“Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。这不是什么新思想,其实在多线程,多任务的设计就可以找到这种思想的影子。不论是现实社会,还是在程序设计中,一项工作往往可以被拆分成为多个任务,任务之间的关系可以分为两种:一种是不相关的任务,可以并行执行;另一种是任务之间有相互的依赖,先后顺序不能够颠倒,这类任务是无法并行处理的。在分布式系统中,机器集群就可以看作硬件资源池,将并行的任务拆分,然后交由每一个空闲机器资源去处理,能够极大地提高计算效率,同时这种资源无关性,对于计算集群的扩展无疑提供了最好的设计保证。(廉价的机器群可以匹敌任何高性能的计算机,纵向扩展的曲线始终敌不过横向扩展的斜线)。任务分解处理以后,那就需要将处理以后的结果再汇总起来,这就是Reduce要做的工作。
一个Map/Reduce 作业(job) 通常会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序,然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。 整个框架负责任务的调度和监控,以及重新执行已经失败的任务。
Map/Reduce框架由一个单独的master JobTracker 和每个集群节点一个slave TaskTracker共同组成。master负责调度构成一个作业的所有任务,这些任务分布在不同的slave上,master监控它们的执行,重新执行已经失败的任务。而slave仅负责执行由master指派的任务。
mapreduce例子:http://www.hadoop.org.cn/code/mapred.html
HDFS分布式文件系统
HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。HDFS的设计思想:构建一个非常庞大的分布式文件系统。在集群中节点失效是正常的,节点的数量在Hadoop中不是固定的.单一的文件命名空间,保证数据的一致性,写入一次多次读取.典型的64MB的数据块大小,每一个数据块在多个 DN(DataNode)有复制.客户端通过NN(NameNode)得到数据块的位置,直接访问DN获取数据。
从这张图中可以看出,一个文件其实被分成一个或多个数据块(Block),这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录,它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求,在 Namenode的统一调度下进行数据块的创建、删除和复制。
NameNode功能
映射一个文件到一批的块,映射数据块到DN节点上。集群配置管理,数据块的管理和复制。处理事务日志:记录文件生成,删除等。因为NameNode的全部的元数据在内存中存储,所以NN的内存大小决定整个集群的存储量。
NN内存中保存的数据:
1. 文件列表
2. 每一个文件的块列表
3. 每一个DN中块的列表
4. 文件属性:生成时间,复制参数,文件许可(ACL)
Secondary Namenode的功能
Secondary Namenode是一个让人混淆的名字,其实Secondary Namenode是一个辅助NN处理FsImage和事务日志的Server,它从NN拷贝FsImage和事务日志到临时目录,合并FsImage和事务日志生成一个新的FsImage,上传新的FsImage到NN上,NN更新FsImage并清理原来的事务日志。
DataNode功能
在本地文件系统存储数据块,存储数据块的元数据,用于CRC校验。响应客户端对数据块和元数据的请求。周期性的向NN报告这个DN存储的所有数据块信息。客户端要存储数据时从NN获取存储数据块的DN位置列表,客户端发送数据块到第一个DN上,第一个DN收到数据通过管道流的方式把数据块发送到另外的DN 上。当数据块被所有的节点写入后,客户端继续发送下一个数据块。DN每3秒钟发送一个心跳到NN,如果NN没有收到心跳在重新尝试后宣告这个DN失效。当 NN察觉到DN节点失效了,选择一个新的节点复制丢失的数据块。
数据块的放置位置和数据正确性:
在典型的配置里,数据块一个放在当前的节点,一个放在远程的机架上的一个节点,一个放在相同机架上的一个节点,多于3个的数据块随意选择放置。客户端选择最近的一个节点读取数据。Hadoop使用CRC32效验数据的正确性,客户端每512个byte计算一次效验,DN负责存储效验数据。客户端从DN获取数据和效验数据,如果效验出错,客户端尝试另外节点上复制的数据。
HDFS如何存储?
流水线复制:当客户端向HDFS文件写入数据的时候,一开始是写到本地临时文件中。假设该文件的副本系数设置为3,当本地临时文件累积到一个数据块的大小时,客户端会从Namenode获取一个Datanode列表用于存放副本。然后客户端开始向第一个Datanode传输数据,第一个Datanode一小部分一小部分(4 KB)地接收数据,将每一部分写入本地仓库,并同时传输该部分到列表中第二个Datanode节点。第二个Datanode也是这样,一小部分一小部分地接收数据,写入本地仓库,并同时传给第三个Datanode。最后,第三个Datanode接收数据并存储在本地。因此,Datanode能流水线式地从前一个节点接收数据,并在同时转发给下一个节点,数据以流水线的方式从前一个Datanode复制到下一个。
HDFS 存储测试
测试环境:
服务器:Linux
masters:192.168.4.128
slaves:192.168.4.128、192.168.4.42
结论
以上这份测试报告是对HDFS分布式文件系统的存储测试,分别对HDFS和ftp服务器进行了测试比较,从上面的测试结果可以看出:
1. 对于写入操作HDFS明显比FTP服务器要慢。
2. 在一定机器数的集群范围内,是可以提高写入速度的。
3. HDFS适合在大量计算机组成的大规模集群上应用。
…
相关资料:
hadoop文档:http://hadoop.apache.org/common/docs/r0.18.2/cn/index.html
ibm文章:http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop1/
http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop2/index.html
http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop3/
其他:http://www.360doc.com/relevant/08/0311/14/14474_1110355.shtml
http://www.michael-noll.com/wiki/Running_Hadoop_On_Ubuntu_Linux_(Multi-Node_Cluster)
- 大小: 56.4 KB
- 大小: 127.7 KB
分享到:
相关推荐
### Hadoop分布式文件系统(HDFS):关键技术与实践 #### 摘要 Hadoop分布式文件系统(HDFS)是Hadoop项目的核心组件之一,旨在为大规模数据集提供高效可靠的存储解决方案。HDFS的设计原则强调了数据的分布式存储与...
《高可用性的HDFS——Hadoop分布式文件系统深度实践》专注于Hadoop分布式文件系统(hdfs)的主流ha解决方案,内容包括:hdfs元数据解析、hadoop元数据备份方案、hadoop backup node方案、avatarnode解决方案以及最新...
Hadoop分布式文件系统架构和设计 Hadoop分布式文件系统是Hadoop生态系统的核心组件之一,负责存储和管理大规模数据集。下面将对Hadoop分布式文件系统的架构和设计进行详细介绍。 一、前提和设计目标 Hadoop分布式...
### hadoop分布式文件系统搭建 #### 一、配置hadoop分布式文件系统环境搭建 ##### 1. 准备 在开始搭建Hadoop分布式文件系统之前,首先需要确保环境准备妥当。具体步骤包括: - **检查端口占用情况**:通过`...
【Hadoop分布式文件系统】(HDFS)是一个专为运行在通用硬件上的分布式文件系统,设计目标是处理大规模数据集并提供高吞吐量的数据访问。HDFS在设计时考虑了硬件错误的常态,强调了容错性和快速的错误恢复机制,使其...
HDFS(Hadoop Distributed File System)是Hadoop的分布式文件系统,它设计用来运行在普通的硬件上,具有高容错性的特点,能够检测和处理硬件故障。HDFS的核心概念包括NameNode和DataNode,其中NameNode是管理文件...
《Hadoop分布式文件系统:架构和设计要点》 Hadoop分布式文件系统(HDFS)是为处理大规模数据而设计的一种可扩展、可靠的分布式文件系统。本文将深入探讨其架构和设计的核心要点。 首先,HDFS的设计目标是针对硬件...
### Hadoop分布式文件系统(HDFS)架构与设计 #### 一、引言 随着大数据时代的到来,数据处理的需求越来越广泛且复杂。传统的文件系统在处理海量数据时面临诸多挑战,如存储容量限制、数据访问速度慢等。为了解决...
本项目为“基于Java的Hadoop分布式文件系统API操作设计源码”,包含51个文件,其中包括37个Java源文件、10个XML配置文件、2个Properties配置文件、1个Gitignore忽略配置文件、1个Markdown文档。该系统利用Java语言...
第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件系统.pdf第四章(Hadoop大数据处理实战)Hadoop分布式文件...
### Hadoop分布式文件系统使用指南:深度解析与实践 #### 概述 Hadoop分布式文件系统(HDFS)是Hadoop框架的核心组成部分之一,旨在处理大规模数据集的存储与访问需求。HDFS的设计目标是在商用硬件上实现高容错性...
Hadoop 分布式文件系统 (HDFS)是一个设计为用在普通硬件设备上的分布式文件系统。它与现有的分布式文件系统有很多近似的地方,但又和这些文件系统有很明显的不同。HDFS是高容错的,设计为部署在廉价硬件上的。HDFS对...
1.1 HDFS系统架构 1.2 HA定义 1.3 HDFS HA原因分析及应对措施 1.3.1 可靠性 1.3.2 可维护性 1.4 现有HDFS HA解决方案 1.4.1 Hadoop的元数据备份方案 1.4.2 Hadoop的SecondaryNameNode方案 1.4.3 Hadoop的Checkpoint ...
【使用Hadoop分布式文件系统检索云存储中的文件】 在当今的云计算时代,云存储系统已成为企业和个人存储大量数据的关键解决方案。这些系统由一系列独立的存储服务器组成,通过网络为用户提供服务,允许经过身份验证...
《高可用性的HDFS——Hadoop分布式文件系统深度实践》专注于Hadoop分布式文件系统(hdfs)的主流ha解决方案,内容包括:hdfs元数据解析、hadoop元数据备份方案、hadoop backup node方案、avatarnode解决方案以及最新...
根据提供的文件信息,我们可以从标题、描述以及部分可见的内容中提炼出关于Hadoop分布式文件系统(HDFS)的相关知识点。 ### Hadoop分布式文件系统(HDFS) #### 一、简介 Hadoop分布式文件系统(Hadoop ...
hadoop的hdfs的0.8版本,下载后直接安装