如何查看hadoop日志查看运行过程中产生日志

如何查看Hadoop运行过程中产生日志_百度知道在运行时开启GC日志 - ImportNew
| 标签: ,
我们经常会遇到JVM运行时出错的情况。若能在启动时加入一些启动选项(startup option),便可以获取与bug相关的重要线索,从而有希望根治它们。但在实际操作时,我们总是忘记添加-XX:+HeapDumpOnOutOfMemoryError 或 -XX:+PrintGCDetails这样必要的flag。
每当面对如此窘境,我们只能关闭JVM,修改启动参数(startup parameter),然后默默祈祷,希望问题场景(problematic situation)能在重启之后得以重现。这种方法偶尔奏效,在场景重现后你或许还能收集到足够的证据,以便动手根治潜在的问题。
不难看出,前文所述的方法问题显著——你必须执行一次额外的重启才能加入那烦人的debug选项,而不能借助中断(outage)实现。事实上,JDK bundle提供了一种可行的变通方案,如果将之收入麾下,偶尔还能从中获益。
在JDK bundle中隐藏着一个精悍的小工具——。作为一个命令行工具,jinfo用于收集正在运行的Java进程的配置信息。jinfo吸引眼球的地方在于,它能通过-flag选项动态修改指定的Java进程中的某些JVM flag的值。虽然这样的flag数量有限,但它们偶尔能够帮助到你。通过以下的命令你便能看到JVM中哪些flag可以被jinfo动态修改:
my-precious me$ java -XX:+PrintFlagsFinal -version|grep manageable
intx CMSAbortablePrecleanWaitMillis
{manageable}
intx CMSWaitDuration
{manageable}
bool HeapDumpAfterFullGC
{manageable}
bool HeapDumpBeforeFullGC
{manageable}
bool HeapDumpOnOutOfMemoryError
{manageable}
... cut for brevity ...
bool PrintGC
{manageable}
bool PrintGCDateStamps
{manageable}
bool PrintGCDetails
{manageable}
bool PrintGCTimeStamps
{manageable}
通过选项-XX:+PrintFlagsFinal可以列出所有的JVM flag,而其中的标注为manageable 的flag则是值得我们关注的部分。这些flag可通过JDK management interface(-XX:+PrintFlagsFinal)动态修改。虽然在JConsole中也能查到与其十分相似的MBean。但在我看来,以命令行的方式查看它们更加的便捷。
如何使用jinfo
让我们通过实战来学习如何使用jinfo。在下面的例子中,我们将在一个正在运行的JVM中动态开启GC日志功能:
my-precious me$ jps
12278 HighAllocationRate
12269 JConsole
my-precious me$ jinfo -flag +PrintGCDetails 12278
my-precious me$ jinfo -flag +PrintGC 12278
my-precious me$
在jinfo中需要打开-XX:+PrintGC和 -XX:+PrintGCDetails两个选项才能开启GC日志,这与用命令行参数的方式实现有着细微的差别——如果你通过启动脚本(startup script)来设置参数,仅需-XX:+PrintGCDetails即可,因为-XX:+PrintGC会被自动打开。
不过,从standard output的结果来看,PID为12278的进程的GC日志的确能够滚动地显示出来:
[GC (Allocation Failure) [PSYoungGen: 876416K-&9312K)] 1094420K-&61216K), 0.2173131 secs] [Times: user=0.74 sys=0.00, real=0.22 secs]
[GC (Allocation Failure) [PSYoungGen: 890304K-&7504K)] 1108924K-&69408K), 0.2446639 secs] [Times: user=0.82 sys=0.01, real=0.25 secs]
同理,若想关闭GC日志功能,只需要执行jinfo -flag -PrintGCDetails 12278和 jinfo -flag -PrintGC 12278命令即可。
在我看来,学会使用jinfo,只能让你在故障排除的工作中少花一到两天的时间。若打一开始就使用这类性能监控工具,你可能从未有过这样的烦恼。
原文链接:
- 译文链接: [ 转载请保留原文出处、译者和译文链接。]
关于作者:
楼主写的很好,为编写更好的代码
关于ImportNew
ImportNew 专注于 Java 技术分享。于日 11:11正式上线。是的,这是一个很特别的时刻 :)
ImportNew 由两个 Java 关键字 import 和 new 组成,意指:Java 开发者学习新知识的网站。 import 可认为是学习和吸收, new 则可认为是新知识、新技术圈子和新朋友……
新浪微博:
推荐微信号
反馈建议:@
广告与商务合作QQ:
– 好的话题、有启发的回复、值得信赖的圈子
– 写了文章?看干货?去头条!
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 活跃 & 专业的翻译小组
– 国内外的精选博客文章
– UI,网页,交互和用户体验
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
& 2016 ImportNew如何查看Hadoop运行过程中产生日志_百度知道如何查看Hadoop运行过程中产生日志_百度知道如何查看Hadoop运行过程中产生日志_百度知道

我要回帖

更多关于 hadoop 日志分析 的文章

 

随机推荐