目的

本文档是使用Hadoop分布式文件系统(HDFS)作为Hadoop集群或独立通用分布式文件系统的一部分的用户的起点。虽然HDFS旨在在许多环境中“正常工作”,但HDFS的工作知识有助于在特定集群上进行配置改进和诊断。

概述

HDFS是Hadoop应用程序使用的主要分布式存储。HDFS集群主要由一个NameNode来管理文件系统元数据和存储实际数据的DataNodes。HDFS架构指南详细介绍了HDFS。本用户指南主要处理用户和管理员与HDFS集群的交互。HDFS架构图描述了NameNode,DataNode和客户端之间的基本交互。客户联系NameNode进行文件元数据或文件修改,并直接使用DataNodes执行实际的文件I / O。

以下是许多用户可能感兴趣的一些突出特征:

  Hadoop,包括HDFS,非常适合于使用商品硬件的分布式存储和分布式处理。它是容错的,可扩展的,非常简单的扩展。由于其简明易用且适用于大型分布式应用程序,MapReduce是Hadoop的一个组成部分。

  HDFS是高度可配置的,默认配置非常适合许多安装。大多数情况下,配置需要仅针对非常大的集群进行调整。

  Hadoop是用Java编写的,在所有主要平台上都支持。

  Hadoop支持类shell命令直接与HDFS进行交互。

  NameNode和Datanodes内置了Web服务器,可以方便地检查集群的当前状态。

  在HDFS中经常实施新功能和改进。以下是HDFS中有用功能的一个子集:

      文件权限和身份验证。

        机架感知:在调度任务和分配存储时考虑节点的物理位置。

      Safemode:维护的管理模式。

      fsck:用于诊断文件系统运行状况的实用程序,以查找丢失的文件或块。

      fetchdt:一个用于获取DelegateToken并将其存储在本地系统上的文件中的实用程序。

      平衡器:数据在DataNodes之间不均匀分布时平衡集群的工具。

      升级和回滚:软件升级后,如果出现意外问题,可以在升级之前回滚到HDFS状态。

      Secondary NameNode:执行命名空间的定期检查点,并帮助将包含HDFS修改日志的文件的大小保留在NameNode的某个限制内。

      检查点节点:执行命名空间的定期检查点,并帮助最小化包含HDFS更改的NameNode中存储的日志大小。替换先前由Secondary NameNode填充的角色,尽管尚未使用。NameNode允许多个Checkpoint节点同时进行,只要没有备份节点注册到系统。

      备份节点:Checkpoint节点的扩展。除了检查点之外,它还从NameNode接收编辑流,并维护其自己的命名空间的内存中副本,该副本始终与活动的NameNode命名空间状态同步。只能一个备份节点可以一次注册到NameNode。

准备工作

以下文档介绍如何安装和设置Hadoop集群:

本文档的其余部分假设用户能够使用至少一个DataNode来设置和运行HDFS。为了本文档的目的,NameNode和DataNode都可以在同一物理机上运行。

Web服务

NameNode和DataNode都会运行一个内部Web服务器,以显示有关集群当前状态的基本信息。使用默认配置,NameNode首页位于http://namenode-name:50070/。它列出了集群中的DataNodes和集群的基本统计信息。Web界面也可用于浏览文件系统(使用NameNode首页上的“浏览文件系统”链接)。

Shell命令

Hadoop包括与Hadoop支持的HDFS和其他文件系统直接交互的各种shell命令。命令bin / hdfs dfs -help列出了Hadoop shell支持的命令。此外,命令bin / hdfs dfs -help命令名显示命令的更详细的帮助。这些命令支持大多数正常的文件系统操作,如复制文件,更改文件权限等。它还支持几个HDFS特定操作,如更改文件复制。有关详细信息,请参阅File System Shell Guide.

DFSAdmin Command

bin / hadoop dfsadmin命令支持几个与HDFS管理相关的操作。bin / hadoop dfsadmin -help命令列出了当前支持的所有命令。例如:

-report:报告HDFS的基本统计资料。这些信息中的一些也可以在NameNode首页上找到。

-safemode:虽然通常不需要,管理员可以手动输入或离开Safemode。

-finalizeUpgrade:删除上一次升级过程中创建的群集的先前备份。

-refreshNodes:使用允许连接到namenode的数据库集更新namenode。Namenodes重新读取由dfs.hosts dfs.hosts.exclude定义的文件中的datanode主机名。dfs.hosts中定义的主机是作为集群一部分的数据库。如果dfs.hosts中有条目,则只允许其中的主机向namenode注册。dfs.hosts.exclude中的条目是需要停用的数据。当所有副本从其复制到其他数据库时,Datanodes完全退役。退出的节点不会自动关闭,也不会被选择用于写入新的副本。

-printTopology:打印集群的拓扑。显示由NameNode查看的附加到轨道的机架和数据库的树。

For command usage, see dfsadmin.

Secondary NameNode

NameNode将对文件系统的修改作为附加到本机文件系统文件的日志进行编辑。当NameNode启动时,它从快照文件fsimage中读取HDFS状态,然后应用编辑日志文件中的编辑。然后将新的HDFS状态写入fsimage,并使用空的编辑文件启动正常操作。由于NameNode仅在启动期间合并fsimage和edits文件,编辑日志文件可能会在繁忙的群集中随着时间的推移而变得非常大。较大编辑文件的另一个副作用是下次重新启动NameNode需要更长时间。

辅助NameNode定期合并fsimage和编辑日志文件,并将编辑日志大小保留在限制内。它通常在与主NameNode不同的机器上运行,因为其内存要求与主NameNode的顺序相同。

辅助NameNode上的检查点进程的开始由两个配置参数控制:

    dfs.namenode.checkpoint.period,默认设置为1小时,指定两个连续检查点之间的最大延迟,

    dfs.namenode.checkpoint.txns,默认设置为100万,定义NameNode上的未检查点事务数,这将强制执行紧急检查点,即使尚未达到检查点周期。

辅助NameNode将最新的检查点存储在与主NameNode的目录相同方式构造的目录中。因此,如果必要,检查指向的图像总是准备好被主NameNode读取。

For command usage, see secondarynamenode.

Checkpoint Node

NameNode使用两个文件保留其命名空间:fsimage,它是命名空间的最新检查点;edits,自检查点以来的命名空间更改的日志(日志)。当NameNode启动时,它会合并fsimage和edits journal,以提供文件系统元数据的最新视图。NameNode然后用新的HDFS状态覆盖fsimage并开始一个新的编辑日志。

Checkpoint节点定期创建命名空间的检查点。它从活动的NameNode下载fsimage和编辑,将其本地合并,并将新图像上传回活动的NameNode。Checkpoint节点通常在与NameNode不同的机器上运行,因为它的内存要求与NameNode的顺序相同。Checkpoint节点由配置文件中指定的节点上的bin / hdfs namenode -checkpoint启动。

Checkpoint(或Backup)节点及其附带的Web界面的位置通过dfs.namenode.backup.address和dfs.namenode.backup.http-address配置变量进行配置。

Checkpoint节点上的检查点进程的开始由两个配置参数控制。

    dfs.namenode.checkpoint.period,默认设置为1小时,指定两个连续检查点之间的最大延迟

    dfs.namenode.checkpoint.txns,默认设置为100万,定义NameNode上的未检查点事务数,这将强制执行紧急检查点,即使尚未达到检查点周期。

Checkpoint节点将最新的检查点存储在与NameNode的目录结构相同的目录中。这样,如果需要,这个检查点图像总是可以被NameNode读取。请参阅导入检查点。

可以在集群配置文件中指定多个检查点节点。

For command usage, see namenode.

Backup Node

备份节点提供与检查点节点相同的检查点功能,以及维护始终与活动NameNode状态同步的文件系统命名空间的内存中最新副本。随着从NameNode接受文件系统编辑的日志流并将其持续到磁盘,Backup节点也将这些编辑应用于内存中自己的命名空间副本,从而创建命名空间的备份。

备份节点不需要从活动的NameNode下载fsimage和edits文件,以便创建检查点,如Checkpoint节点或Secondary NameNode所要求的,因为它已经具有命名空间状态的最新状态在记忆中。备份节点检查点进程更有效,因为它只需要将命名空间保存到本地fsimage文件中并重置修改。

由于备份节点在内存中维护命名空间的副本,因此其RAM要求与NameNode相同。NameNode一次支持一个备份节点。如果备份节点正在使用中,则不会注册检查点节点。将来会支持同时使用多个备份节点。备份节点的配置方式与Checkpoint节点相同。它以bin / hdfs namenode -backup开头。

备份(或检查点)节点及其附带的Web界面的位置通过dfs.namenode.backup.address和dfs.namenode.backup.http-address配置变量进行配置。使用备份节点提供运行NameNode的选项,不带持久存储,将所有命名空间的状态委托给Backup节点。为此,请使用-importCheckpoint选项启动NameNode,并且不会为NameNode配置指定类型为dfs.namenode.edits.dir的持久性存储目录。

有关创建Backup节点和Checkpoint节点的动机的完整讨论see HADOOP-4539. For command usage, see namenode.

HDFS概述(6)————用户手册的更多相关文章

  1. HDFS概述

    HDFS概述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HDFS产出背景及定义 1>.HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配 ...

  2. HDFS概述(一)

    HDFS概述(一) 1. HDFS产出的背景及定义 1.1 HDFS产生的背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需 ...

  3. HDFS概述和Shell操作

    大数据技术之Hadoop(HDFS) 第一章 HDFS概述 HDFS组成架构 HDFS文件块大小 第二章 HDFS的Shell操作(开发重点) 1.基本语法 bin/hadoop fs 具体命令    ...

  4. HDFS概述(5)————HDFS HA

    HA With QJM 目标 本指南概述了HDFS高可用性(HA)功能以及如何使用Quorum Journal Manager(QJM)功能配置和管理HA HDFS集群. 本文档假设读者对HDFS集群 ...

  5. HDFS概述(4)————HDFS权限

    概述 Hadoop分布式文件系统(HDFS)的权限模型与POSIX模型的文件和目录权限模型一致.每个文件和目录与所有者和组相关联.该文件或目录将权限划分为所有者的权限,作为该组成员的其他用户的权限.以 ...

  6. HDFS概述(3)————HDFS Federation

    本指南概述了HDFS Federation功能以及如何配置和管理联合集群. 当前HDFS背景 HDFS主要有两层: 1.Namespace (1)包含目录,文件和块. (2)它支持所有命名空间相关的文 ...

  7. HDFS概述(1)————HDFS架构

    概述 Hadoop分布式文件系统(HDFS)是一种分布式文件系统,用于在普通商用硬件上运行.它与现有的分布式文件系统有许多相似之处.然而,与其他分布式文件系统的区别很大.HDFS具有高度的容错能力,旨 ...

  8. HDFS概述(2)————Block块大小设置

    以下内容转自:http://blog.csdn.net/samhacker/article/details/23089157?utm_source=tuicool&utm_medium=ref ...

  9. Hadoop之HDFS概述

    一.HDFS产生背景及定义 1.HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文 ...

随机推荐

  1. C和C++混合编程之 extern “C”的使用

    C和C++混合编程之 extern "C"的使用 首先要明白: C++号称是C语言的超集,也确实,从语言的基本语法上,C++是包含所有C语言的语法的,而且C++为了兼容C,连C语言 ...

  2. 启动tomcat错误:Address already in use: JVM_Bind:8081

    解决方法: 1.打开任务管理器,关闭掉javaw进程. 2.修改tomcat端口:tomcat/conf/server.xml

  3. 对 响应数据写在config文件的再次优化

    之前写过 [基于moco的mock server 简单应用]这篇文章,然后自己这段时间也在做基金的接口测试,逛了一些论坛,然后对 响应数据写在config文件的再次优化,之前是把所有的响应数据都写到c ...

  4. django文件上传

    -------------------上传图片-------------------1.model中定义属性类型为models.ImageField类型 pic=models.ImageField(u ...

  5. 16汇编第十讲完结Call变为函数以及指令的最后讲解

    16汇编完结Call变为函数以及指令的最后讲解 学了10天的16位汇编,这一讲就结束了,这里总结一下昨天的LOOP指令的缺陷,因为lOOP指令的缺陷,所以我们都改为下面的汇编代码使用了,自己去写,其中 ...

  6. springboot 入门二- 读取配置信息一

    在上篇入门中简单介绍下springboot启动使用了大量的默认配置,在实际开发过程中,经常需要启动多个服务,那端口如何手动修改呢? 此篇就是简单介绍相关的配置文件信息. Spring Boot允许外部 ...

  7. MySQL插入10万数据时间(结论:最快14.967s,每秒插入6681条)

    记录我的一次MySQL操作Demo: 存储过程: DROP PROCEDURE IF EXISTS my_insert; CREATE PROCEDURE my_insert() BEGIN ; lo ...

  8. 基础知识(C#语法、数据库SQL Server)回顾与总结

    前言 已经有大概一个多月没有更新博客,可能是开始变得有点懒散了吧,有时候想写,但是又需要额外投入更多的时间去学习,感觉精力完全不够用啊,所以为了弥补这一个多月的潜水,决定写一篇,衔接9月未写博客的空缺 ...

  9. Banner图二三事

      前  言 JRedu 作为一个准前端学员,banner图可是很重要的呢.本人,小白一只,给大家分享几个刚刚学习的基础banner图事件.~~~ 1. 小广告图滚动播放 1.1HTML代码 首先,创 ...

  10. 测试与发布(Alpha版本)

    [Alpha阶段]测试报告 1.测试找出的BUG (1).这种情况刷新就好 (2).文件必须10个才行,多余10个的部分不会进入查重的部分,少于会出错: (3).文件保存在d:\files,由于有些原 ...