设为首页 收藏本站
查看: 546|回复: 0

[经验分享] 如何设置hadoop hbase的Log Appender

[复制链接]

尚未签到

发表于 2016-12-8 08:24:30 | 显示全部楼层 |阅读模式
  要想很好的监控hadoop集群的状态,hadoop打印的log是很重要的。我们的思路是使用部门研发的log appender将hadoop的数据append到我们自己的central logging数据库中(其实就是存在hbase中)。
  

  说起来简单,实际操作起来也花了一天多的时间,下面记录下整个过程。
  

  首先要明确hadoop使用的log机制。hadoop使用了slf4j,log4j,apache的common-logging。slf4j是纯的log接口,common-logging和log4j既是接口也有实现。而common-logging在检查到classpath下有log4j存在时会默认用log4j吐出log,classpath里有slf4j-log4j12-xxx.jar时slf4j也通过log4j吐出log。这样hadoop的所有log都通过一个log4j.properties配置即可管理log的吐出。关系图如下:
   DSC0000.png

   DSC0001.png

  

  但。。。我们自己的central logging系统只有logback的appender。因此需要把这些logging的家伙都转到logback里再通过logback里的logAppender存到我们自己的log系统里。
  

  了解了原理,我们看下如何让logback一统天下,把他们全收拾了。
   DSC0002.png

  

  

  原理:
  在classpath中加上log4j-over-slf4j jar包,这样log4j就会进入slf4j,在classpath中加入jcl-over-slf4j jar包,common-logging的log就也会进入slf4j。此时只要再加上logback的jar包,slf4j是纯接口,此时只有logback一条路可以走,这样所有的log就会乖乖的都从logback里吐出来了。下面看下实际配置的步骤:
  1.创建需要lib的文件夹:
  sudo mkdir /logback

  2.放入我们所需的lib:
  

  3.由于我们用的cdh系列,需要让lib目录能够让hdfs用户能访问:
  sudo chmod 777 -R /logback

sudo chown -R hdfs:hdfs /logback

  4.修改hadoop的启动脚本,添加我们的lib到classpath下:
  sudo vim /etc/hadoop/conf/hadoop-env.sh

  添加以下内容

修改classpath
LOGBACK_HOME=/logback
for i in "$LOGBACK_HOME"/*.jar; do
HADOOP_CLASSPATH="$i":"$HADOOP_CLASSPATH"
done

export HADOOP_CLASSPATH

5.添加我们的logback.xml配置文件到hadoop的配置目录下:  sudo mv ~/logback/logback.xml /etc/hadoop/conf/
  配置文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_DIR" value="${hadoop.log.dir}"/>
<property name="LOG_FILE_NAME" value="${hadoop.log.file}"/>
<!-- Output to File and Rotate if it's necessary -->
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/${LOG_FILE_NAME}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOG_DIR}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %10logger [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<!--Output to central logging-->
<appender name="CentralLogging" class="com.ctrip.freeway.appender.CentralLoggingAppender">
<appId>901240</appId>
<serverIp>192.168.82.58</serverIp>
<serverPort>63100</serverPort>
</appender>
<root level="INFO">
<appender-ref ref="ROLLING"/>
<appender-ref ref="CentralLogging"/>
</root>
</configuration>

可以看到我们添加了自己的CentralLogging的Appender。  6.把slf4j-log4j12-1.6.1这个jar包注释掉!因为如果保留,log4j和logback会竞争,而不幸的是logback比log4j晚加载,所以log还会走log4j。。。此坑搞了半天
  sudo mv /usr/lib/hadoop/lib/slf4j-log4j12-1.6.1.jar /usr/lib/hadoop/lib/slf4j-log4j12-1.6.1.jar.bak
  

  ok,配置完后,重启hadoop机器,搞定。但我们还是不满足,hbase的log也搞进来多好啊。
  

  1.添加logback配置到hbase配置目录:
  类似上面步骤5
  2.注释掉thrift的jar包。此步不是必须的!因为我们的central logging系统会用到thrift的jar包,而hbase也有thrift。hbase的thrift版本比较低,我们的central logging会报错。因此注释掉hbase的thrift即可。
  sudo mv /usr/lib/hbase/lib/libthrift-0.7.0.jar /usr/lib/hbase/lib/libthrift-0.7.0.jar.bak

  

  重启hbase。搞定。下面看下成果吧:
  



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-311176-1-1.html 上篇帖子: hadoop 中基于 Bloom filter的联结 下篇帖子: hadoop文本转换为序列文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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