精华内容
下载资源
问答
  • 其中一个问题是报but there is no HDFS_NAMENODE_USER defined. Aborting operation. Starting datanodes 直接解决 在Hadoop安装目录下找到sbin文件夹 在里面修改四个文件 1、对于start-dfs.sh和stop-dfs.sh文件,...
  • Namenode瓶颈解决方案

    2019-04-20 01:06:14
    NULL 博文链接:https://snv.iteye.com/blog/1884565
  • 第5章 NameNode和SecondaryNameNode(面试开发重点) 5.1 NN和2NN工作机制 思考:NameNode中的元数据是存储在哪里的? 首先,我们做个假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应...
  • HDFS体系结构(NameNode、DataNode详解)
  • 今天小编就为大家分享一篇关于Hadoop之NameNode Federation图文详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • HDFS读写流程&NameNode;工作机制流程图原件,用于修改和调整
  • 利用Zookeeper对HDFS中Namenode单点失败的改进方法,鲁阳,郑岩,在大数据时代分布式处理的已经成为潮流,而Hadoop是一种应用十分广泛的分布式处理框架。但在Hadoop的使用中,Namenode的单点失败问题一�
  • 今天小编就为大家分享一篇关于Hadoop中namenode和secondarynamenode工作机制讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • hdfs的namenode的元数据管理机制,简要画出了元数据管理的流程分析
  • NameNode工作机制

    千次阅读 2019-06-10 21:26:38
    1 NameNode&Secondary NameNode工作机制 1)第一阶段:namenode启动 (1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。 (2)客户端对元...

    1 NameNode&Secondary NameNode工作机制

    1)第一阶段:namenode启动

    (1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。

    (2)客户端对元数据进行增删改的请求。

    (3)namenode记录操作日志,更新滚动日志。

    (4)namenode在内存中对数据进行增删改查。

    2)第二阶段:Secondary NameNode工作

           (1)Secondary NameNode询问namenode是否需要checkpoint。直接带回namenode是否检查结果。

           (2)Secondary NameNode请求执行checkpoint。

           (3)namenode滚动正在写的edits日志。

           (4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。

           (5)Secondary NameNode加载编辑日志和镜像文件到内存,并合并。

           (6)生成新的镜像文件fsimage.chkpoint。

           (7)拷贝fsimage.chkpoint到namenode。

           (8)namenode将fsimage.chkpoint重新命名成fsimage。

     

    2 镜像文件和编辑日志文件

    1)概念

           namenode被格式化之后,将在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current目录中产生如下文件

    edits_0000000000000000000

    fsimage_0000000000000000000.md5

    seen_txid

    VERSION

    1Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件idnode的序列化信息。 

    2Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。 

    3seen_txid文件保存的是一个数字,就是最后一个edits_的数字

    4)每次Namenode启动的时候都会将fsimage文件读入内存,并从00001开始到seen_txid中记录的数字依次执行每个edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成Namenode启动的时候就将fsimageedits文件进行了合并。

    2)oiv查看fsimage文件

    (1)查看oiv和oev命令

    [faded@hadoop102 current]$ hdfs

    oiv                  apply the offline fsimage viewer to an fsimage

    oev                  apply the offline edits viewer to an edits file

    (2)基本语法

    hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径

    (3)案例实操

    [faded@hadoop102 current]$ pwd

    /opt/module/hadoop-2.7.2/data/tmp/dfs/name/current

     

    [faded@hadoop102 current]$ hdfs oiv -p XML -i fsimage_0000000000000000025 -o /opt/module/hadoop-2.7.2/fsimage.xml

     

    [faded@hadoop102 current]$ cat /opt/module/hadoop-2.7.2/fsimage.xml

    将显示的xml文件内容拷贝到eclipse中创建的xml文件中,并格式化。部分显示结果如下。

    <inode>

           <id>16386</id>

           <type>DIRECTORY</type>

           <name>user</name>

           <mtime>1512722284477</mtime>

           <permission>faded:supergroup:rwxr-xr-x</permission>

           <nsquota>-1</nsquota>

           <dsquota>-1</dsquota>

    </inode>

    <inode>

           <id>16387</id>

           <type>DIRECTORY</type>

           <name>faded</name>

           <mtime>1512790549080</mtime>

           <permission>faded:supergroup:rwxr-xr-x</permission>

           <nsquota>-1</nsquota>

           <dsquota>-1</dsquota>

    </inode>

    <inode>

           <id>16389</id>

           <type>FILE</type>

           <name>wc.input</name>

           <replication>3</replication>

           <mtime>1512722322219</mtime>

           <atime>1512722321610</atime>

           <perferredBlockSize>134217728</perferredBlockSize>

           <permission>faded:supergroup:rw-r--r--</permission>

           <blocks>

                  <block>

                         <id>1073741825</id>

                         <genstamp>1001</genstamp>

                         <numBytes>59</numBytes>

                  </block>

           </blocks>

    </inode>

    3)oev查看edits文件

    (1)基本语法

    hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径

    (2)案例实操

    [faded@hadoop102 current]$ hdfs oev -p XML -i edits_0000000000000000012-0000000000000000013 -o /opt/module/hadoop-2.7.2/edits.xml

    [faded@hadoop102 current]$ cat /opt/module/hadoop-2.7.2/edits.xml

    将显示的xml文件内容拷贝到eclipse中创建的xml文件中,并格式化。显示结果如下。

    <?xml version="1.0" encoding="UTF-8"?>

    <EDITS>

           <EDITS_VERSION>-63</EDITS_VERSION>

           <RECORD>

                  <OPCODE>OP_START_LOG_SEGMENT</OPCODE>

                  <DATA>

                         <TXID>129</TXID>

                  </DATA>

           </RECORD>

           <RECORD>

                  <OPCODE>OP_ADD</OPCODE>

                  <DATA>

                         <TXID>130</TXID>

                         <LENGTH>0</LENGTH>

                         <INODEID>16407</INODEID>

                         <PATH>/hello7.txt</PATH>

                         <REPLICATION>2</REPLICATION>

                         <MTIME>1512943607866</MTIME>

                         <ATIME>1512943607866</ATIME>

                         <BLOCKSIZE>134217728</BLOCKSIZE>

                         <CLIENT_NAME>DFSClient_NONMAPREDUCE_-1544295051_1</CLIENT_NAME>

                         <CLIENT_MACHINE>192.168.1.5</CLIENT_MACHINE>

                         <OVERWRITE>true</OVERWRITE>

                         <PERMISSION_STATUS>

                                <USERNAME>faded</USERNAME>

                                <GROUPNAME>supergroup</GROUPNAME>

                                <MODE>420</MODE>

                         </PERMISSION_STATUS>

                         <RPC_CLIENTID>908eafd4-9aec-4288-96f1-e8011d181561</RPC_CLIENTID>

                         <RPC_CALLID>0</RPC_CALLID>

                  </DATA>

           </RECORD>

           <RECORD>

                  <OPCODE>OP_ALLOCATE_BLOCK_ID</OPCODE>

                  <DATA>

                         <TXID>131</TXID>

                         <BLOCK_ID>1073741839</BLOCK_ID>

                  </DATA>

           </RECORD>

           <RECORD>

                  <OPCODE>OP_SET_GENSTAMP_V2</OPCODE>

                  <DATA>

                         <TXID>132</TXID>

                         <GENSTAMPV2>1016</GENSTAMPV2>

                  </DATA>

           </RECORD>

           <RECORD>

                  <OPCODE>OP_ADD_BLOCK</OPCODE>

                  <DATA>

                         <TXID>133</TXID>

                         <PATH>/hello7.txt</PATH>

                         <BLOCK>

                                <BLOCK_ID>1073741839</BLOCK_ID>

                                <NUM_BYTES>0</NUM_BYTES>

                                <GENSTAMP>1016</GENSTAMP>

                         </BLOCK>

                         <RPC_CLIENTID></RPC_CLIENTID>

                         <RPC_CALLID>-2</RPC_CALLID>

                  </DATA>

           </RECORD>

           <RECORD>

                  <OPCODE>OP_CLOSE</OPCODE>

                  <DATA>

                         <TXID>134</TXID>

                         <LENGTH>0</LENGTH>

                         <INODEID>0</INODEID>

                         <PATH>/hello7.txt</PATH>

                         <REPLICATION>2</REPLICATION>

                         <MTIME>1512943608761</MTIME>

                         <ATIME>1512943607866</ATIME>

                         <BLOCKSIZE>134217728</BLOCKSIZE>

                         <CLIENT_NAME></CLIENT_NAME>

                         <CLIENT_MACHINE></CLIENT_MACHINE>

                         <OVERWRITE>false</OVERWRITE>

                         <BLOCK>

                                <BLOCK_ID>1073741839</BLOCK_ID>

                                <NUM_BYTES>25</NUM_BYTES>

                                <GENSTAMP>1016</GENSTAMP>

                         </BLOCK>

                         <PERMISSION_STATUS>

                                <USERNAME>faded</USERNAME>

                                <GROUPNAME>supergroup</GROUPNAME>

                                <MODE>420</MODE>

                         </PERMISSION_STATUS>

                  </DATA>

           </RECORD>

    </EDITS>

     

    3 滚动编辑日志

    正常情况HDFS文件系统有更新操作时,就会滚动编辑日志。也可以用命令强制滚动编辑日志。

    1)滚动编辑日志(前提必须启动集群)

    [faded@hadoop102 current]$ hdfs dfsadmin -rollEdits

    2)镜像文件什么时候产生

    Namenode启动时加载镜像文件和编辑日志

    4 Namenode版本号

    1)查看namenode版本号

    在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current这个目录下查看VERSION

    namespaceID=1933630176

    clusterID=CID-1f2bf8d1-5ad2-4202-af1c-6713ab381175

    cTime=0

    storageType=NAME_NODE

    blockpoolID=BP-97847618-192.168.10.102-1493726072779

    layoutVersion=-63

    2)namenode版本号具体解释

    (1) namespaceIDHDFS上,会有多个Namenode,所以不同NamenodenamespaceID是不同的,分别管理一组blockpoolID

    (2)clusterID集群id,全局唯一

    (3)cTime属性标记了namenode存储系统的创建时间,对于刚刚格式化的存储系统,这个属性为0;但是在文件系统升级之后,该值会更新到新的时间戳。

    (4)storageType属性说明该存储目录包含的是namenode的数据结构。

    5blockpoolID:一个block pool id标识一个block pool,并且是跨集群的全局唯一。当一个新的Namespace被创建的时候(format过程的一部分)会创建并持久化一个唯一ID。在创建过程构建全局唯一的BlockPoolID比人为的配置更可靠一些。NNBlockPoolID持久化到磁盘中,在后续的启动过程中,会再次load并使用。

    6layoutVersion是一个负整数。通常只有HDFS增加新特性时才会更新这个版本号。

     

    5 web端访问SecondaryNameNode端口号

           (1)启动集群。

           (2)浏览器中输入:http://hadoop104:50090/status.html

           (3)查看SecondaryNameNode信息。

     

    6 chkpoint检查时间参数设置

    (1)通常情况下,SecondaryNameNode每隔一小时执行一次。

           [hdfs-default.xml]

    <property>

      <name>dfs.namenode.checkpoint.period</name>

      <value>3600</value>

    </property>

    (2)一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次。

    <property>

      <name>dfs.namenode.checkpoint.txns</name>

      <value>1000000</value>

    <description>操作动作次数</description>

    </property>

     

    <property>

      <name>dfs.namenode.checkpoint.check.period</name>

      <value>60</value>

    <description> 1分钟检查一次操作次数</description>

    </property>

     

    7 SecondaryNameNode目录结构

    Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

    在/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/current这个目录中查看SecondaryNameNode目录结构。

    edits_0000000000000000001-0000000000000000002

    fsimage_0000000000000000002

    fsimage_0000000000000000002.md5

    VERSION

    SecondaryNameNode的namesecondary/current目录和主namenode的current目录的布局相同。

    好处:在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复数据。

     

    8 Namenode故障处理方法

    Namenode故障后,可以采用如下两种方法恢复数据。

    方法一:将SecondaryNameNode中数据拷贝到namenode存储数据的目录;

    方法二:使用-importCheckpoint选项启动namenode守护进程,从而将SecondaryNameNode中数据拷贝到namenode目录中。

    8.1 手动拷贝SecondaryNameNode数据:

    模拟namenode故障,并采用方法一,恢复namenode数据

    1kill -9 namenode进程

    2)删除namenode存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name

    [faded@hadoop102 hadoop-2.7.2]$ rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*

    3)拷贝SecondaryNameNode中数据到原namenode存储数据目录

    [faded@hadoop102 dfs]$ scp -r faded@hadoop104:/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/* ./name/

    4)重新启动namenode

    [faded@hadoop102 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode

     

    8.2 采用importCheckpoint命令拷贝SecondaryNameNode数据

    模拟namenode故障,并采用方法二,恢复namenode数据

    0)修改hdfs-site.xml中的

    <property>

      <name>dfs.namenode.checkpoint.period</name>

      <value>120</value>

    </property>

     

    <property>

      <name>dfs.namenode.name.dir</name>

      <value>/opt/module/hadoop-2.7.2/data/tmp/dfs/name</value>

    </property>

    1kill -9 namenode进程

    2)删除namenode存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name

    [faded@hadoop102 hadoop-2.7.2]$ rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*

    3)如果SecondaryNameNode不和Namenode在一个主机节点上,需要将SecondaryNameNode存储数据的目录拷贝到Namenode存储数据的平级目录,并删除in_use.lock文件。

    [faded@hadoop102 dfs]$ scp -r faded@hadoop104:/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary ./

     

    [faded@hadoop102 namesecondary]$ rm -rf in_use.lock

     

    [faded@hadoop102 dfs]$ pwd

    /opt/module/hadoop-2.7.2/data/tmp/dfs

     

    [faded@hadoop102 dfs]$ ls

    data  name  namesecondary

    4)导入检查点数据(等待一会ctrl+c结束掉)

    [faded@hadoop102 hadoop-2.7.2]$ bin/hdfs namenode -importCheckpoint

    5)启动namenode

    [faded@hadoop102 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode

     

    9 集群安全模式操作

    1)概述

    Namenode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。一旦在内存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件和一个空的编辑日志。此时,namenode开始监听datanode请求。但是此刻,namenode运行在安全模式,即namenode的文件系统对于客户端来说是只读的。

    系统中的数据块的位置并不是由namenode维护的,而是以块列表的形式存储在datanode中。在系统的正常操作期间,namenode会在内存中保留所有块位置的映射信息。在安全模式下,各个datanode会向namenode发送最新的块列表信息,namenode了解到足够多的块位置信息之后,即可高效运行文件系统。

    如果满足“最小副本条件”,namenode会在30秒钟之后就退出安全模式。所谓的最小副本条件指的是在整个文件系统中99.9%的块满足最小副本级别(默认值:dfs.replication.min=1)。在启动一个刚刚格式化的HDFS集群时,因为系统中还没有任何块,所以namenode不会进入安全模式。

    2)基本语法

    集群处于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。

    (1)bin/hdfs dfsadmin -safemode get        (功能描述:查看安全模式状态

    (2)bin/hdfs dfsadmin -safemode enter    (功能描述:进入安全模式状态

    (3)bin/hdfs dfsadmin -safemode leave     (功能描述:离开安全模式状态

    (4)bin/hdfs dfsadmin -safemode wait      (功能描述:等待安全模式状态

    3)案例

           模拟等待安全模式

           1)先进入安全模式

    [faded@hadoop102 hadoop-2.7.2]$ bin/hdfs dfsadmin -safemode enter

           2)执行下面的脚本

    编辑一个脚本

    #!/bin/bash

    bin/hdfs dfsadmin -safemode wait

    bin/hdfs dfs -put ~/hello.txt /root/hello.txt

           3)再打开一个窗口,执行

    [faded@hadoop102 hadoop-2.7.2]$ bin/hdfs dfsadmin -safemode leave

     

    10 Namenode多目录配置

    1)namenode的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性。

    2)具体配置如下:

           (1)在hdfs-site.xml文件中增加如下内容

    <property>

        <name>dfs.namenode.name.dir</name>

    <value>file:///${hadoop.tmp.dir}/dfs/name1,file:///${hadoop.tmp.dir}/dfs/name2</value>

    </property>

           (2)停止集群,删除data和logs中所有数据。

    [faded@hadoop102 hadoop-2.7.2]$ rm -rf data/ logs/

    [faded@hadoop103 hadoop-2.7.2]$ rm -rf data/ logs/

    [faded@hadoop104 hadoop-2.7.2]$ rm -rf data/ logs/

    (3)格式化集群并启动。

    [faded@hadoop102 hadoop-2.7.2]$ bin/hdfs namenode –format

    [faded@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh

    (4)查看结果

    [faded@hadoop102 dfs]$ ll

    总用量 12

    drwx------. 3 faded faded 4096 12月 11 08:03 data

    drwxrwxr-x. 3 faded faded 4096 12月 11 08:03 name1

    drwxrwxr-x. 3 faded faded 4096 12月 11 08:03 name2

    展开全文
  • HDFS中namenode故障处理

    千次阅读 2020-02-03 19:42:20
    NameNode故障后,可以采用如下两种方法恢复数据: 1、将SecondaryNameNode中数据拷贝到NameNode存储数据的目录 (1) kill -9 NameNode进程 [test@hadoop151 ~]$ jps 3764 DataNode 4069 NodeManager 3654 NameNode ...

    NameNode故障后,可以采用如下两种方法恢复数据:

    1、将SecondaryNameNode中数据拷贝到NameNode存储数据的目录

    (1) kill -9 NameNode进程

    [test@hadoop151 ~]$ jps
    3764 DataNode
    4069 NodeManager
    3654 NameNode
    7738 Jps
    [test@hadoop151 ~]$ kill -9 3654
    [test@hadoop151 ~]$ jps
    3764 DataNode
    4069 NodeManager
    7770 Jps
    

    (2) 删除 NameNode 存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name)

    [test@hadoop151 ~]$ rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*
    

    (3) 拷贝 SecondaryNameNode 中数据到原 NameNode 存储数据目录

    [test@hadoop151 ~]$ scp -r test@hadoop153:/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/* /opt/module/hadoop-2.7.2/data/tmp/dfs/name/
    edits_0000000000000000135-0000000000000000136                                                                                                                                  100%   42     0.0KB/s   00:00    
    fsimage_0000000000000000288.md5                                                                                                                                                100%   62     0.1KB/s   00:00    
    edits_0000000000000000285-0000000000000000286                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000155-0000000000000000225                                                                                                                                  100% 5459     5.3KB/s   00:00    
    edits_0000000000000000277-0000000000000000278                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000137-0000000000000000138                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000283-0000000000000000284                                                                                                                                  100%   42     0.0KB/s   00:00    
    fsimage_0000000000000000290.md5                                                                                                                                                100%   62     0.1KB/s   00:00    
    edits_0000000000000000287-0000000000000000288                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000003-0000000000000000010                                                                                                                                  100% 1024KB   1.0MB/s   00:00    
    edits_0000000000000000266-0000000000000000268                                                                                                                                  100%   97     0.1KB/s   00:00    
    edits_0000000000000000273-0000000000000000274                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000281-0000000000000000282                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000227-0000000000000000228                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000279-0000000000000000280                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000269-0000000000000000270                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000271-0000000000000000272                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000289-0000000000000000290                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000001-0000000000000000002                                                                                                                                  100%   42     0.0KB/s   00:00    
    fsimage_0000000000000000288                                                                                                                                                    100% 2327     2.3KB/s   00:00    
    edits_0000000000000000120-0000000000000000120                                                                                                                                  100% 1024KB   1.0MB/s   00:00    
    VERSION                                                                                                                                                                        100%  204     0.2KB/s   00:00    
    fsimage_0000000000000000290                                                                                                                                                    100% 2327     2.3KB/s   00:00    
    edits_0000000000000000011-0000000000000000118                                                                                                                                  100%   12KB  12.3KB/s   00:00    
    edits_0000000000000000275-0000000000000000276                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000229-0000000000000000249                                                                                                                                  100% 1449     1.4KB/s   00:00    
    edits_0000000000000000139-0000000000000000154                                                                                                                                  100% 1005     1.0KB/s   00:00    
    edits_0000000000000000121-0000000000000000134       
    

    (4) 重新启动 NameNode

    [test@hadoop151 ~]$ hadoop-daemon.sh start namenode
    starting namenode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-test-namenode-hadoop151.out
    [test@hadoop151 ~]$ jps
    7844 NameNode
    3764 DataNode
    4069 NodeManager
    7884 Jps
    
    2、使用-importCheckpoint选项启动NameNode守护进程,从而将SecondaryNameNode中数据拷贝到NameNode目录中

    (1) 修改hdfs-site.xml配置文件,在文件中增加如下配置

    <property>
      <name>dfs.namenode.checkpoint.period</name>
      <value>120</value>
    </property>
    
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>/opt/module/hadoop-2.7.2/data/tmp/dfs/name</value>
    </property>
    

    更改完一台机器上的配置后,分发脚本:

    [test@hadoop151 hadoop]$ xsync hdfs-site.xml 
    fname=hdfs-site.xml
    pdir=/opt/module/hadoop-2.7.2/etc/hadoop
    ------------------- hadoop151 --------------
    sending incremental file list
    
    sent 36 bytes  received 12 bytes  96.00 bytes/sec
    total size is 1333  speedup is 27.77
    ------------------- hadoop152 --------------
    sending incremental file list
    hdfs-site.xml
    
    sent 716 bytes  received 43 bytes  1518.00 bytes/sec
    total size is 1333  speedup is 1.76
    ------------------- hadoop153 --------------
    sending incremental file list
    hdfs-site.xml
    
    sent 716 bytes  received 43 bytes  1518.00 bytes/sec
    total size is 1333  speedup is 1.76
    

    (2) kill -9 NameNode进程

    [test@hadoop151 ~]$ jps
    7844 NameNode
    3764 DataNode
    7973 Jps
    4069 NodeManager
    [test@hadoop151 ~]$ kill -9 7844
    [test@hadoop151 ~]$ jps
    7988 Jps
    3764 DataNode
    4069 NodeManager
    

    (3) 删除 NameNode 存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name)

    [test@hadoop151 ~]$ rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*
    

    (4) 如果 SecondaryNameNode 不和 NameNode 在一个主机节点上,需要将SecondaryNameNode 存储数据的目录拷贝到 NameNode 存储数据的平级目录,并删除 in_use.lock 文件

    [test@hadoop151 dfs]$ scp -r test@hadoop153:/opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary ./
    in_use.lock                                                                                                                                                                    100%   14     0.0KB/s   00:00    
    edits_0000000000000000135-0000000000000000136                                                                                                                                  100%   42     0.0KB/s   00:00    
    fsimage_0000000000000000293.md5                                                                                                                                                100%   62     0.1KB/s   00:00    
    edits_0000000000000000285-0000000000000000286                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000155-0000000000000000225                                                                                                                                  100% 5459     5.3KB/s   00:00    
    edits_0000000000000000277-0000000000000000278                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000137-0000000000000000138                                                                                                                                  100%   42     0.0KB/s   00:00    
    fsimage_0000000000000000295.md5                                                                                                                                                100%   62     0.1KB/s   00:00    
    edits_0000000000000000283-0000000000000000284                                                                                                                                  100%   42     0.0KB/s   00:00    
    fsimage_0000000000000000295                                                                                                                                                    100% 2327     2.3KB/s   00:00    
    edits_0000000000000000287-0000000000000000288                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000003-0000000000000000010                                                                                                                                  100% 1024KB   1.0MB/s   00:00    
    edits_0000000000000000266-0000000000000000268                                                                                                                                  100%   97     0.1KB/s   00:00    
    edits_0000000000000000273-0000000000000000274                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000281-0000000000000000282                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000294-0000000000000000295                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000227-0000000000000000228                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000279-0000000000000000280                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000269-0000000000000000270                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000271-0000000000000000272                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000289-0000000000000000290                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000001-0000000000000000002                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000120-0000000000000000120                                                                                                                                  100% 1024KB   1.0MB/s   00:00    
    edits_0000000000000000291-0000000000000000292                                                                                                                                  100%   42     0.0KB/s   00:00    
    VERSION                                                                                                                                                                        100%  204     0.2KB/s   00:00    
    edits_0000000000000000011-0000000000000000118                                                                                                                                  100%   12KB  12.3KB/s   00:00    
    edits_0000000000000000275-0000000000000000276                                                                                                                                  100%   42     0.0KB/s   00:00    
    edits_0000000000000000229-0000000000000000249                                                                                                                                  100% 1449     1.4KB/s   00:00    
    edits_0000000000000000139-0000000000000000154                                                                                                                                  100% 1005     1.0KB/s   00:00    
    fsimage_0000000000000000293                                                                                                                                                    100% 2327     2.3KB/s   00:00    
    edits_0000000000000000121-0000000000000000134                                                                                                                                  100% 1177     1.2KB/s   00:00    
    edits_0000000000000000250-0000000000000000265                                                                                                                                  100% 1021     1.0KB/s   00:00  
    [test@hadoop151 dfs]$ ll
    总用量 12
    drwx------ 3 test test 4096 2月   3 19:08 data
    drwxrwxr-x 2 test test 4096 2月   3 19:29 name
    drwxrwxr-x 3 test test 4096 2月   3 19:29 namesecondary
    [test@hadoop151 dfs]$ cd namesecondary/
    [test@hadoop151 namesecondary]$ ll
    总用量 8
    drwxrwxr-x 2 test test 4096 2月   3 19:29 current
    -rw-rw-r-- 1 test test   14 2月   3 19:29 in_use.lock
    [test@hadoop151 namesecondary]$ rm -rf in_use.lock 
    [test@hadoop151 namesecondary]$ ll
    总用量 4
    drwxrwxr-x 2 test test 4096 2月   3 19:29 current
    

    (5) 导入检查点数据(等待一会ctrl+c结束掉)

    [test@hadoop151 hadoop]$ hdfs namenode -importCheckpoint
    

    (6) 启动 NameNode

    [test@hadoop151 hadoop]$ hadoop-daemon.sh start namenode
    starting namenode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-test-namenode-hadoop151.out
    
    展开全文
  • NameNode及SecondaryNameNode分析
  • HDFS集群包括,NameNode和DataNode以及Secondary NamenodeNameNode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息;DataNode 负责管理用户的文件数据块,每一个数据块都可以在多个...

    HDFS集群包括,NameNode和DataNode以及Secondary Namenode。NameNode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息;DataNode 负责管理用户的文件数据块,每一个数据块都可以在多个datanode上存储多个副本,Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

    一、NameNode和Secondary Namenode工作机制图

    NameNode&Secondary NameNode工作机制
    下面,针对机制图进行详解。

    第一阶段:namenode启动

    1、第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存;
    2、客户端对元数据进行增删改的请求;
    3、namenode记录操作日志,更新滚动日志;
    4、namenode在内存中对数据进行增删改查(注意:查是不记录到edits中的)。

    第二阶段:Secondary NameNode工作

    1、Secondary NameNode询问namenode是否需要checkpoint,直接带回namenode是否检查结果;
    ★ checkpoint的意思是检查点,即向NameNode请求是否需要将edits和fsimage合并;
    备注:checkpoint触发的条件:
    a、定时时间到(系统默认为1小时)
    b、edits中的数据满了(默认为100万的操作次数)

    2、Secondary NameNode请求执行checkpoint;
    3、namenode滚动正在写的edits日志,即将edits锁定,为了拷贝到Secondary NameNode进行后期的合并;
    4、将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode;
    5、Secondary NameNode加载编辑日志和镜像文件到内存,并合并;
    6、生成新的镜像文件fsimage.chkpoint;
    7、拷贝fsimage.chkpoint到namenode;
    8、namenode将fsimage.chkpoint重新命名成fsimage。

    web端访问SecondaryNameNode

    1、启动集群,可以参考 搭建hadoop集群的详细教程
    2、浏览器中输入:http://hadoop102:50070/status.html,这里需要注意,需前置在windows中维护好主机名,进而才能通过主机名访问,windows配置见windows设置通过主机名访问网站
    3、查看SecondaryNameNode信息。

    chkpoint检查时间参数设置

    1、通常情况下,SecondaryNameNode每隔一小时执行一次。
    [hdfs-default.xml]

    <property>
      <name>dfs.namenode.checkpoint.period</name>
      <value>3600</value>
    </property>
    

    2、一分钟检查一次操作次数,当操作次数达到1百万,SecondaryNameNode执行一次。

    <property>
      <name>dfs.namenode.checkpoint.txns</name>
      <value>1000000</value>
    <description>操作动作次数</description>
    </property>
    
    <property>
      <name>dfs.namenode.checkpoint.check.period</name>
      <value>60</value>
    <description> 1分钟检查一次操作次数</description>
    </property>
    

    二、镜像文件和编辑日志文件

    1、概念
    namenode被格式化之后,将在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current目录中产生如下文件

    edits_0000000000000000000
    fsimage_0000000000000000000.md5
    seen_txid
    VERSION
    

    (1)Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件idnode的序列化信息。
    (2)Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。
    (3)seen_txid文件保存的是一个数字,就是最后一个edits_的数字
    (4)每次Namenode启动的时候都会将fsimage文件读入内存,并从00001开始到seen_txid中记录的数字依次执行每个edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成Namenode启动的时候就将fsimage和edits文件进行了合并。

    2、oiv查看fsimage文件
    (1)查看oiv和oev命令

    [root@hadoop102 current]$ hdfs
    

    oiv:apply the offline fsimage viewer to an fsimage
    oev:apply the offline edits viewer to an edits file
    (2)基本语法
    hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径
    (3)案例实操

    [root@hadoop102 current]$ pwd
    /opt/module/hadoop-2.7.2/data/tmp/dfs/name/current
    
    [root@hadoop102 current]$ hdfs oiv -p XML -i fsimage_0000000000000000025 -o /opt/module/hadoop-2.7.2/fsimage.xml
    
    [root@hadoop102 current]$ cat /opt/module/hadoop-2.7.2/fsimage.xml
    

    3、oev查看edits文件
    (1)基本语法
    hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径
    (2)案例实操

    [root@hadoop102 current]$ hdfs oev -p XML -i edits_0000000000000000012-0000000000000000013 -o /opt/module/hadoop-2.7.2/edits.xml
    [root@hadoop102 current]$ cat /opt/module/hadoop-2.7.2/edits.xml
    

    三、滚动编辑日志

    正常情况HDFS文件系统有更新操作时,就会滚动编辑日志。也可以用命令强制滚动编辑日志。滚动编辑日志(前提必须启动集群)

    [root@hadoop102 current]$ hdfs dfsadmin -rollEdits
    

    查看编辑日志:
    http://hadoop102:50070/dfshealth.html#tab-startup-progress

    四、SecondaryNameNode目录结构及好处

    1、目录结构路径

    [root@hadoop102 /]# /opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/current
    

    SecondaryNameNode的namesecondary/current目录和主namenode的current目录的布局相同。
    2、好处
    在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复数据。
    方法一
    将SecondaryNameNode中数据拷贝到namenode存储数据的目录,案例(模拟namenode故障,恢复namenode数据)如下:

    (1)杀进程

    [root@hadoop102 /]# kill -9 namenode进程
    

    (2)删除namenode存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name)

    [root@hadoop102 /]# rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*
    

    (3)拷贝SecondaryNameNode中数据到原namenode存储数据目录

    [root@hadoop102 /]# cp -R /opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/* /opt/module/hadoop-2.7.2/data/tmp/dfs/name/
    

    (4)重新启动namenode

    [root@hadoop102 /]# sbin/hadoop-daemon.sh start namenode
    

    方法二
    使用-importCheckpoint选项启动namenode守护进程,从而将SecondaryNameNode用作新的主namenode,案例如下:
    (1)修改hdfs-site.xml中的

    <property>
      <name>dfs.namenode.checkpoint.period</name>
      <value>120</value>
    </property>
    
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>/opt/module/hadoop-2.7.2/data/tmp/dfs/name</value>
    </property>
    

    (1)kill -9 namenode进程

    [root@hadoop102 /]# kill -9 namenode进程
    

    (2)删除namenode存储的数据(/opt/module/hadoop-2.7.2/data/tmp/dfs/name)

    [root@hadoop102 /]# rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/name/*
    

    (3)如果SecondaryNameNode不和Namenode在一个主机节点上,需要将SecondaryNameNode存储数据的目录拷贝到Namenode存储数据的平级目录。
    ★ 需要注意,SecondaryNameNode默认装在哪台主机是在hdfs-site.xml中配置的,如下:

    <configuration>
    	<property>
    		<name>dfs.replication</name>
    		<value>3</value>
    	</property>
    
    	<property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>hadoop104:50090</value>
        </property>
    </configuration>
    

    如上的配置,SecondaryNameNode就装在了hadoop104这台机器,所以需要从hadoop104这台机器将SecondaryNameNode存储数据的目录拷贝到hadoop102这台机器的Namenode存储数据的平级目录。
    (4)导入检查点数据

    [root@hadoop102 dfs]# bin/hdfs namenode -importCheckpoint
    

    (5)启动namenode

    [root@hadoop102 hadoop-2.7.2]# sbin/hadoop-daemon.sh start namenode
    

    如果提示文件锁了,可以删除in_use.lock

    [root@hadoop102 /]# rm -rf /opt/module/hadoop-2.7.2/data/tmp/dfs/namesecondary/in_use.lock
    

    五、安全模式

    1、概述
    Namenode启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。一旦在内存中成功建立文件系统元数据的映像,则创建一个新的fsimage文件和一个空的编辑日志。此时,namenode开始监听datanode请求。但是此刻,namenode运行在安全模式,即namenode的文件系统对于客户端来说是只读的。
    系统中的数据块的位置并不是由namenode维护的,而是以块列表的形式存储在datanode中。在系统的正常操作期间,namenode会在内存中保留所有块位置的映射信息。在安全模式下,各个datanode会向namenode发送最新的块列表信息,namenode了解到足够多的块位置信息之后,即可高效运行文件系统。
    如果满足“最小副本条件”,namenode会在30秒钟之后就退出安全模式。所谓的最小副本条件指的是在整个文件系统中99.9%的块满足最小副本级别(默认值:dfs.replication.min=1)。在启动一个刚刚格式化的HDFS集群时,因为系统中还没有任何块,所以namenode不会进入安全模式。
    2、基本语法
    集群处于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。
    (1)bin/hdfs dfsadmin -safemode get (功能描述:查看安全模式状态)
    (2)bin/hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
    (3)bin/hdfs dfsadmin -safemode leave (功能描述:离开安全模式状态)
    (4)bin/hdfs dfsadmin -safemode wait (功能描述:等待安全模式状态)
    3、案例:模拟等待安全模式
    (1)先进入安全模式

    [root@hadoop102 hadoop-2.7.2]# bin/hdfs dfsadmin -safemode enter
    

    (2)执行下面的脚本
    编辑一个脚本

    #!/bin/bash
    bin/hdfs dfsadmin -safemode wait
    bin/hdfs dfs -put ~/hello.txt /root/hello.txt
    

    (3)再打开一个窗口,执行

    [root@hadoop102 hadoop-2.7.2]# bin/hdfs dfsadmin -safemode leave
    
    展开全文
  • Namenode

    2017-07-13 17:00:35
    Namenode管理着文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。Namenode记录着每个文件中各个块所在的数据节点的位置信息,这些信息会在系统...

           Namenode管理着文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。Namenode记录着每个文件中各个块所在的数据节点的位置信息,这些信息会在系统启动时从数据节点重建。


    Namenode 结构图:

       

        客户端代表用户与namenodedatanode交互访问整个文件系统。

        Datanode是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表。


    Namenode容错机制

    没有NamenodeHDFS就不能工作。事实上,如果运行namenode的机器坏掉的话,系统中的文件将会完全丢失,因为没有其他方法能够将位于不同datanode上的文件块(blocks)重建文件。因此,namenode的容错机制非常重要,Hadoop提供了两种机制。

    第一种方式是将持久化存储在本地硬盘的文件系统元数据备份。Hadoop可以通过配置来让Namenode将他的持久化状态文件写到不同的文件系统中。这种写操作是同步并且是原子化的。比较常见的配置是在将持久化状态写到本地硬盘的同时,也写入到一个远程挂载的网络文件系统。

    第二种方式是运行一个辅助的Namenode(Secondary Namenode) 事实上Secondary Namenode并不能被用作Namenode它的主要作用是定期的将Namespace镜像与操作日志文件(edit log)合并,以防止操作日志文件(edit log)变得过大。通常,Secondary Namenode 运行在一个单独的物理机上,因为合并操作需要占用大量的CPU时间以及和Namenode相当的内存。辅助Namenode保存着合并后的Namespace镜像的一个备份,万一哪天Namenode宕机了,这个备份就可以用上了。

    但是辅助Namenode总是落后于主Namenode,所以在Namenode宕机时,数据丢失是不可避免的。在这种情况下,一般的,要结合第一种方式中提到的远程挂载的网络文件系统(NFS)中的Namenode的元数据文件来使用,把NFS中的Namenode元数据文件,拷贝到辅助Namenode,并把辅助Namenode作为主Namenode来运行。

    SecondNamenode是对主Namenode的一个补充,它会周期的执行对HDFS元数据的检查点。 当前的设计仅仅允许每个HDFS只有单个SecondNamenode结点。

    SecondNamenode是有一个后台的进程,会定期的被唤醒(唤醒的周期依赖相关配置)执行检查点任务,然后继续休眠。 它使用ClientProtocol协议与主Namenode通信。

    SecondNamenode最好与Namenode部署到不同的服务器( 应该在merge的过程中,SecondNamenode对内存的需求与Namenode是相同的,所以对于那些 大型的生产系统中,如果将两者部署 到同台服务器 上,在 内存上会出现 瓶颈。) SecondaryNameNodeNameNode的冷备份 ,如果NameNode意外终止,需要人工切换。

    展开全文
  • NameNode优化归纳【RPC&FBR&监控】

    千次阅读 多人点赞 2021-01-21 11:15:52
    We have seen many incidents of overloaded HDFS namenode due to 1) misconfigurations or 2) “bad” MR jobs or Hive queries that create large amount of RPC requests in a short period of time. There are ...
  • [houzhizhen@localhost hadoop]$ hadoop jar share/hadoop/hdfs/hadoop-hdfs-2.8.2-tests.jar org.apache.hadoop.hdfs.server.namenode.NNThroughputBenchmark -op mkdirs -threads 2 -dirs 10000 -dirsPerDir 128 ...
  • 686) at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:586) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:646) at org.apache.hadoop.hdfs....
  • NameNode和SecondaryNameNode详解

    万次阅读 2018-08-14 21:19:00
    (1)第一次启动NameNode格式化后,创建fsimage和edits文件。 如果不是第一次启动,直接加载编辑日志和镜像文件到内存。 (2)客户端对元数据进行增删改的请求。 (3)NameNode记录操作日志,更新滚动日志。 (4)...
  • Hadoop HA HDFS启动 NameNode启动失败解析

    千次阅读 2019-07-19 15:37:35
    今天也要努力学习 作者大哥:me2xp ... 看日志真的很重要!!!!!!...HA按照规划配置好,启动后,NameNode不能正常启动。刚启动的时候 jps 看到了NameNode,但是隔了...
  • HDFS之namenode与datanode理解

    万次阅读 多人点赞 2018-08-16 10:05:53
      HDFS集群有两类节点以管理节点-工作节点模式运行,即一个namenode(管理节点)和多个datanode(工作节点)。namenode管理文件系统的命名空间。它维护着文件系统树及整棵树内的所有文件和目录。这些信息以两个文件...
  • Hadoop Namenode性能诊断及优化
  • Hadoop:NameNode和SecondaryNameNode

    万次阅读 2020-05-26 08:44:16
    NameNode和SecondaryNameNode工作机制详解
  • Hadoop NameNode详解

    2019-01-30 13:50:56
    NameNode在内存中保存着整个文件系统的名字空间和文件数据块的地址映射(Blockmap)。如果NameNode宕机,那么整个集群就瘫痪了  整个HDFS可存储的文件数受限于NameNode的内存大小  这个关键的元数据结构设计得很紧凑...
  • 另一个为Standby Namenode, StandbyNamenode的命名空间与ActiveNamenode是完全保持一致的。 所以当ActiveNamenode出现故障时, Standby Namenode可以立即切换成Active状态。 二.checkpoint操作 为了让Standby ...
  • 思考:NameNode中的元数据是储存在哪里的?        首先,我们做个假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此...
  • HDFS的性能效率主要由其内部的核心服务NameNode所决定。此次eBay Hadoop team将分享如何在上百PB数据规模的HDFS集群上,进行HDFS NameNode的性能调优实践。过去一年时间里,他们将NameNode的处理性能提升近70%,从5...
  • Namenode故障恢复

    千次阅读 2019-11-07 08:49:46
    Namenode元数据信息多目录配置 为了保证元数据的安全性,我们一般都是先确定好我们的磁盘挂载目录,将元数据的磁盘做RAID1 Namenode的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性。 具体配置如下...
  • (1)ZKFC的健康检查超时时长设置不合理,导致ZKFC认为NN挂掉(实际上此时的NameNode是正常active的,即“NameNode假死现象”),从而引起自动切换active NN; (2)Zookeeper上的Session Timeout导致zookeeper的...
  • NameNode 工作机制

    千次阅读 2018-05-13 13:49:51
    1 NameNode&amp;amp;amp;amp;Secondary NameNode 工作机制

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 112,046
精华内容 44,818
关键字:

namenode