Hadoop-HDFS

 Hadoop介绍

作者:Doug Cutting

是Nutch搜素引擎的一个模块

 

基础模块

Hbase: Nosql数据库 key value 最大化利用内存

HDFS: 分布式文件系统,最大化利用磁盘

MapReduce :编程模式,主要作数据分析,最大化利用CPU

 

 

HDFS

HDFS设计原则:

1.文件以块block方式存储

2.内个块带下远比多数文件系统来的大

3.通过副本机制提高可靠度和读取吞吐量

4.每个区块至少分到三台DataNode上

5.单一master(NameNode)来协调存储元数据(metadata)

6.客户端对文件没有缓存机制(nocache)

 

NameNode

NameNode(NN):提供名称查询服务,它是一个jetty服务器。

NameNode保存metadata信息包括

1.文件owership和permissions

2.文件包含哪些块

3.Block保存在哪个DataNode(由DataNode启动时上报)

 

Metadata

metadata:NameNode的metadata信息在启动后会加载到内存

metadata存储到磁盘文件名为"fsimage"  Block的位置信息不会保存到fsimage

 

 

DataNode(DN)

1.保存Block

2.启动DN线程的时候会向NN汇报block信息

3.通过向(NameNode)发送心跳保持与其联系(3秒一次),如果NN10分钟没有收到DN的心跳,

则认为其已经lost,并copy其上的block到其它DN

 

Block

1.设置一个Block64MB,如果上传文件小于改值,仍然会占用一个Block的命名空间

(NameNode metadata),但是物理存储上不会占用64MB的空间

2.Block大小和副本数由Client端上传文件到HDFS时设置,其中副本数可以变更,

Block是不可以再上传后变更的

 

数据损坏(corruption)处理

1.当DataNode读取block的时候,它会计算checksum

2.如果计算后的checksum,与block创建时值不一样,说明该block已经损坏。

3.client 读取其它DN上的block;NN标记该blcok已经损坏,然后复制block达到预期设置的文件备份数

4.DN在其文件创建后三周验证其checksum

 

SecondaryNameNode(SNN)

1.她不是NN的热备份

2.可以作为冷备份

  将本地保存的fsimage导入

  修改cluster所有DN的NameNode地址

  修改所有client端NameNode地址

  or修改SNN IP 为原NNIP

3.它的工作是帮助NN合并edits log ,减少NN启动时间

 

EditLog和fsimage

fsimage保存了最新的元数据检查点。

Namenode上保存着HDFS的名字空间。对于任何对文件系统元数据产生修改的操作,Namenode都会使用一种称为EditLog的事务日志记录下来;文件系统元数据的持久化

 

 

EditLog两种方式同步到fsimage:

1.根据时间

2.根据EditLog大小

 

HDFS文件读取:

client 1.open Distributed File System

      2.get block locations(在NN里)

      3.read(通过FSData InputStream)

      4.读取各个DataNode

      5.读取各个DataNode2

      6.close

Hadoop-HDFS_第1张图片

 

HDFS文件写入:

client 1.create Distributed File System

       2.create NN

       3.write  FSDataOutputStream

       4.write packet (各个DataNode 互相写)

       5.ack packet

       6.close

Hadoop-HDFS_第2张图片

 

HDFS命令:

--创建文件夹:

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权限管理

Hadoop权限和unix一样的API:

每个文件和目录有一个所有者(owner)和一个组(group)。

不同于POSIX模型,HDFS权限模型中的文件没有sticky,setuid或setgid位,因为这里没有可执行文件的概念。

 

Hadoop安全模式(升级的时候用):

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


 

你可能感兴趣的:(hadoop,hdfs)