Loading [MathJax]/jax/output/HTML-CSS/jax.js

23【在线日志分析】之改造CDH的HDFS的NN,DN进程,日志输出为json格式

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 1.登录nn机器,进入最新序号的namenode配置文件夹,查看当前的nn的log4j配置 [root@sht-sgmhadoopnn-01 ~]# cd /var/run/cloudera-scm-agent/process/ [root@sht-sgmhadoopnn-01 process]# ls -lrt .

1.登录nn机器,进入最新序号的namenode配置文件夹,查看当前的nn的log4j配置
[root@sht-sgmhadoopnn-01 ~]# cd /var/run/cloudera-scm-agent/process/
[root@sht-sgmhadoopnn-01 process]# ls -lrt
.......
.......
.......
drwxr-x--x 3 hdfs   hdfs   380 Mar 30 20:40 372-hdfs-FAILOVERCONTROLLER
drwxr-x--x 3 hdfs   hdfs   500 Mar 30 20:40 370-hdfs-NAMENODE
drwxr-x--x 3 hdfs   hdfs   360 Mar 30 20:40 422-hdfs-FAILOVERCONTROLLER
drwxr-x--x 3 hdfs   hdfs   480 Mar 30 20:40 420-hdfs-NAMENODE
drwxr-x--x 3 yarn   hadoop 520 Mar 30 20:40 383-yarn-RESOURCEMANAGER
drwxr-x--x 3 mapred hadoop 400 Mar 30 20:40 379-yarn-JOBHISTORY
drwxr-x--x 3 mapred hadoop 380 Mar 30 20:40 425-yarn-JOBHISTORY
drwxr-x--x 3 yarn   hadoop 500 Mar 30 20:40 428-yarn-RESOURCEMANAGER
drwxr-x--x 3 root   root   180 Mar 31 15:53 359-cluster-host-inspector
[root@sht-sgmhadoopnn-01 process]# cd 420-hdfs-NAMENODE
[root@sht-sgmhadoopnn-01 420-hdfs-NAMENODE]# cat log4j.properties
log.threshold=INFO
main.logger=RFA
hadoop.root.logger=log.threshold,{main.logger}
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
log4j.rootLogger=${hadoop.root.logger},EventCounter,EventCatcher
log.dir=/var/log/hadoop-hdfs
log.file=hadoop-cmf-hdfs-NAMENODE-sht-sgmhadoopnn-01.log.out
max.log.file.size=200MB
max.log.file.backup.index=10
log4j.appender.RFA=org.apache.log4j.RollingFileAppender
log4j.appender.RFA.File=log.dir/{log.file}
log4j.appender.RFA.layout=org.apache.log4j.PatternLayout
log4j.appender.RFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n
log4j.appender.RFA.MaxFileSize=${max.log.file.size}
log4j.appender.RFA.MaxBackupIndex=${max.log.file.backup.index}
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
........
........


2.仔细分析,log4j.appender.RFA.layout.ConversionPattern 这个参数应该是控制nn进程的日志

3.打开CDH,进HDFS的Configuration界面,搜索"log"关键词,

3.1 找到"NameNode Logging Advanced Configuration Snippet (Safety Valve)",配置
log4j.appender.RFA.layout.ConversionPattern = {"time":"%d{yyyy-MM-dd HH:mm:ss,SSS}","logtype":"%p","loginfo":"%c:%m"}%n


3.2 找到"DataNode Logging Advanced Configuration Snippet (Safety Valve)",也配置
log4j.appender.RFA.layout.ConversionPattern = {"time":"%d{yyyy-MM-dd HH:mm:ss,SSS}","logtype":"%p","loginfo":"%c:%m"}%n

3.3 单击保存 
3.4 单击Stale Configuration:Restart needed 

3.5 Restart Stale Services

3.6 Review Changes,勾选Re-deploy client configuration ,Restart Now

4.检查nn,dn进程的日志输出是否为json格式
4.1 检查新增的参数是否生效
[root@sht-sgmhadoopnn-01 420-hdfs-NAMENODE]# cd ../
[root@sht-sgmhadoopnn-01 process]# ls -lrt
.......
.......
.......
drwxr-x--x 3 hdfs   hdfs   380 Mar 31 20:32 422-hdfs-FAILOVERCONTROLLER
drwxr-x--x 3 hdfs   hdfs   360 Mar 31 20:32 439-hdfs-FAILOVERCONTROLLER
drwxr-x--x 3 hdfs   hdfs   480 Mar 31 20:32 437-hdfs-NAMENODE
drwxr-x--x 3 mapred hadoop 400 Mar 31 20:32 425-yarn-JOBHISTORY
drwxr-x--x 3 yarn   hadoop 520 Mar 31 20:32 428-yarn-RESOURCEMANAGER
drwxr-x--x 3 mapred hadoop 380 Mar 31 20:32 442-yarn-JOBHISTORY
drwxr-x--x 3 yarn   hadoop 500 Mar 31 20:32 445-yarn-RESOURCEMANAGER
[root@sht-sgmhadoopnn-01 process]# cd 437-hdfs-NAMENODE
[root@sht-sgmhadoopnn-01 437-hdfs-NAMENODE]# cat log4j.properties |grep log4j.appender.RFA.layout.ConversionPattern
log4j.appender.RFA.layout.ConversionPattern={"time":"%d{yyyy-MM-dd HH:mm:ss,SSS}","logtype":"%p","loginfo":"%c:%m"}%n
[root@sht-sgmhadoopnn-01 437-hdfs-NAMENODE]#


4.2 检查log即可

[root@sht-sgmhadoopnn-01 437-hdfs-NAMENODE]# tail -f /var/log/hadoop-hdfs/hadoop-cmf-hdfs-NAMENODE-sht-sgmhadoopnn-01.log.out
{"time":"2017-03-31 20:40:38,588","logtype":"INFO","loginfo":"org.apache.hadoop.hdfs.server.namenode.FSImage:Reading org.apache.hadoop.hdfs.server.namenode.RedundantEditLogInputStream@5c588660 expecting start txid #142520"}
{"time":"2017-03-31 20:40:38,588","logtype":"INFO","loginfo":"org.apache.hadoop.hdfs.server.namenode.FSImage:Start loading edits file http://sht-sgmhadoopdn-02:8480/getJournal?jid=nameservice1&segmentTxId=142520&storageInfo=-60%3A1863012361%3A0%3Acluster8, http://sht-sgmhadoopdn-01:8480/getJournal?jid=nameservice1&segmentTxId=142520&storageInfo=-60%3A1863012361%3A0%3Acluster8"}
{"time":"2017-03-31 20:40:38,588","logtype":"INFO","loginfo":"org.apache.hadoop.hdfs.server.namenode.EditLogInputStream:Fast-forwarding stream 'http://sht-sgmhadoopdn-02:8480/getJournal?jid=nameservice1&segmentTxId=142520&storageInfo=-60%3A1863012361%3A0%3Acluster8, http://sht-sgmhadoopdn-01:8480/getJournal?jid=nameservice1&segmentTxId=142520&storageInfo=-60%3A1863012361%3A0%3Acluster8' to transaction ID 142520"}
{"time":"2017-03-31 20:40:38,588","logtype":"INFO","loginfo":"org.apache.hadoop.hdfs.server.namenode.EditLogInputStream:Fast-forwarding stream 'http://sht-sgmhadoopdn-02:8480/getJournal?jid=nameservice1&segmentTxId=142520&storageInfo=-60%3A1863012361%3A0%3Acluster8' to transaction ID 142520"}


5. 不足,当出现exception换行时,就会整个信息只有第一行为json格式,剩余行为普通输出,那么整个一条信息就不是完整的json的

解决方法:
5.1 改造 log4j-xxxx.jar --成本太大
5.2 在flume-ng端的exec source改造,我们采取第二种
5.3 google搜索 log4j json,发现和我一样需求的人很多,有现成的GitHub项目等等

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
2月前
|
JSON 人工智能 算法
探索大型语言模型LLM推理全阶段的JSON格式输出限制方法
本篇文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
|
3月前
|
JSON JavaScript Java
对比JSON和Hessian2的序列化格式
通过以上对比分析,希望能够帮助开发者在不同场景下选择最适合的序列化格式,提高系统的整体性能和可维护性。
122 3
|
3月前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
3月前
|
JSON 人工智能 算法
探索LLM推理全阶段的JSON格式输出限制方法
文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
603 12
|
3月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
3月前
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
183 1
|
4月前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
325 2
|
4月前
|
JSON API 数据格式
商品详情数据JSON格式示例参考(api接口)
JSON数据格式的商品详情数据通常包含商品的多个层级信息,以下是一个综合多个来源信息的JSON数据格式的商品详情数据示例参考:
|
4月前
|
机器学习/深度学习 JSON JavaScript
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
91 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等