关闭

2、初识HDFS

标签: HDFSHadoopnameNodedataNode大数据
284人阅读 评论(0) 收藏 举报
分类:

一、HDFS设计基础与目标:

1、 数据冗余

2、 流式数据访问,即数据批量读取而非随机读取,hadoop擅长做的是数据分析而不是事务处理

3、 大规模数据集

4、 简单一致模型;为了降低系统的复杂度,对文件采用一次性写多次读的逻辑设计,即是文件一经写入,关闭,就再也不能修改

程序采用“数据就近”原则分配节点执行

二、HDFS设计原则:

1、文件以block的方式存储

2、每个block一般64M

3、通过副本提高可靠度和吞吐量

4、每个block至少分到3个DataNode上(默认)

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

6、客户端对文件没有缓存机制(No data caching)

三、HDFS的可靠性

1、  冗余副本策略:在hdfs-site.xml设置复制因子指定副本数量,所有数据块都有副本,datanode启动时,遍历本地文件系统,产生一份hdfs数据块和本地文件的对应关系表(blockreport)汇报给namenode

2、  机架策略:集群一般放在不同机架上,HDFS的“机架感知”,在本机架存放一个副本,其他机架存放别的副本,这样可以防止机架失效时丢失数据,也可以提供带宽利用率

3、  心跳机制:namenode周期性从datanode接收心跳信号和块报告,根据块报告验证元数据,预先设置副本数量的阈值,namenode检测出低于阈值的数据块,并在合适的时机进行复制

4、  安全模式:namenode启动时先经过“安全模式”阶段,安全模式阶段不会产生数据写,当数据块大达到最小副本以上时,被认为是“安全”的,在一定比例(可设置)的数据块被确定为“安全”后,在过若干时间,安全模式结束,当检测副本数不足的数据块时,该块会被复制直到最小副本数

5、  校验和:文件创立时,每个数据块都产生检验和,检验和作为一个单独的隐藏文件保存在命名空间,客户端获取数据时检查检验和是否相同,从而发现数据是否损坏,如果损坏,继续读取其他副本

6、  回收站:删除文件时,放入回收站,文件可以快速恢复,可以设置时间阈值,当存放时间超过阈值,彻底删除

7、  元数据保护:映像文件和事务日志是namenode的核心数据,可以配置多个副本,降低namenode的处理速度,但增加安全性

快照机制:支持存储某个时间点的映像,可以使数据返回到某个时间点的状态

四、HDFS组成模块

HDFS主要由nameNode、dataNode和secondaryNameNode组成,另外MapReduce执行时用到的JobTracker和TaskTracker分别对应nameNode和dataNode,其中TaskTracker必须与dataNode在同一个物理节点,但是JobTracker和nameNode可以不在同一节点。

NameNode:

1、  管理文件系统的命名空间,是HDFS守护程序,提供名称查询服务,是一个jetty服务器

2、  Namenode使用事务日志记录HDFS元数据的变化,使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等;NameNode保存的metadata信息:文件的ownership、permissions;文件包含哪些块;block保存在哪个DataNode(由DataNode启动时上报)

3、  协调客户端对文件的访问

4、  NameNode的metadata信息在启动后会加载到内存中

Metadata存储到磁盘文件名为“fsimage”(block的位置信息不会存储到fsimage)

DataNode:

1、  负责所在屋里节点的存储管理,文件有数据块组成,典型块大小是64MB

2、  一次写入,多次读取

3、  数据块尽量散步到各个节点

4、  启动时向NN汇报block信息

向NN发送心跳检测保持联系(3秒一次),如果NN 10分钟没有收到DN心跳,则认为已经lost,并copy其上的block到其他DN

SecondaryNameNode(SNN)

1、  它不是NN的热备份

2、  监控HDFS状态的辅助后台程序

3、  它可以作为冷备份:将本地的fsimage导入;修改cluster所有DN的NameNode地址;修改所有client端的NameNode地址or 修改SNN IP为原NN IP

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

JobTracker:

1、 用于处理作业(用户提交代码)

2、 决定哪些文件参与处理,然后切割task分配节点

3、 监控task,重启失败的task(于不同的节点)

4、 每一个集群只有唯一的jobTracker,位于master节点

TaskTracker:

1、 位于slave节点,与datanode结合

2、 管理各节点上的task

3、 每个节点只有一个taskTracker,但是一个taskTracker可以启动多个JVM

与JobTracker交互

五、HDFS常用命令

创建文件夹hadoop fs –mkdir /user/….

上传文件:hadoop fs –put /home/admin/newFile /user/….

下载文件:hadoop fs –get /user/…  /home/admin/newFile

删除文件和文件夹:hadoop fs –rm filename  hadoopfs –rmr dirname

查看文件夹里面的文件:hadoop fs –ls dir

查看文件内容:Hadoop fs –cat/text/tail filename

 

六、Hadoop管理员常用命令

hadoop job –list #列出正在运行的jobs

Hadoop job –kill <job_id> #kill job

Hadoop fsck / #检查HDFS块状态是否损坏

Hadoop fsck / -delete #检查HDFS块状态,删除坏块

Hadoop dfsadmin –report #检查HDFS状态,包括DN信息

Hadoop dfsadmin –safemode enter|leave #安全模式

Hadoop distcp hdfs://a:9000/xxxhdfs://b:9000/xxx #并行拷贝

./bin/start-balancer.sh#平衡集群文件
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:42692次
    • 积分:1227
    • 等级:
    • 排名:千里之外
    • 原创:74篇
    • 转载:38篇
    • 译文:0篇
    • 评论:0条