手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

HDFS学习小结(Hadoop2.xx版本)

[日期:2016-07-28] 来源:Linux社区  作者:bigtrash [字体: ]

Hadoop2.xx 集群搭建:http://www.linuxidc.com/Linux/2016-07/133644.htm

1.HDFS(Hadoop Distributed File System):hadoop分布式文件系统,由管理文件系统元数据(metadata)的NameNode和存储实际数据的DataNode组成。     
        通过分布式的存储机制支持线性增长的海量存储能力

        数据自动冗余,无须通过RAID进行备份
        一次写入,多次读,不能修改,简单一致,1.xx版不支持append功能
        按照“数据就近”原则分配节点执行

2.NameNode:管理hdfs的命名空间
    保存metadata信息:
        文件owership与permissions
        文件包含那些Block
        Block保存在哪个DataNode
    NameNode的metadata信息存储到磁盘中的fsimage,在hdfs启动后加载到内存;

    内存中NameNode操作信息会保存到磁盘中的edits日志中。
 
NameNode启动时的安全模式阶段:
    1)不产生数据写

    2)收集DataNode的报告,当数据块达到最小副本数以上,则视为安全;当安全块达到一定比例后,过若干时间退出安全模式

    3)针对副本数不足的数据块,自动复制使其达到最小副本数

3.DataNode:真正存储数据的地方
    以Block形式存储,每个块Block预设128M,比目前大多数文件系统的block块大,但是物理存储上不会占用这么多的空间
    每个区块至少分到三台(默认)DataNode上,其副本数可以调整。其副本机制提高可靠度和读取吞吐量
    启动DataNode线程时,遍历本地文件系统,产生一份hdfs数据块和本地文件的对应关系列表,并汇报给NameNode。

4.Secondary NameNode:
        当NameNode启动时,需要合并硬盘上的fsimage(HDFS的最新状态)和edits(fsimage创建后的),需要消耗大量的启动时间。这里的Secondary NameNode定时去下载namenode的fsimage文件和edits文件进行合并,同时namenode上启用新的edits,然后再将合并后的fsimage上传覆盖namenode,并开启一个新的edits日志,减少了hdfs启动启动时间。

5.Checkpoint node:可能是为了避免名字上的混淆,1.0.4 版本后建议使用CheckPoint Node去代替Secondary NameNode,作用及配置基本一样。
    使用bin/hdfs namenode -checkpoint去启动
    启动NameNode时-importCheckpoint,可以从checkpioint中导入namenode
    常用配置文件:
        dfs.namenode.checkpoint.period  #edits触发一次合并的时间
        fs.checkpoint.size  #edits触发一次合并的大小临界值
        dfs.namenode.checkpoint.dir  #指定secondary namenode的保存路劲
        dfs.namenode.checkpoint.edits.dir  #指定secondary namenode的edits保存路径

6.Backup Node:namenode的完全备份。除了提供Checkpoint功能,还复制master内存中的Namespace到自己的内存中。Backup Node不仅接收NameNode上的edits保存到磁盘,还应用edits到自己的Namespace内存复本,建立了Namespace的完全备份。
    目前hdfs只支持一个backup node,使用了backup之后就不能使用checkpoing了
        dfs.backup.address  #backup node的位置
        dfs.backup.http.address  #backup node web界面地址
   
    dfs.backup.address配置的节点上,运行bin/hdfs namenode -checkpoint

7. Block三副本放置策略:
        副本1:client的节点上

        副本2:不同机架的节点上

        副本3:与副本2同一机架的另一个节点上

8.DataNode损坏处理机制:
        1.从DataNode中读取Block的时候,它会计算checksum
        2.计算后的checksum与创建时值不一样,说明该block已经损坏
        3.client会读取其他DataNode上的block,NameNode标记该块已经损坏,然后复制block达到预设的副本数(通常在文件创建后三周(默认)验证其checksum)

9.HDFS的访问方式:
        HDFS SHELL 命令

        HDFS JAVA API

        HDFS REST API

        HDFS FUSE

        HDFS lib hdfs:C/C++访问接口

        thrift
                。。。

10.Hadoop与HDFS的交互类shell:hadoop fs –help命令
    hadoop fs –ls PATH:查看指定目录下内容
    hadoop fs –cat PATH/FILE:查看FILE
    hadoop fs –put LOCAL_PATH/FILE HADOOP_PATH:将本地文件存储至hadoop
    hadoop fs –put LOCAL_PATH HADOOP_PATH:将本地文件夹存储至hadoop
    hadoop fs –rm PATH/FILE:删除FILE
    hadoop fs –rmr PATH:删除PATH下所有文件
    hadoop fs –mkdir PATH: 新建目录
    hadoop fs  -touchz  PATH/FILE:创建一个文件
    hadoop  fs  –mv  PATH/OLD_FILE  PATH/NEW_FILE:  文件重命名
            ......

11.hdfs管理
hadoop-deamon.sh start namenode #启动namenode
hadoop-deamon.sh start datanode #启动datanode

hdfs dfsadmin -help:获取一些hdfs管理的操作
    -report:报告HDFS的基本统计数据
    -safemode:安全模式
    -finalizeUpgrade:移除集群最后一次升级前的备份
    -refreshNodes:重新读取hosts和exclude文件(dfs.hosts.exclude选项中指定),NameNode重新识别节点的改动
    -printTopology:显示集群的拓扑
    -upgradeProgress status/details/force:显示升级状态/升级状态的细节/强制升级操作

hadoop  fsck: 文件管理

        <path>              检查这个目录中的文件是否完整
        -move              破损的文件移至/lost+found目录
        -delete            删除破损的文件
        -openforwrite  打印正在打开写操作的文件
        -files                打印正在check的文件名
        -blocks            打印block报告 (需要和-files参数一起使用)
        -locations        打印每个block的位置信息(需要和-files参数一起使用)
        -racks              打印位置信息的网络拓扑图 (需要和-files参数一起使用)
start-balancer.sh -threshold:数据块重新分布

可以通过Web服务查看集群中NameNode和DataNode的状态。
    http://master:50070/ :显示集群当前基本状态

 

下面关于Hadoop的文章您也可能喜欢,不妨看看:

Ubuntu14.04下Hadoop2.4.1单机/伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS安装和配置Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04上搭建Hadoop环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu下Hadoop环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建Hadoop环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-07/133680.htm

linux
相关资讯       HDFS 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款