HDP 中 hadoop yarn jobhistory 无法访问web ui 中/log 页面的问题

生产环境用到的是 HDP 3.1.0 版本的Hadoop(3.3.1),在使用中发现,无论是hdfs还是yarn和jobhistory,它们的web ui的log页面都无法打开,会提示报错,如下图:

yarn: 

(这里用开启了knox的代理路径)

摸不着头绪,先看下konx日志:

 没报出特殊的异常,说明不是knox的问题,从组件入手进行排查

再看下hadoop的日志吧:

 sysadmin用户是生产环境的系统账户,其他的页面都可以显示,为什么就 logs无法显示,

 找到一篇相关问题,提供了思路:

大数据问题:Hadoop的web页面无法访问logs_manweizhizhuxia的博客-CSDN博客_hadoop页面访问不了

大概方向就是权限方面的问题,只是没有一个准确的提示。

从日志入手,看下源码有没有相关的线索:

在hadoop-commen 的 src/main/java/org/apache/hadoop/http/HttpServer2.java 中,可以看到日志中的报错的部分:

  /**
   * Does the user sending the HttpServletRequest has the administrator ACLs? If
   * it isn't the case, response will be modified to send an error to the user.
   *
   * @param response used to send the error response if user does not have admin access.
   * @return true if admin-authorized, false otherwise
   * @throws IOException
   */
  public static boolean hasAdministratorAccess(
      ServletContext servletContext, HttpServletRequest request,
      HttpServletResponse response) throws IOException {
    Configuration conf =
        (Configuration) servletContext.getAttribute(CONF_CONTEXT_ATTRIBUTE);
    // If there is no authorization, anybody has administrator access.
    if (!conf.getBoolean(
        CommonConfigurationKeys.HADOOP_SECURITY_AUTHORIZATION, false)) {
      return true;
    }

    String remoteUser = request.getRemoteUser();
    if (remoteUser == null) {
      response.sendError(HttpServletResponse.SC_FORBIDDEN,
                         "Unauthenticated users are not " +
                         "authorized to access this page.");
      return false;
    }

    if (servletContext.getAttribute(ADMINS_ACL) != null &&
        !userHasAdministratorAccess(servletContext, remoteUser)) {
      response.sendError(HttpServletResponse.SC_FORBIDDEN,
          "Unauthenticated users are not " +
              "authorized to access this page.");
      LOG.warn("User " + remoteUser + " is unauthorized to access the page "
          + request.getRequestURI() + ".");
      return false;
    }

    return true;
  }

推测是我们的这个访问用户sysadmin 跟admin_acl策略不匹配,所以拒绝访问。

到管理界面中找找 admin.acl 相关的配置:

 其中hadoop-policy的若干选项,在官网查阅和尝试改动后,没有效果。

dfs.cluster.administrators 这个配置跟admin.acl 很相关。在官网查下它的内容:

 大概意思就是通过配置该项,来筛选哪个用户或者用户组对hadoop有admin权限。

环境上已经配置的是hdfs,我们直接修改为 * ,再重启看下:

 

可以实现 web ui中log页面的访问了。

同理,yarn和jobhistory应该都是类似的问题。

找下yarn的配置项:

 其中的yarn.admin.acl就是要修改的地方,把它也改成 * 号(注:后续在使用中发现,只改成 yarn,konx 就可以了,不用必须改为*号

重启yarn后:

 

找下jobhistory的配置项,同理改成mapred,knox即可:

 重启后,如下:

至此,log无法访问的问题就解决了,但是还有个遗漏的问题就是,hdfs的administror改成*才可以访问到log,改成hdfs,knox等方式依旧不行,这个还需要再研究一下。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值