作者:Doug Cutting
是Nutch搜素引擎的一个模块
Hbase: Nosql数据库 key value 最大化利用内存
HDFS: 分布式文件系统,最大化利用磁盘
MapReduce :编程模式,主要作数据分析,最大化利用CPU
1.文件以块block方式存储
2.内个块带下远比多数文件系统来的大
3.通过副本机制提高可靠度和读取吞吐量
4.每个区块至少分到三台DataNode上
5.单一master(NameNode)来协调存储元数据(metadata)
6.客户端对文件没有缓存机制(nocache)
NameNode(NN):提供名称查询服务,它是一个jetty服务器。
NameNode保存metadata信息包括
1.文件owership和permissions
2.文件包含哪些块
3.Block保存在哪个DataNode(由DataNode启动时上报)
metadata:NameNode的metadata信息在启动后会加载到内存
metadata存储到磁盘文件名为"fsimage" Block的位置信息不会保存到fsimage
1.保存Block
2.启动DN线程的时候会向NN汇报block信息
3.通过向(NameNode)发送心跳保持与其联系(3秒一次),如果NN10分钟没有收到DN的心跳,
则认为其已经lost,并copy其上的block到其它DN
1.设置一个Block64MB,如果上传文件小于改值,仍然会占用一个Block的命名空间
(NameNode metadata),但是物理存储上不会占用64MB的空间
2.Block大小和副本数由Client端上传文件到HDFS时设置,其中副本数可以变更,
Block是不可以再上传后变更的
1.当DataNode读取block的时候,它会计算checksum
2.如果计算后的checksum,与block创建时值不一样,说明该block已经损坏。
3.client 读取其它DN上的block;NN标记该blcok已经损坏,然后复制block达到预期设置的文件备份数
4.DN在其文件创建后三周验证其checksum
1.她不是NN的热备份
2.可以作为冷备份
将本地保存的fsimage导入
修改cluster所有DN的NameNode地址
修改所有client端NameNode地址
or修改SNN IP 为原NNIP
3.它的工作是帮助NN合并edits log ,减少NN启动时间
fsimage保存了最新的元数据检查点。
Namenode上保存着HDFS的名字空间。对于任何对文件系统元数据产生修改的操作,Namenode都会使用一种称为EditLog的事务日志记录下来;文件系统元数据的持久化
EditLog两种方式同步到fsimage:
1.根据时间
2.根据EditLog大小
client 1.open Distributed File System
2.get block locations(在NN里)
3.read(通过FSData InputStream)
4.读取各个DataNode
5.读取各个DataNode2
6.close
client 1.create Distributed File System
2.create NN
3.write FSDataOutputStream
4.write packet (各个DataNode 互相写)
5.ack packet
6.close
--创建文件夹:
hadoop fs -mkdir /user/hadoop/2015
--上传文件:
hadoop fs -put/copyFromLocal word.txt/user/hadoop/2015
--删除文件 文件夹
hadoop fs -rm /user/hadoop/2015/word.txt
--查看文件夹里的文件
hadoop fs -ls /user/hadoop/2015/
--查看文件内容
hadoop fs -text/cat/tail/user/hadoop/2015/word.txt
Hadoop权限和unix一样的API:
每个文件和目录有一个所有者(owner)和一个组(group)。
不同于POSIX模型,HDFS权限模型中的文件没有sticky,setuid或setgid位,因为这里没有可执行文件的概念。
NN namenode启动:
1.载入fsimage到内存,执行EditsLog
2.成功建立文件系统元数据的映射,则创建一个新的fsimage文件和一个空的EditsLog
3.NN开始监听RPC和HTTP请求
4.此刻NN运行在安全模式,(nn文件系统对客户端是只读,显示目录,显示文件内容。写删重命名会失败)。
5.系统中block位置不是由namenode维护的,而是以block列表形式存储在datanode中
6.正常操作期间,NN会在内存中保留所有块位置的映射信息。
7.安全模式下,各个DN会向NN发送block列表的最新情况
8.进入和离开安全模式
查看NN state
hadoop dfsadmin -satemode get
进入安全模式(hadoop启动的时候是在安全模式)
hadoop dfsadmin -safemode enter
离开安全模式
hadoop dfsadmini -safemode leave
资料:
http://hadoop.apache.org/
http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html