想把hadoop的进程日志导入hive表进行分析,遂做了以下的尝试。

关于hadoop进程日志的解析
使用正则表达式获取四个字段,一个是日期时间,一个是日志级别,一个是类,最后一个是详细信息,
然后在hive中建一个表,可以用来方便查询。

2015-12-18 22:23:23,357 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl: Memory usage of ProcessTree 32652 for container-id container_1448915696877_26289_01_000158: 110.6 MB of 2 GB physical memory used; 2.1 GB of 4.2 GB virtual memory used
2015-12-18 22:23:23,426 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl: Memory usage of ProcessTree 32615 for container-id container_1448915696877_26289_01_000102: 104.6 MB of 2 GB physical memory used; 2.1 GB of 4.2 GB virtual memory used
2015-12-18 22:23:23,467 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl: Uncaught exception in ContainerMemoryManager while managing memory of container_1448915696877_26289_01_000270
java.lang.IllegalArgumentException: disparate values
        at sun.misc.FDBigInt.quoRemIteration(FloatingDecimal.java:2931)
        at sun.misc.FormattedFloatingDecimal.dtoa(FormattedFloatingDecimal.java:922)
        at sun.misc.FormattedFloatingDecimal.<init>(FormattedFloatingDecimal.java:542)
        at java.util.Formatter$FormatSpecifier.print(Formatter.java:3264)
        at java.util.Formatter$FormatSpecifier.print(Formatter.java:3202)
        at java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2769)
        at java.util.Formatter$FormatSpecifier.print(Formatter.java:2720)
        at java.util.Formatter.format(Formatter.java:2500)
        at java.util.Formatter.format(Formatter.java:2435)
        at java.lang.String.format(String.java:2148)
        at org.apache.hadoop.util.StringUtils.format(StringUtils.java:123)
        at org.apache.hadoop.util.StringUtils$TraditionalBinaryPrefix.long2String(StringUtils.java:758)
        at org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl$MonitoringThread.formatUsageString(ContainersMonitorImpl.java:487)
        at org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl$MonitoringThread.run(ContainersMonitorImpl.java:399)
2015-12-18 22:23:23,498 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl: Uncaught exception in ContainerMemoryManager while managing memory of container_1448915696877_26289_01_000214

DROP TABLE IF EXISTS hadoop_log; CREATE TABLE hadoop_log (
date1 STRING,time1 STRING,msgtype STRING,classname STRING,msgtext STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ("input.regex" = "^(\\d{4}-\\d{2}-\\d{2})\\s+(\\d{2}.\\d{2}.\\d{2}.\\d{3})\\s+(\\S+)\\s+(\\S+)\\s+(.*)$", "output.format.string" = "%1$s %2$s %3$s %4$s %5$s"
)
STORED AS TEXTFILE; LOAD DATA LOCAL INPATH "/home/student/hadooplog" INTO TABLE hadoop_log; SELECT date1, time1, msgtext FROM hadoop_log WHERE msgtype='ERROR' OR msgtype='WARN' LIMIT 5; LOAD DATA LOCAL INPATH "/home/student/hadooplog3" OVERWRITE INTO TABLE hadoop_log;

需要注意的一点是,hive以\n做为行分隔符,所以需要对原有的日志文件进行处理,因为原有的日志文件中可能有异常或错误发生,这个时候是多行的。否则hive中会有很

多空的记录。

可以写一段bash shell或python来完成需要的功能。下面是我刚学python写的,很简陋。

import re
p=re.compile(r"^\d{4}-\d{2}-\d{2}\s+\d{2}.\d{2}.\d{2}.\d{3} INFO|WARN|ERROR|DEBUG")
str=""
f2=open('/home/student/hadooplog4','w')
with open('/app/cdh23502/logs/hadoop-student-datanode-nn1.log','r') as f:for l in f:if(str==""):str=l.rstrip()continueif(str!="" and len(p.findall(l))>0):print "\n"+strf2.write(str+"\n")str=l.rstrip()else:str=str+l.rstrip()print "\n" + strf2.write(str+"\n")f2.flush()
f2.close()

转载于:https://www.cnblogs.com/huaxiaoyao/p/5066454.html

Hive分析hadoop进程日志相关推荐

  1. Hadoop+hive+flask+echarts大数据可视化项目之flask结合echarts前后端结合显示hive分析结果

    Hadoop+hive+flask+echarts大数据可视化项目(五) ------flask与echarts前后端结合显示hive分析结果------- 关注过Hadoop+hive+flask+ ...

  2. python 分析大数据日志_大数据Web日志分析 用Hadoop统计KPI指标实例

    可以带着下面问题来阅读文章 问题: 1.MapReduce在日志分析的作用 思考: 该如何架构kpi系统,需要考虑什么问题. kpi:关键绩效指标法,即KPI绩效考核,是企业绩效考核的方法之一,其特点 ...

  3. hive基于新浪微博的日志数据分析——项目及源码

    有需要本项目的全套资源资源以及部署服务可以私信博主!!! 该系统的目的是利用大数据技术,分析新浪微博的日志数据,从而探索用户行为.内容传播和移动设备等各个层面的特性和动向.这项研究为公司和个人在制定营 ...

  4. Hive和Hadoop及RDBMS关系

    Hive 与 Hadoop 的关系 Hive利用HDFS存储数据,利用MapReduce查询分析数据 Hive与传统数据库对比 hive用于海量数据的离线数据分析 总结:hive具有sql数据库的外表 ...

  5. 【linux性能优化】定位分析狂打日志的问题

    一.文件系统和磁盘I/O 回顾一下文件系统和磁盘I/O的原理 1.1 文件系统 对存储设备上的文件进行组织管理的一种机制 为了支持各类不同的文件系统,Linux在各种文件系统上抽象了一层虚拟文件系统V ...

  6. Hadoop审计日志配置[转自 AIMP平台wiki]

    Hadoop审计日志配置 hdfs审计 log4j.properties 中配置(缺省就包含) hdfs.audit.logger=INFO,NullAppender hdfs.audit.log.m ...

  7. 使用ELK分析Windows事件日志

    这是ELK入门到实践系列的第三篇文章,分享如何使用ELK分析Windows事件日志. Windows系统日志是记录系统中硬件.软件和系统问题的信息,同时还可以监视系统中发生的事件.用户可以通过它来检查 ...

  8. angular代码分析之异常日志设计

    angular代码分析之异常日志设计 错误异常是面向对象开发中的记录提示程序执行问题的一种重要机制,在程序执行发生问题的条件下,异常会在中断程序执行,同时会沿着代码的执行路径一步一步的向上抛出异常,最 ...

  9. Android6.0源码分析—— Zygote进程分析(补充)

    原文地址: http://blog.csdn.net/a34140974/article/details/50915307 此博文为<Android5.0源码分析-- Zygote进程分析> ...

  10. Android5.0源码分析—— Zygote进程分析

    1      Zygote简介 Android的应用程序一般都是由Java语言编写而成的,这样的应用程序需要运行在独自的Dalvik虚拟机之上(当然,5.0好像默认了ART了).但是,如果在每一个进程 ...

最新文章

  1. JS判断一个数组中是否有重复值的三种方法
  2. Sublime Text 全程指引 by Lucida
  3. 史上最全的JUC并发图
  4. Promise 学习心得
  5. python 传不定量参数_Python中的定量金融
  6. @suppressWarnings(unchecked)及其相关属性在Java中意思
  7. java.lang.IllegalArgumentException: MALFORMED jar解析中文报错问题
  8. dw怎么修改html框架的宽度,Dreamweaver (dw)cs6中div标签宽度和高度设置方法
  9. C#时间的味道——任时光匆匆我只在乎你
  10. dede在发布文章时自动加上关键词链接
  11. 古老的window程序设计
  12. gx works2 存储器空间或桌面堆栈不足_2020淮北Gx螺旋输送机价格厂家出售
  13. PHP 二元线性拟合函数
  14. apache Ignite 安装和helloworld
  15. 串口485接法图_485通讯接线方式
  16. Latex 字体调整-斜体-下划线-加粗-罗马数字
  17. 【PyQt】重写系统事件之拖动改变窗口大小
  18. 夜神模拟器之burp抓包
  19. python学习 复制图片并重命名
  20. iwatch 1234 代的区别

热门文章

  1. Spring AOP的日志记录
  2. 路由汇总之二ospf路由汇总
  3. 《NS与网络模拟》第五章node示例
  4. 你是愛我還是需要我?
  5. (转)iOS 屏幕适配
  6. {过时·留存}MS Office文档
  7. Linux进程管理及作业控制(转)
  8. Centos6.x升级内核方法支持Docker
  9. zabbix安装笔记
  10. Swift 3必看:新的访问控制fileprivate和open