定制网站开发流程图,为什么自己做的网站别的电脑打不开,广州小程序开发报价,用手机制作app工具目的 本文档可以作为使用Hadoop分布式文件系统用户的起点#xff0c;无论是将HDFS应用在一个Hadoop集群中还是作为一个单独的分布式文件系统使用。HDFS被设计成可以马上在许多环境中工作起来#xff0c;那么一些HDFS的运行知识肯定能大大地帮助你对一个集群做配置改进和诊断。…目的 本文档可以作为使用Hadoop分布式文件系统用户的起点无论是将HDFS应用在一个Hadoop集群中还是作为一个单独的分布式文件系统使用。HDFS被设计成可以马上在许多环境中工作起来那么一些HDFS的运行知识肯定能大大地帮助你对一个集群做配置改进和诊断。 概览 HDFS是Hadoop应用的主要分布式存储。一个HDFS集群由一个管理文件系统元数据的NameNode和存储实际数据的一些Datanode组成。HDFS的架构在这里有详细描述。这个用户指南主要提供给需要跟HDFS集群打交道的用户或者管理员。HDFS架构文章中的图描绘了Namenode、Datanode和客户端们之间的基本交互。本质上客户端与Namenode通讯获取或者修改文件的元数据与 Datanode进行实际的IO操作。 下面的列表应该是大多数用户关心的HDFS突出特点。斜体字的术语将在后面详细描述。 1Hadoop包括HDFS非常适合廉价机器上的分布式存储和分布式处理。它是容错的、可伸缩的并且非常易于扩展。并且以简单性和适用性著称的Map-Reduce是Hadoop不可或缺的组成部分。 2HDFS的默认配置适合于大多数安装的应用。通常情况下只有在一个非常大规模的集群上才需要修改默认配置。 3HDFS是用java编写的支持大多数平台。 4支持shell命令行风格的HDFS目录交互。 5Namenode和Datanode都内建了web服务器可以方便地查看集群的状态 6HDFS经常性地实现新的特性和改进下面是HDFS中的一些有用特性的子集 文件许可和授权 Rack awareness :当调度任务和分配存储的时候将节点的物理位置考虑进去。 Safemode(安全模式 用于维护的一个管理状态 fsck 诊断文件系统的一个工具用来查找丢失的文件或者block Rebalancer :当数据在Datanode间没有均匀分布的时候用于重新平衡集群的工具 升级和回滚 当Hadoop软件升级在升级遇到不可预期的问题的时候可以回滚到HDFS升级前的状态 二级Namenode 帮助Namenode维持包含了HDFS修改的日志的文件edits日志文件,下文谈到大小在限制范围内。 前提条件 下面的文档描述了一个Hadoop集群的安装和设置 Hadoop Quickstart 给初次使用用户Hadoop Cluster Setup 大规模、分布式集群本文档的剩余部分假设你已经搭设并运行了一个至少拥有一个Datanode的HDFS。基于本文档的目的Namenode和Datanode可以运行在同一台机器上。 Web接口 Namenode和Datanode分别跑了一个内置的web服务器来展现集群当前状态的一些基本信息。在默认配置下Namenode的首页地址是http://namenode:50070namenode就是Namenode节点所在机器IP或者名称。这个页面列出了集群中的所有datanode以及集群的基本统计。web接口同样可以用于浏览文件系统点击Namenode首页上的“Browse the file system链接。 Shell命令 Hadoop包括了多种shell风格的命令用于跟HDFS或者Hadoop支持的其他文件系统交互。命令 bin/hadoop fs -help 可以列出Hadoop shell支持的命令。更进一步bin/hadoop fs -help command 可以展现特定命令command的帮助细节。这些命令支持一般文件系统的操作例如拷贝文件、修改文件权限等。同时也支持了部分HDFS特有的命令例如修改文件的replication因子。 DFSAdmin命令 bin/hadoop dfsadmin 命令支持一些HDFS管理功能的操作。bin/hadoop dfsadmin -help可以列出所有当前支持的命令。例如 -report : 报告HDFS的基本统计信息。部分信息同时展现在Namenode的web首页上。-safemode : 尽管通常并不需要管理员还是可以通过手工操作进入或者离开safemode状态-finalizeUpgrade : 移除上一次升级时集群所做的备份。二级Namenode Namenode将对文件系统的修改存储在一个原生文件系统文件中名为edits的文件。当Namenode启动的时候它从映像文件fsimage)读取HDFS的状态然后将edits日志文件中的修改作用在此内存状态上接着将得到的新的HDFS状态写回 fsimage后续的正常操作开始于一个空的edits日志文件。由于Namenode仅仅在启动的时候将fsimage和edits合并因此在一个大的集群上经过一定时间操作后edits文件将会非常大。由此带来的一个副作用就是下次Namenode的重新启动将花费很长时间。二级 Namenode就是为了解决这个问题它会周期性地合并fsimage和edits日志文件并且将edits日志文件的大小保持在限制范围内。通常它会跑在另一个机器上因为它的内存要求跟主namenode一样。二级Namenode可以通过bin/start-dfs.sh启动在conf /masters配置文件里配置的节点上。 Rebalancer HDFS的数据可能不会总是在Datanode之间分布得很一致。一个常见的原因是往现有的集群中加入了新的Datanode。当分配block的时候Namenode依据几个参数来决定哪个datanode来接受这些block。一些需要考虑的因素如下 1一个block的副本存放在正在写该block的节点上 2需要将一个block的副本扩展到其他机架上防止因为整个机架故障导致的数据丢失。 3副本之一通常放在同一个机架的另一个节点上减少跨机架的网络IO 4将HDFS数据均匀一致地分布在集群中的datanode上。 基于这些相互竞争的因素数据可能不会在Datanode之间扩展得一致。HDFS给管理员提供了一个工具用来分析block的分配情况和在datanode之间重新平衡数据。这个功能暂未实现它的描述可以在这个 PDF 文档中看到记录编号HADOOP-1652 . Rack Awareness 典型的大规模Hadoop集群是部署在数个机架上的那么显然同一个机架内的节点间的网络通讯比之不同机架间节点间的网络通讯更可取。另外Namenode会尝试将block的副本分布在数个机架中以提高容错性。Hadoop让集群管理员来决定某个节点从属于哪个机架通过配置变量dfs.network.script来实现。当这个脚本有配置的时候每个节点都运行该脚本来决定它的rackid。默认安装假设所有的节点从属于同一个机架。这个特性和配置进一步的阐述在这个PDF 文档编号为 HADOOP-692 。 Safemod(安全模式 当Namenode启动的时候它从fsimage和edits日志两个文件中加载文件系统的状态。然后等待 datanode报告他们的block信息以便防止Namenode在确认block副本是否足够前过早地开始复制block。这段时间的 Namenode就是处于所谓safemode状态。处于safemode的Namenode也是HDFS集群的只读模型此时不允许任何对文件系统或者 block的修改。正常情况下Namenode会在开始后自动退出safemode。如果有需要HDFS可以通过bin/hadoop dfsadmin -safemode命令显式地进入safemode状态。Namenode的web首页显示当前的safemode是否打开。更详细的描述和配置可以参考setSafeMode() 方法的JavaDoc。 译注详细介绍下safemode的配置参数在safemode状态Namenode会等待所有的datanode报告他们自己的block信息看看所有的block的副本是否达到最低要求的数目这个数目可以通过dfs.replication.min参数配置默认是1,也就是至少要求有一个副本。当报告合格的Datanode的数目达到一定百分比Namenode才会离开safemode状态。这个百分比也是可配置的通过 dfs.safemode.threshold.pct参数默认是0.999f(也就是要求99.9%的Datanode 合格。Namenode在合格的datanode数目达到要求的时候并不是马上离开safemode状态会有一个扩展时间让剩余的 datanode来报告block信息这个扩展时间默认是30秒可以通过 dfs.safemode.extension参数配置单位是毫秒。 Fsck HDFS提供了fsck命令用来检测各种各样的不一致性。fsck被设计用来报告各种文件的问题例如某个文件丢失的 blockblock的副本数目是否低于设置等。不同于传统的一般原生文件系统的fsck命令hdfs的fsck命令并不修正所检测到的错误。通常情况下Namenode会自动修正大多数可以被修复的错误HDFS的fsck不是Hadoop shel的命令可以通过bin/hadoop fsck执行可以运行在整个文件系统上或者一个文件子集上。 升级和回滚 当升级某个集群的Hadoop的时候正如任何软件的升级一样可能会引入新的bug或者不兼容的修改导致现有的应用出现过去没有发现的问题。在所有重要的HDFS安装应用中是不允许出现因丢失任何数据需要从零开始重启HDFS的情况。HDFS允许管理员恢复到 Hadoop的早期版本并且将集群的状态回滚到升级前。HDFS的升级细节请参考 upgrade wiki 。HDFS在任何时间只能有一个备份因此在升级前管理员需要通过bin/hadoop dfsadmin -finalizeUpgrade命令移除现有的备份。下面简要描述了典型的升级过程 1在升级Hadoop前如果已经存在备份需要先结束finalize)它。可以通过dfsadmin -upgradeProgress status命令查询集群是否需要执行finalize 2)停止集群分发部署新版本的Hadoop 3执行新版本的hadoop通过添加 -upgrade 选项例如/bin/start-dfs.sh -upgrade 4)大多数情况下集群在升级后可以正常运行。一旦新的HDFS在运行若干天的操作后没有出现问题那么就可以结束(finalize)这次升级。请注意在升级前删除的文件并不释放在datanode上的实际磁盘空间,直到集群被结束finalize)升级前。 5如果有需要回到老版本的Hadoop那么可以 a)停止集群分发部署老版本的Hadoop b)通过rollback选项启动集群例如bin/start-dfs.sh -rollback 文件许可和安全 文件许可的设计与其他平台(如linux) 的文件系统类似。在当前实现安全被限制在简单的文件许可上。启动Namenode的用户被作为HDFS的超级用户。HDFS的未来版本将支持网络验证例如Kerberos方案译注MIT开发的一个验证系统的用户验证以及数据传输的加密。更详细的讨论参考Permissions User and Administrator Guide 。 伸缩性 Hadoop正运行在成千上万个节点的集群上。 PoweredBy Hadoop 列出了一些部署Hadoop在大规模集群上的组织和机构。HDFS在每个集群上只有一个Namenode节点Namenode节点上可用内存是当前伸缩性的主要限制。在非常大规模的集群上增加HDFS中存储的文件的平均大小将可以帮助提高集群的大小而不用增加Namenode的内存需求。默认的配置可能不适合非常大规模的集群应用。Hadoop FAQ 页列出了对于大规模Hadoop集群的配置改进建议。 关联文档 本用户指南可作为使用HDFS很好的一个起点在本文档持续改进的同时有一些非常有价值的关于Hadoop和HDFS的文档资料可供参考。下列资料可作为进一步探索的起点 Hadoop Home Page : Hadoop一切的起始页。Hadoop Wiki :由社区维护的wiki文档。FAQ from Hadoop Wiki.Hadoop JavaDoc API .Hadoop User Mailing List : core-user[at]hadoop.apache.org .浏览conf/hadoop-default.xml 文件它包括了当前可用配置变量的概括介绍。转载于:https://www.cnblogs.com/napoleon_liu/archive/2011/09/29/2195155.html