• 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命令查看日志

     

  • 相关阅读:
    THUWC2020 游记
    USACO14MAR The Lazy Cow(Gold)
    luogu P3768 简单的数学题
    2017/9/22模拟赛
    2017/9/20模拟赛
    2017/9/15模拟赛
    刷屏代码·稳 from林凯
    2017/9/13模拟赛
    【9018:1368】八数码
    2017/9/10模拟赛
  • 原文地址:https://www.cnblogs.com/moonypog/p/10911717.html
Copyright © 2020-2023  润新知