中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 未整理篇
Nutch分布式文件系统
作者:Fengrux 时间:2003-02-21 11:11 出处:互联网 责编:chinaitpower
              摘要:Nutch分布式文件系统

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 


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有