HDFS简单使用指南

hdfs简单使用指南

一、概述

HDFS是Hadoop程序在工作时的主要分布式存储组件。HDFS集群主要由NameNode和DataNode组成,NameNode负责管理文件系统的元数据,DataNode负责存储实际的数据。主要介绍用户和HDFS集群的交互。
以下是一些比较常见的特征和功能
1)Hadoop是用java语言写的,所以主要平台上基本都可以支持。
2)NameNode和DataNode在web页面也可以访问。
3)HDFS包含的一些常用功能:
(1)文件权限与身份验证
(2)机架感知:在任务调度和分配存储位置时需要考虑节点的物理位置。
(3)安全模式:在维护和管理时需要用到的模式。
(4)fsck:诊断文件系统的健康状况,查找丢失文件或块时用到的工具。
(5)平衡器:当数据在DataNode之间分布不均衡时,平衡集群用到的工具。
(6)升级和回滚:在升级时,如果出现意外情况发生故障,可以回滚到升级前的状态。
(7)Secondary NameNode:合并FSImage和EditLog。执行Chackpoint操作,将NameNode的EditLog和FSImage拷贝到Secondary NameNode,然后Secondary NameNode在内存中合并EditLog和FSImage,生成新的文件fsimage.point。拷贝fsimage.point到NameNode,NameNode将fsimage.point重新命名为fsimage。

二、web界面

NameNode和DataNode都有web界面可以使用,可以查看集群当前的基本状态信息。在默认的配置下,NameNode的web端口为9870。例:http://1921.168.0.xxx:9870。
在这里插入图片描述
也可以查看DataNode的信息和用来浏览文件系统(Utilities->Browse the file system)。
在这里插入图片描述

三、shell命令

hadoop中可以直接使用shell命令来跟HDFS和其他hadoop支持的文件系统进行交互。使用

bin/hdfs dfs -help

可以查看hadoop支持的hadoop shell命令。
在这里插入图片描述
这些命令可以满足大多数的文件系统操作需求,如复制文件、更改文件权限等。还支持一些HDFS特有的操作,如更改副本数。

四、Secondary NameNode详解

NameNode的元数据是存储在NameNode节点的内存中,因为如果存储在NameNode节点的磁盘中,面对经常的随机访问,响应客户请求,必然是效率过低。所以,元数据是存储在内存中。但是如果只存储在内存中,一旦断电,元数据就会丢失,整个集群就无法工作。因此,在磁盘中存储备份元数据的FSImage。
但是,当内存中的元数据更新时,如果同时更新FSImage,就会导致效率过低,但是如果不更新,就会发生数据一致性的问题,一旦NameNode节点断电,就会产生元数据丢失数据。所以使用Edits文件,Edits文件只进行追加操作,效率很高,每当元数据有更新或添加元数据时,一边修改内存中的元数据,一遍把响应的操作追加到Edits中。这样,当NameNode节点断电时,也可以通过FSImage和Edits的合并,合成元数据。
当长时间的添加数据到Edits中,就会导致Edits文件数据过大,效率降低,而且重启NameNode时,恢复元数据的时间过长。因此需要定期的对FSImage和Edits进行合并,这个操作如果由NameNode节点进行操作,会使NameNode的效率变低,所以由SecondaryNameNode节点进行合并。SecondaryNameNode专门用于FSImage和Edits的合并。
1)第一阶段:NameNode启动
(1)第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
(2)客户端对元数据进行增删改的请求。
(3)NameNode记录操作日志,更新滚动日志。
(4)NameNode在内存对元数据进行增删改。
2)第二阶段:SecondaryNameNode工作
(1)SecondaryNameNode询问NameNode是否进行CheckPoint操作。CheckPoint操作由两个参数触发
·默认时间一小时,指两个连续的CheckPoint操作最大的时间间隔不超过一小时。

dfs.namenode.checkpoint.period

·默认一分钟检查一次操作次数,当操作次数达到一百万时,SecondaryNameNode执行一次CheckPoint操作。

dfs.namenode.checkpoint.txns(操作次数)
dfs.namenode.checkpoint.check.period(检查间隔时间)

(2)SecondaryNameNode请求执行CheckPoint。
(3)NameNode滚动正在写的Edits日志。
(4)将滚动前的编辑日志和镜像文件拷贝到SecondaryNameNode。
(5)SecondaryNameNode加载编辑日志和镜像文件到内存,合并。
(6)生成新的镜像文件fsimage.chkpoint.
(7)拷贝fsimage.chkpoint到NameNode。
(8)NameNode将fsimage.chkpoint重新命名成fsimage。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值