监控hdfs坏块脚本

最近发生了一次因为hdfs的坏块导致的hive计算问题,因此写了个监控脚本用来监控hdfs的坏块,脚本如下:

#!/usr/bin/python
# -*- coding: utf8 -*-
#edit by ericni
#20140724
#monitor hdfs corrupt
import sys
import property
import sendmail
import re,os
reload(sys)
sys.setdefaultencoding(‘utf-8‘)
if __name__ == "__main__":
        corruptlist = []
        cmd = "hadoop fsck -list-corruptfileblocks"
        re = os.popen(cmd)
        result = re.readlines()
        print result
        for line in result:
                if "blk_" in line and ".Trash" not in line:
                #if "blk_" in line:
                        corruptlist.append(line)
        if len(corruptlist) != 0:
                mailcontent = """
                        <meta http-equiv="Content-Type" content="text/html";charset=utf-8>
                        <title>Hadoop集群坏块监控</title>
                          <style type="text/css">
                           body { font-size: 14px; color: #333;background-color: #fff;}
                           td { border: 1px solid #C1DAD7;padding:"4px 10px"; line-height: 24px;}       
                           table {border-collapse: collapse; width: 96%s;}
                           .divtd {color:#E28E40;}
                           .divcss5{ color:#F00;}
                          </style> """%("%")
                mailcontent += """
        <p style="margin: 0; padding: 5px 0; line-height: 28px; font: bold 18px/1.5;">坏块数量 %s,具体信息如下:</p>
        <div>
                                <table style="border-collapse: collapse; width: 96%s;">
                                        <tbody>
                                                <tr>
                                                        <td><div class="divtd">序号</div></td>
                                                        <td><div class="divtd">块号</div></td>
                                                        <td><div class="divtd">文件信息</div></td>
                       
                                                </tr>
                """%(str(len(corruptlist)),"%")
                id = 1
                for clist in corruptlist:
                        print "blkid is " +  clist.split()[0]  + " file is "  + clist.split()[1]
                        mailcontent += """
                                 <tr>
                        """
                        mailcontent += """<td><div>%s </div></td>""" % id
                        mailcontent += """<td><div>%s </div></td>""" % clist.split()[0]
                        mailcontent += """<td><div>%s </div></td>""" % clist.split()[1]
                        mailcontent += """
                        </tr>
                        """
                        id = id + 1
                mailcontent += "</tbody></table></div>"
                print mailcontent
                mailto = [‘[email protected]‘]
                subject = "Haddop集群坏块监控"
                sendmail.send_mail_withoutSSL(subject,mailcontent.encode(‘utf-8‘),mailto)

监控hdfs坏块脚本,布布扣,bubuko.com

时间: 2024-10-13 12:35:56

监控hdfs坏块脚本的相关文章

Oracle corrupt block(坏块) 详解

转自:http://blog.csdn.net/tianlesoftware/article/details/5024966 一. 坏块说明 1.1 相关链接 在看坏块之前,先看几个相关的链接,在后面的说明中,会用到链接中的一些内容. ORA-600 各个参数含义说明 http://blog.csdn.net/tianlesoftware/article/details/6645809 Oracle 不同故障的恢复方案 http://blog.csdn.net/tianlesoftware/ar

无RMAN备份集情况下的坏块恢复

测试的环境是没有可用的RMAN备份集,但是有数据文件的热备,下面来看测试: --创建测试用户和测试表 [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 16 16:01:02 2014 Copyright (c) 1982, 2005, Oracle.  All rights reserved. Connected to: Oracle Database 10g Ente

对Oracle数据库坏块的理解

1.物理坏块和逻辑坏块 在数据库中有一个概念叫做数据块的一致性,Oracle的数据块的一致性包括了两个层次:物理一致性和逻辑一致性,如果一个数据块在这两个层次上存在不一致性,那就对应到了我们今天要要说的物理坏块和逻辑坏块. 在每一个数据块的头部有一个校验和字段,每当数据块要被写回磁盘前,Oracle都会重新计算 这个数据块的校验和,并记录到这个字段最终写会磁盘.下次数据块被读入内存,Oracle会重新 计算数据块的校验和,并和块头的字段相比较,如果有差异,Oracle就知道这个数据块有错误, 会

【转】基于RMAN实现坏块介质恢复(blockrecover)

本文转自:乐沙弥的世界 对于物理损坏的数据块,我们可以通过RMAN块介质恢复(BLOCK MEDIA RECOVERY)功能来完成受损块的恢复,而不需要恢复整个数据库或所有文件来修复这些少量受损的数据块.恢复整个数据库或数据文件那不是大炮用来打蚊子,有点不值得!但前提条件是你得有一个可用的RMAN备份存在,因此,无论何时备份就是一切.本文演示了产生坏块即使用RMAN实现坏块恢复的全过程. 1.创建演示环境 SQL> select * from v$version where rownum<2;

Linux上检测硬盘上的坏道和坏块

                            Linux上检测硬盘上的坏道和坏块 让我们从坏道和坏块的定义开始说起,它们是一块磁盘或闪存上不再能够被读写的部分,一般是由于磁盘表面特定的物理损坏或闪存晶体管失效导致的. 磁盘坏道分为三种: 0磁道坏道,逻辑坏道,硬盘坏道. 其中逻辑坏道可以使用上面的方法修复,0磁道坏道的修复方法是隔离0磁道,使用fdsk划分区的时候从1磁道开始划分区.如果是硬盘坏道的话,只能隔离不能修复.硬盘坏道的监测方法:使用上述方法检测修复后,再使用badblock

[转]RMAN检测数据库坏块

backup validate check logical database; select * from v$database_block_corruption; RMAN> backup validate check logical database; Starting backup at 02-SEP-15 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=141 device type=DISK allocated channel

数据库坏块触发ora-00600和ora-07445

上午10:03分收到资源同步库的宕机告警,登陆数据库核实数据库确实异常,第一反应手动重启库,但依旧失败. 回过头查看数据库告警日志,发现大量的600和7445报错 查看trace文件,发现都是对同一个表T_PRODUCT_ADDR_6_8_TEMP_AREA的更新操作: 在连续的报错后,数据库自身有个坏块recover的操作 从在线日志恢复成功后,依然有类似的报错信息,最后数据库直接宕机 [分析过程] 1.根据数据库报错信息中涉及的两个数据文件号信息,在数据库启动到mount状态,通过以下脚本查

ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1)

ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案(文档ID 1623284.1) (一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26040)简介 如果只是错误ORA-01578,而没有伴随ORA-26040,那么这个坏块是由其它的原因引起的坏块,可以尝试使用RMAN的BMR(Block Media Recovery)修复. 如果数据段(表段.索引段)被定义为NOLOGGING属性,那么当NOLOGGING加APPEND.UNRE

ORA-01578和ORA-26040--NOLOGGING操作引起的坏块-错误解释和解决方案

(一)NOLOGGING操作引起的坏块(ORA-01578和ORA-26040)简介 如果只是错误ORA-01578,而没有伴随ORA-26040,那么这个坏块是由其它的原因引起的坏块,可以尝试使用RMAN的BMR(Block Media Recovery)修复. 如果数据段(表段.索引段)被定义为NOLOGGING属性,那么当NOLOGGING加APPEND.UNRECOVERABLE操作修改该数据段或者使用数据泵(DATAPUMP)impdp参数DISABLE_ARCHIVE_LOGGING