hadoop yarn日志分离

根据hdfs的auditlog以及fsimage分析,yarn的日志文件占用了10%-20%的rpc请求以及文件量,这对namenode的性能有比较大的影响,特别是当集群规模越来越大,会影响生产业务。故下面的方案对yarn日志进行拆分,将日志写入一个独立的hdfs集群

运行yarn的集群(pascdev),日志写入集群(pasc)

一、   配置

hdfs-site.xml

//添加日志写入集群的nameservice

  <property>

    <name>dfs.nameservices</name>

    <value>pascdev,pasc</value>

  </property>

//添加日志写入集群的rpc端口

  <property>

    <name>dfs.ha.namenodes.pasc</name>

    <value>CDM01,CDM02</value>

  </property>

  <property>

    <name>dfs.namenode.rpc-address.pasc.CDM01</name>

    <value>CDM01.qa.pab.com.cn:8020</value>

  </property>

  <property>

    <name>dfs.namenode.servicerpc-address.pasc.CDM01</name>

    <value>CDM01.qa.pab.com.cn:8021</value>

  </property>

  <property>

    <name>dfs.namenode.rpc-address.pasc.CDM02</name>

    <value>CDM02.qa.pab.com.cn:8020</value>

  </property>

  <property>

    <name>dfs.namenode.servicerpc-address.pasc.CDM02</name>

    <value>CDM02.qa.pab.com.cn:8021</value>

  </property>

//添加日志集群的client.failover.proxy

  <property>

    <name>dfs.client.failover.proxy.provider.pasc</name>

    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

  </property>

//为防止datanode向日志集群的namenode执行块汇报,添加以下配置

  <property>

    <name>dfs.internal.nameservices</name>

    <value>pascdev</value>

  </property>

yarn-site.xml

//修改Yarn日志路径

  <property>

    <name>yarn.nodemanager.remote-app-log-dir</name>

    <value>hdfs://pasc/metadata/logs/remoteyarn</value>

  </property>

二、   部署相关Patch

(1)修改以上配置,重启hadoop服务后,报以下错误

原因是现有的版本不支持跨ns的日志聚合操作,部署Patch Yarn-3269

(2)解决跨ns问题后,再次重启服务,报以下错误,提示rpc认证错误

 

查看源码发现是在logaggragationservice的initappaggregator方法中获取用户的credential

通过打印日志,获取了Nodemananger在进行日志聚合操作时所持有的tokens,发现并没有集群pasc的HDFS_DELEGATION_TOKEN

 

通过添加代码修改这个问题:

  credentials = new Credentials();

  FileSystem remoteFs = getFileSystem(getconfig());

  remoteFs.addDelegationTokens(UserGroupInformation.getLoginUser().getshortname(),credentials)

可以看到已经获取集群pasc的HDFS_DELEGATION_TOKEN

 

三、测试

可以看到pasc集群上已经有该app执行的日志

 

同时可以在pascdev集群上通过yarn logs命令查看日志

 

原文地址:https://www.cnblogs.com/moonypog/p/10911717.html