51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2616|回复: 0
打印 上一主题 下一主题

[品茗闲话] 记一次处理bug经历

[复制链接]
  • TA的每日心情
    无聊
    前天 09:38
  • 签到天数: 493 天

    连续签到: 3 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-12-27 16:48:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    这次问题设计组件稍复杂,这里大致说一下,我们是做过车信息查询的。负责大数据模块,有另外一个组专门负责卡口,数据是由他们从各卡口抽取,然后插入到hbase中。再通过协处理器,将数据在写进hbase之前发送到AMQ消息队列,然后再消费建立solr索引,架构基本就是这样的。


    基于这个,在元旦前后,数据出现点小问题。在元旦前高速卡口上的数据都是可以通过solr查询到的,而元旦之后的数据无法查询到的。当时发现问题时我们自信的认为肯定是抽数据那块出现问题了,后来经查,高速卡口的数据确实抽取到数据了。然后我们逐个组件查找问题,首先我们从hbase开始。由于抽数据那边不确却的知道具体是那些数据丢失,只知道卡口有个编号这些编号都属于高速上的,给我们查询带来一些不便。我首先想到一个简便的方法查询,就是通过hive建一个外部表然后映射到hbase中我需要查询的表,这里可以选择新的只用映射几个我需要知道的字段。


    映射语句如下:

    1. CREATE EXTERNAL TABLE xx(
    2. rowkey string,
    3. aa string,
    4. bb string)
    5. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    6. WITH SERDEPROPERTIES ("hbase.columns.mapping" = "
    7. :key,
    8. cf:aa,
    9. cf:bb")
    10. TBLPROPERTIES("hbase.table.name" = "table");
    复制代码

    然后,我们就可以通hive很容易就查出我们需要的数据。


    在hbase这确实查到有高速卡口的数据。然后我们有想到,消费AMQ中数据的程序是我们自己写的,可不可能是在消费的时候出现问题。经查看我们消费程序的日志,没有异常日志。为了确认不是在消费这个节点上出现问题,我现场在代码中加入一个条件,如果遇到高速卡口的数据就日志打印出来。重启消费程序后,验证结果是始终没有高速卡口的数据出现。


    至此基本把问题缩小到协处理器和AMQ上。当时当时负责协处理器的同事当时不在,一时半会也无法通过代码验证。然后只有硬着头皮先去查看协处理器的日志,这一看日志,果真发现有问题,发现我们RS有一节点上的日志中有协处理器的几条日志,日志是我们自己定义的,大致意思就是协处理器在region上没有挂载成功。问题是找到了,当时该如何解决。继续在日志里面查找,发现有报找不到类的异常,缺少AMQ的jar包,因为协处理器中是把数据发送到AMQ的,所以需要AMQ相关的包连接AMQ。然后我们添加上AMQ相关包,重启该节点上的RegionServer,OK了,solr中能查到高速卡口的数据。



    至此问题解决了,通过这次查找问题,一个是经验积累。另一方面也明白了,规范的重要性,之所有出现这样的情况时因为,元旦前添加了个节点,也就是出问题的节点。我们有添加节点的文档,但是很零散。一旦有遗漏就是给自己挖了一大坑,所以把流程规范是不可或缺的。




    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-22 14:26 , Processed in 0.072521 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表