1.介绍
NDFS:在一系列机器上存储庞大的面向流的文件,包含多机的存储冗余和负载均衡。
文件以块为单位存储在NDFS的离散机器上,提供一个传统的input/output流接口用于文件读写。
块的查找以及数据在网络上传输等细节由NDFS自动完成,对用户是透明的。而且NDFS能很好地处理
用于存储的机器序列,能方便地添加和删除一台机器。当某台机器不可用时,NDFS自动的保证文件
的可用性。只要网上的机器序列能提供足够的存储空间,就要保证NDFS文件系统的正常运作。
NDFS是建立在普通磁盘上的,不需要RAID控制器或者其它的磁盘阵列解决方案。
2.语法
1). 文件只能写一次,写完之后,就变成只读了(但是可以被删除)
2). 文件是面向流的,只能在文件末尾加字节流,而且只能读写指针只能递增。
3). 文件没有存储访问的控制
所以,所有对NDFS的访问都是通过验证的客户代码。没有提供API供其它程序访问。因此Nutch就是NDFS的
模拟用户。
3.系统设计
NDFS包含两种类型的机器:NameNodes和DataNodes: NameNodes维护名字空间;而DataNodes存储数
据块。NDFS中包含一个NamdNode,而包含任意多的DataNodes,每个DataNodes都配置与唯一的NameNode
通信。
1)NameNode: 负责存储整个名字空间和文件系统的布局。是一个关键点,不能down掉。但是做的工作
不多,因此不是一个负载的瓶颈。
维护一张保存在磁盘上的表: filename-0->BlockID_A,BlockID_B...BlockID_X,etc.;
filename就是一字符串,BolockID是唯一的标识符。每个filename有任意个blocks。
2)DataNode:负责存储数据。一个块应该在多个DataNode中有备份;而一个DataNode对于一个块最多
只包含一个备份。
维护一张表:BlockID_X->array of bytes..
3)合作:DataNode在启动后,就主动与NameNode通信,将本地的Block信息告知NameNode。NameNode据
此可以构造一颗树,描述如何找到NDFS中的Blocks。这颗树是实时更新的。DataNode会定期发送信息给
NameNode,以证明自己的存在,当NameNode收不到该信息时,就会认为DataNode已经down了。
4)文件的读写过程:例如Client要读取foo.txt,则有以下过程。
a.Client通过网络联系NameNode,提交filename:"foo.txt"
b.Client收到从NameNode来的回复,包含:组成"foo.txt"的文件块和每个块存在的DataNode序列。
c.Client依次读取每个文件块。对于一个文件块,Client从它的DataNode序列中得到合适的DataNode,
然后发送请求给DataNode,由DataNode将数据传输给Client
4.系统的可用性
NDFS的可用性取决于Blocks的冗余度,即应该在多少个DataNode保持同一Block的备份。对于有条件的话
可以设置3个备份和2个最低备份(DESIRED_REPLICATION and MIN_REPLICATION constants in fs.FSNamesystem)。
当一个块的低于MIN_REPLICATION,NameNode就会指导DataNode做新的备份。
5.net.nutch.fs包的一些文件介绍
1)NDFS.java:包含两个main函数,一个是关于NameNode的,一个是关于DataNode的
2)FSNamesystem.java:维护名字空间,包含了NameNode的功能,比如如何寻找Blocks,可用的DataNode序列
3)FSDirectory.java:被FSNamesystem调用,用于维护名字空间的状态。记录NameNode的所有状态和变化,当
NameNode崩溃时,可以根据这个日志来恢复。
4)FSDataset.java: 用于DataNode,维护Block序列等
5)Block.java and DatanodeInfo: 用于维护Block信息
6)FSResults.java and FSParam.java: 用于在网络上传送参数等
7)FSConstants.java:包含一些常数,用于参数调整等。
8)NDFSClient.java:用于读写数据
9)TestClient.java:包含一个main函数,提供一些命令用于对NDFS的存取访问
6.简单的例子
1)创建NameNode:
Machine A:java net.nutch.fs.NDFS$NameNode 9000 namedir
2)创建DataNode:
Machine B:java net.nutch.fs.NDFS$DataNode datadir1 machineB 8000 machineA:9000
Machine C:java net.nutch.fs.NDFS$DataNode datadir2 machineC 8000 machineA:9000
运行1,2步后,则得到了一个NDFS,包含一个NameNode和两个DataNode。(可以在同一台机
的不同目录下安装NDFS)
3)client端的文件访问:
创建文件:java net.nutch.fs.TestClient machineA:9000 CREATE foo.txt
读取文件:java net.nutch.fs.TestClient machineA:9000 GET foo.txt
重命名文件:java net.nutch.fs.TestClient machineA:9000 RENAME foo.txt bar.txt
再读取文件:java net.nutch.fs.TestClient machineA:9000 GET bar.txt
删除文件:java net.nutch.fs.TestClient machineA:9000 DELETE bar.txt
分享到:
相关推荐
Hadoop的分布式文件系统(HDFS)能够存储PB级的数据,并且由于其复制机制,可以在硬件故障时保证数据的可靠性。MapReduce编程模型允许开发者在大型数据集上实现并行运算,极大地提升了处理效率。此外,Hadoop的可...
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。...HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
Nutch项目最初始于2002年,是一个网页爬取工具和搜索引擎系统。其架构的可扩展性不高,无法处理数十亿网页的搜索问题。后来Google发表了GFS和MapReduce的论文,为Nutch提供了启发,并最终Nutch开发出了NDFS和...
分布式搜索引擎Nutch开发详解 Nutch是一款开源的、基于Java实现的全文搜索引擎,它主要用于构建大规模的网络爬虫系统,并提供了对抓取的网页进行索引和搜索的功能。Nutch与Hadoop紧密集成,能够充分利用分布式计算...
它是Apache Hadoop Core项目的一部分,最初是作为Apache Nutch搜索引擎项目的基础架构而开发的。 二、特点与优势 高容错性:HDFS是一个高度容错性的系统,适合部署在廉价的机器上。硬件故障是常态,而不是异常。...
在探讨“Lucene+Nutch搜索引擎开发”这一主题时,我们需要深入了解Lucene与Nutch这两个开源项目的功能、工作原理以及如何将它们结合起来构建一个高效的搜索引擎。 ### Lucene简介 Lucene是一个高性能、全功能的...
Hadoop 分布式文件系统 (HDFS)是一个设计为用在普通硬件设备上的分布式文件系统。...HDFS最初是为了Apache 的Nutch网络搜索引擎项目的下层构件而设计的。是Hadoop项目的一部分,而这又是Apache的 Lucene项目的一部分。
《Lucene+nutch搜索引擎开发(源代码)》是关于构建搜索引擎的一个重要资源,它结合了Apache Lucene和Nutch两大开源技术,旨在帮助开发者深入了解搜索引擎的工作原理并实践相关开发。Lucene是一个强大的全文检索库,...
**Nutch搜索引擎配置详解** Nutch是一款开源的网络爬虫软件,主要用于收集、索引和搜索互联网上的数据。它在大数据领域中占有重要地位,尤其对于构建自定义搜索引擎的项目非常实用。Nutch的设计理念是模块化,允许...
Apache Nutch是一款开源的网络爬虫软件,用于抓取互联网上的网页并进行索引,是大数据领域中搜索引擎构建的重要工具。这份手册涵盖了从环境准备到系统配置的全过程,旨在帮助用户成功搭建一个分布式的Nutch系统。 ...
《Lucene+Nutch搜索引擎开发》是一本专注于搜索引擎技术的书籍,配套光盘资源为学习者提供了丰富的实践材料,尤其对于想要深入理解Nutch搜索引擎开发的读者来说,这是一份不可多得的学习资料。Nutch是基于Apache ...
本资料主要探讨如何利用开源项目Lucene和Nutch构建一个完整的搜索引擎系统,这是一份关于“lucene+nutch搜索引擎开发源码”的第二部分。 Lucene是Apache软件基金会的一个高性能、全文本搜索库,它提供了基础的索引...
《Lucene.Nutch搜索引擎开发》是一本专注于介绍如何利用Lucene和Nutch构建搜索引擎的书籍。这本书的内容深入浅出,适合对搜索引擎技术感兴趣的开发者阅读。Lucene是一个高性能、全文本搜索库,而Nutch则是一个基于...
Doug Cutting是Lucene和Hadoop的创始者之一,这使得Nutch与大数据处理和搜索引擎技术有着深厚的历史渊源。Nutch最初的目标是成为一款搜索引擎,但随着时间的推移,它已经发展成为一个功能强大的网络爬虫工具。 ...
Nutch搜索引擎的核心功能包括网页抓取、内容解析、索引建立以及查询服务。其中,网页抓取(或称爬虫)模块负责从网络上抓取网页内容;内容解析模块用于提取网页中的文本信息;索引建立模块则将解析后的数据组织成...