Hadoop的状态监视和管理工具(较详细版)

        1.审计日志

        HDFS通过审计日志可以实现记录文件系统所有文件访问请求的功能,其审计日志功能通过log4j实现,但是在默认配置下这个功能是关闭的:log的记录等级在log4j.properties中被设置为WARN。

        log4j.logger.org.apache.hadoop.fs.FSNamesystem.audit=WARN

        在此处将WARN修改为INFO,便可以打开审计日志功能。这样在每个HDFS事件之后,系统都会在NameNode的log文件中写入一行记录。

        2.监控日志

        所有Hadoop守护进程都会产生一个日志文件。

        a.设置日志级别

        当进行故障调试排除时,很有必要临时调整日志的级别,以获得系统不同类型的信息。log4j日志一般包含这样几个级别:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或用户自定义的级别。

        Hadoop守护进程有一个网络页面可以用来调整任何log4j日志的级别,在守护进程的网络UI后附后缀/logLevel即可访问该网络页面。按照规定,日志的名称和它所对应的执行日志记录的类名是一样的,可以通过查找源代码找到日志名称。

        b.获取堆栈信息

        有关系统的堆栈信息,Hadoop守护进程提供了一个网络页面(在网络UI后附后缀/stacks才可以访问),该网络页面可以为管理员提供所有守护进程JVM中运行的线程信息。例如:通过以下链接访问该网络页面:http://localhost:50030/stacks.

        3.Metrics

       HDFS和MapReduce的守护进程会按照一定的规则来收集系统的可度量信息。我们将这种度量规则称为Metrics。例如,DataNode会收集如下度量信息:写入的字节数、被复制的文件块数以及来自客户端的请求数等。

        Metrics属于一个上下文,当前Hadoop拥有dfs、mapred、rpc、jvm等上下文。Hadoop守护进程会收集多个上下文的度量信息。所谓上下文即应用程序进入系统执行时,系统为用户提供的一个完整的运行时环境。进程的运行时环境是由他的程序代码和程序运行所需要的数据结构以及硬件环境组成的。

        4.Java管理扩展

        Java管理扩展(JMX)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活地开发无缝集成的系统、网络和服务管理应用。Hadoop包含多个MBean(Managed Bean,管理服务,它描述一个可管理的资源),它可以将Hadoop的Metrics应用到基于JMX的应用程序中。当前MBeans可以将Metrics展示到dfs和rpc上中文中,但不能在mapred及jvm上下文中实现。

        5.Ganglia

        Ganglia是UC Berkeley发起的一个开源集群监视项目,用于测量数以千计的节点集群。

        6.自身的管理命令

        a.dfsadmin是一个多任务的工具,我们可以使用它来获取HDFS的状态信息,以及在HDFS上执行的管理操作。可以在终端通过Hadoop dfsadmin命令调用它。dfsadmin相关的命令如图所示:


        b.文件系统验证(fsck):Hadoop提供了fsck工具来验证HDFS中的文件是否正常可用,这个工具可以检测文件块是否在DataNode中丢失,是否低于或高于文件副本要求。有个图例:

        fsck会递归遍历文件系统的Namespace,从文件系统的根目录开始检测它所找到的全部文件,并在它验证过的文件上标记一个点。要检查一个文件,fsck首先会检索元数据中文件的块,然后查看是否有问题或是否一致。这里需要注意的是:fsck验证只和NameNode通信而不和DataNode通信。

        c.找到某个文件的所有块

        fsck提供一种简单的方法用于查找属于某个文件的所有块,代码如下:


        从以上输出中可以看到:文件hello.txt由一个块组成,并且命令也返回了它所在的DataNode。fsck的选项如下:

        -files:显示文件的文件名称、大小、块数量及是否可用(是否存在丢失的块);

        -blocks:显示每个块在文件中的信息,一个块用一行显示;

        -racks:展示了每个块所处的机架位置及DataNode的位置

        运行fsck命令,如果不加选项,则执行以上所有的指令。

        d.DataNode块扫描任务

        每个DataNode都会执行一个块扫描任务,它会周期性地验证它所存储的块,这就允许有问题的块能够在客户端读取时被删除或修整。DataBlockScanner可维护一个块列表,它会一个一个地扫描这些块,并进行校验和验证。

        进行块验证的周期可以通过dfs.DataNode.scan.period.hours属性值来设定,默认为504小时,即3周。出现问题的块将会被报告给NameNode进行处理。

        e.均衡器

        balancer程序时Hadoop的守护进程,它会通过将文件块从高负载的DataNode转移到低使用率的DataNode上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值