2020全网最全Apache Knox实战总结

2020全网最全Apache Knox实战总结最近一个月在研究 Apacheknox 谈不上精吧 或多或少有些心得截止目前 knox 最新版本为 1 4 实践过的版本有 1 3 1 1 1 0 HDP 下的 1 0 0 3 78 0 12 等 每个版本在组件 UI 跳转这块都有些问题 自己在 HDP3 1 下安装的 Knox 1 0 0 3 78 版本下进行修复后 形成了一个比较稳定的版本 如有需要可以私信我现在花点时间将此次 knox 之行进行总结如有问题欢迎讨论

本文针对knox_1.0.0进行总结,过程中可能会穿插其他版本的异同


一、环境准备

二、解压安装

在这里插入图片描述
cd knox-1.0.0查看目录如下
在这里插入图片描述




三、knox文件目录解析

3.1 conf/

  • gateway-site.xml
    重要参数如下

param description default
gateway.port knox默认端口 8443
gateway.path 默认url中的路径 gateway
gateway.hadoop.kerberos.secured 集群是否开启kerberos false
java.security.krb5.conf krb5.conf的完整路径 /etc/knox/conf/krb5.conf
java.security.auth.login.config JAAS登陆配置的完整路径 /etc/knox/conf/krb5JAASLogin.conf
  • topologies 放置所有的网络拓扑xml文件,用于部署集群代理
    如下
    在这里插入图片描述
    登陆的配置
    admin.xml
    knoxsso.xml










    这里可以了解到,只要是个web应用,都可以拿knox来代理,起作用与nginx如出一辙,都是反向代理的思想

    如果需要对自己的hadoop集群进行topology部署,则touch一个{cluster_name}.xml文件,参考沙箱进行配置

  • users.ldif
    里面是knox自带的一个Ldap demo,默认knox的登陆就是依据这个文件中的ldap用户密码等信息进行登陆的
    这里的用户名密码都是如下格式
    {user}
    {user-password}
    如admin/admin-password










3.2 data/

  • persisted master secret在磁盘持久化的密码
  • keystore秘钥库
  • services Hadoop组件服务的rewrite、service配置文件(配置页面资源跳转)
  • 每一个集群对应的topology中xml会在deployment目录下生成发布包

下来依次说下

  • persisted master secret在磁盘持久化的密码
    在启动knox前必须先执行一个脚本{GATEWAY_HOME}/bin/knoxcli.sh create-master,需要在磁盘生成一个持久化的master secret,这个密码保存在{GATEWAY_HOME}/data/security/master文件中(加密形式)
    在这里插入图片描述




  • keystore秘钥库
    在{GATEWAY_HOME}/data/security/keystores包含了knox的身份秘钥
    gateway.jks文件以及每个部署的集群拓扑对应的证书存储,如下
    在这里插入图片描述






  • services Hadoop组件服务的rewrite配置文件(配置页面资源跳转)
    在{GATEWAY_HOME}/data/services中有着各个大数据组件UI服务
    在这里插入图片描述
    拿yarnui来说
    cd yarnui
    在这里插入图片描述
    首先就是对应的版本,版本下对应2个文件
    在这里插入图片描述
    rewrite.xml内容如下
    在这里插入图片描述
    基本是一些资源的重定向,用一些正则表示哪一类资源的访问都用knox的gateway来代理
    service.xml文件如下
    在这里插入图片描述
    可以看出,service.xml中配置的是yarn组件服务的路由分发
    每一类服务都有一个rewrite标签,这个标签指向rewrite.xml中的规则从而实现服务请求到资源的代理
    其他组件服务跟yarn一样的道理,可能有些版本不止一个
    这里面的路由转发语法比较晦涩难懂,具体可以参考维基
    https://cwiki.apache.org/confluence/display/KNOX/2017/08/14/Understanding+Rewrite+Rules+for+Apache+Knox


































  • 每一个集群对应的topology中xml会在deployment目录下生成发布包
    在{GATEWAY_HOME}/data/deployments目录下有如下文件,都是各个集群的发布包
    在这里插入图片描述
    这里在前台用gateway第一次访问组件ui时,就会在此目录下生成{GATEWAY_HOME}/conf/topologies/{cluster_name}.xml文件对应的发布包
    需要注意下,因为rewrite.xml与service.xml问题可能会有很多(比如说跳转时界面资源刷不出来,报错404等其他问题),你就需要修改rewrite.xml或者service.xml。修改完xml后想要生效,需要在这里将{GATEWAY_HOME}/data/deployments下对应集群的发布包删除
    rm -rf {cluster_name}*
    然后再重启knox即可生效












四、配置{cluster_name}.xml

<?xml version="1.0" encoding="utf-8"?> <!--==============================================--> <!-- DO NOT EDIT. This is an auto-generated file. --> <!--==============================================--> <topology> <generated>true</generated> <gateway> <provider> <role>authentication</role> <name>ShiroProvider</name> <enabled>true</enabled> <param> <name>sessionTimeout</name> <value>30</value> </param> <param> <name>main.ldapRealm</name> <value>org.apache.hadoop.gateway.shirorealm.KnoxLdapRealm</value> </param> <param> <name>main.ldapContextFactory</name> <value>org.apache.hadoop.gateway.shirorealm.KnoxLdapContextFactory</value> </param> <param> <name>main.ldapRealm.contextFactory</name> <value>$ldapContextFactory</value> </param> <param> <name>main.ldapRealm.userDnTemplate</name> <value>uid={     0},ou=people,dc=hadoop,dc=apache,dc=org</value> </param> <param> <name>main.ldapRealm.contextFactory.url</name> <value>ldap://localhost:33389</value> </param> <param> <name>main.ldapRealm.contextFactory.authenticationMechanism</name> <value>simple</value> </param> <param> <name>urls./</name> <value>authcBasic</value> </param> </provider> </gateway> <service> <role>HBASEUI</role> <url>http://ocdp52:16010</url> </service> <service> <role>JOBHISTORYUI</role> <url>http://ocdp52:19888</url> </service> <service> <role>JOBTRACKER</role> <url>http://ocdp52:19888</url> </service> <service> <role>RANGER</role> <url>http://ocdp52:6080</url> </service> <service> <role>RANGERUI</role> <url>http://ocdp52:6080</url> </service> <service> <role>RESOURCEMANAGER</role> <url>http://ocdp52:8088/ws</url> </service> <service> <role>YARNUI</role> <url>http://ocdp52:8088</url> </service> <service> <role>HDFSUI</role> <url>http://ocdp52:50070</url> </service> <service> <role>AMBARIUI</role> <url>http://ocdp52:8080</url> </service> <service> <role>AMBARI</role> <url>http://ocdp52:8080</url> </service> <service> <role>AMBARIWS</role> <url>ws://ocdp52:8080</url> </service> </topology> 

HBase UI跳转

需要的配置如下

 <service> <role>HBASEUI</role> <url>http://ocdp52:16010</url> </service> 

4.1 HDFS UI跳转

 <service> <role>HDFSUI</role> <url>http://ocdp52:50070</url> </service> 

4.2 Yarn UI 跳转

 <service> <role>YARNUI</role> <url>http://ocdp52:8088</url> </service> <service> <role>RESOURCEMANAGER</role> <url>http://ocdp52:8088/ws</url> </service> <service> <role>JOBHISTORYUI</role> <url>http://ocdp52:19888</url> </service> <service> <role>JOBTRACKER</role> <url>http://ocdp52:19888</url> </service> 

4.3 Ranger UI跳转

 <service> <role>RANGER</role> <url>http://ocdp52:6080</url> </service> <service> <role>RANGERUI</role> <url>http://ocdp52:6080</url> </service> 

4.4 Ambari UI 跳转

 <service> <role>AMBARIUI</role> <url>http://ocdp52:8080</url> </service> <service> <role>AMBARI</role> <url>http://ocdp52:8080</url> </service> <service> <role>AMBARIWS</role> <url>ws://ocdp52:8080</url> </service> 

其余组件UI请浏览官网配置

注意
每次对{cluster_name}.xml文件修改后无需重启knox,他这个是热部署,会自动生效

五、启动gateway

su ocdp cd ${knox}/ ./bin/knoxcli.sh create-master 

接着操作

./bin/gateway.sh start ./bin/ldap.sh start 

在这里插入图片描述
gateway启动端口在gateway-site.xml中设置过了,默认8443
ldap用的是knox内嵌默认的ldap Demo服务,端口33389,不执行ldap.sh start就会访问组件UI报错




六、浏览器通过Knox访问组件UI

https://localhost:8443/gateway/ocdp/ranger https://localhost:8443/gateway/ocdp/hdfs https://localhost:8443/gateway/ocdp/yarn https://localhost:8443/gateway/ocdp/hbase/webui https://localhost:8443/gateway/ocdp/ambari 

代理成功

七、knox代理组件UI报错

7.1 knox版本为1.0.0.3、1.3

这些高版本knox访问HDFS UI、HBASE UI报错500。压根访问不了,报错我至今未解决,不过确定是证书问题

7.2 knox版本为0.12

7.3 Apache Knox报错整理

后续会持续补充,有问题可以私信我沟通

八、nginx->knox->Hadoop组件 UI

部署nginx链接如下

九、还需研究方向

一个月的knox之旅到此结束了,但是knox很多其他的东西还处于调研阶段,比如下面几点

9.1 KNOXSSO配置

9.2 HA配置

9.3 kerberos配置

后续有时间再继续研究

一键三连(〃‘▽’〃)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199628.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 下午12:34
下一篇 2026年3月20日 下午12:34


相关推荐

  • navicat 15激活码(破解版激活)

    navicat 15激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    46
  • php 四舍五入,php四舍五入 js四舍五入方法 | 帮助信息-动天数据

    php 四舍五入,php四舍五入 js四舍五入方法 | 帮助信息-动天数据php 四舍五入 js 四舍五入方法作者 dthost 时间 2017 12 16 分类 未分类 6 286 次阅读四舍五入是一种精确度的计数保留法 与其他方法本质相同 特殊之处在于 采用四舍五入 能使被保留部分的与实际值差值不超过最后一位数量级的二分之一 假如 0 9 等概率出现的话 对大量的被保留数据 这种保留法的误差总和是最小的 因此四舍五入法也是最基本的保留法 例子一 例如 被四舍五入 保

    2026年3月20日
    2
  • java.util.scanner sc_Java的Scanner sc=new Scanner(System.in)是什么意思「建议收藏」

    java.util.scanner sc_Java的Scanner sc=new Scanner(System.in)是什么意思「建议收藏」展开全部当通过newScanner(System.in)创建一个Scanner,控制台会一直等待输入,62616964757a686964616fe58685e5aeb931333433653935直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。例:importjava.util.Scanner;…

    2022年7月20日
    17
  • clion激活码(注册激活)

    (clion激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~08G05E7DZH-eyJsaWNlb…

    2022年3月28日
    115
  • Blazor 组件入门指南

    Blazor 组件入门指南翻译自 WaqasAnwar20 年 3 月 19 日的文章 ABeginner sGuidetoBlaz 1Blazor 应用程序是组件的组合 这些组件不仅负责呈现用户界面 还协同工作以促进用户交互 它们是 Blazor 应用程序的主要构建块 大多数 Blazor 功能都是围绕组件展开的 在本教程中 我将向您详细介绍组件 并向您展示在 Blazor 应用程序中创建和使用组件的多种技术 下载源码 2Blazor 组件概述 Blazor 组件是 UI 的一个自

    2026年3月17日
    2
  • React 回忆录(四)React 中的状态管理

    React 回忆录(四)React 中的状态管理

    2022年4月3日
    66

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号