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


一、环境准备

运行环境:Java1.8
支持Hadoop 3.x
下载knox1.0.0
https://cwiki.apache.org/confluence/display/KNOX/Apache+Knox+Releases
这个官网链接有全版本的资源

二、解压安装


cd knox-1.0.0查看目录如下

三、knox文件目录解析

这里主要对conf/与data/等重要的配置文件进行介绍下
logs/,bin/,会在启动knox时说明下

3.1 conf/

解压后的knox-1.0.0为{GATEWAY_HOME}目录,启动前要先依据自己的Hadoop集群情况进行配置。
主要在{GATEWAY_HOME}/conf目录下进行配置
包含适用于gateway全局的配置
tree结构,如下

这里说几个比较重要的配置文件

  • 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

更多配置查看官网
http://knox.apache.org/books/knox-1-0-0/user-guide.html#Quick+Start

  • topologies 放置所有的网络拓扑xml文件,用于部署集群代理
    如下

    登陆的配置
    admin.xml
    knoxsso.xml

    knox 前台webUI界面
    manager.xml

    沙箱测试案例
    sandbox。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

knox启动不能用root用户操作,需要将{GATEWAY_HOME}也就是knox-1.0.0文件夹赋予另外的用户权限,如ocdp

然后执行如下操作

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

执行结果如下

上图中–force 是因为之前创建过了,强制执行覆盖的,密码设置为ocdp123

接着操作

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


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

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

至此,knox部署完成,可根据如下url访问组件UI界面
https://{gateway_ip}:8443/gateway/{cluster_name}/{hadoop_UI}
Ex:

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

拿yarnUI来说
https://ocdp52:8443/gateway/ocdp/yarn

点击高级
点击继续前往链接(不安全)
会弹出一个输入账号密码输入框

这里的账号密码就是knox自带的ldap用户账号密码,上面有说过
输入admin/admin-password

代理成功

七、knox代理组件UI报错

但是Knox这个东西各个版本里的不同组件UI对应的rewrite.xml、service.xml文件比较复杂,会出现很多很多的问题,要么组件UI访问不进去,要么访问进去了组件UI内部界面跳转就会有问题,不过基本上都是因为rewrite.xml与service.xml文件的问题
我研究了一段时间后总结如下
我knox访问的集群是HDP平台下的各个组件服务

7.1 knox版本为1.0.0.3、1.3

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

7.2 knox版本为0.12

低版本可以访问所有的UI,但是内部跳转问题却层出不穷
yarn UI内部访问8042、log、node、appication问题有很多
hdfs UI 内部访问datanode地址就失效了。不再是gateway所代理的地址了
HBASE UI 最上面的Head一栏按钮大部分都访问不了

7.3 Apache Knox报错整理

具体的报错我很多已经发了篇文章大致说了下链接如下
Apache Knox报错大全

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

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

knox毕竟能够代理的组件有限,所以我外层套了一个nginx服务
架构如下

部署nginx链接如下

Nginx安装部署操作梳理(三步走)
部署完后需要开启nginx 的SSL模式并生成证书,配置证书路径
文章链接如下
Nginx开启SSL总结
依据以上文档可以保证配通

九、还需研究方向

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

9.1 KNOXSSO配置

9.2 HA配置

9.3 kerberos配置

后续有时间再继续研究

一键三连(〃‘▽’〃)

更多关于大数据(Hadoop、HBASE、Hive、Flink、Doris、Pulsar、Kafka、ClickHouse)学习干货资料
识别下方二维码,回复“资料全集”,即可获得下载地址。

2020全网最全Apache Knox实战总结相关推荐

  1. 2020全网最全的软件测试进阶/自动化面试题(含答案),收藏慢慢看

    前言 关于Python自动化测试学习,总结了一个学习规划图,分享给大家(看不清点原图链接) 原图链接:https://shimo.im/docs/pwCpGXKWDKPKDJDK/ 2020全网最全自 ...

  2. 2020全网最全的软件测试linux面试题及参考答案,赶紧收藏!

    一.前言: 2020非常全的软件测试linux面试题及参考答案 作为一名软件测试工程师,我相信大部分的人都和Linux打过交道,因为我们的服务器一般都是装的Linux操作系统,包括各种云服务器也都是用 ...

  3. i了i了,这简直就是2020全网最全最强的MyBatis面试题!

    题目大纲 ps:先上题,答案在后面 1.什么是MyBatis? 2.讲下MyBatis的缓存 3.Mybatis是如何进行分页的?分页插件的原理是什么? 4.简述Mybatis的插件运行原理,以及如何 ...

  4. 2020全网最全前端安全综述(深度好文!)

    前言 大部分面试总结其实埋了很多坑,点到为止,但是坑还是需要埋的,今天这篇文章就是填第一个坑.上篇总结中就有一个题目 33.能说一下你项目中遇到了哪些安全问题么,一般都是怎么解决的? xss.csrf ...

  5. Flink 全网最全资源(视频、博客、PPT、入门、原理、实战、性能调优、源码解析、问答等持续更新)

    Flink 学习 https://github.com/zhisheng17/flink-learning 麻烦路过的各位亲给这个项目点个 star,太不易了,写了这么多,算是对我坚持下来的一种鼓励吧 ...

  6. Flink 全网最全资源(视频、博客、PPT、入门、实战、源码解析、问答等持续更新)...

    Flink 学习 github.com/zhisheng17/- 麻烦路过的各位亲给这个项目点个 star,太不易了,写了这么多,算是对我坚持下来的一种鼓励吧! 本项目结构 博客 1.Flink 从0 ...

  7. 【全网最全-01-Maven】关于Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1

    [全网最全-01-Maven]关于Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1 问题描述 F ...

  8. Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解

    封面:洛小汐 作者:潘潘 做大事和做小事的难度是一样的.两者都会消耗你的时间和精力,所以如果决心做事,就要做大事,要确保你的梦想值得追求,未来的收获可以配得上你的努力. 前言 上一篇文章 <My ...

  9. 可能是全网最全,JAVA日志框架适配、冲突解决方案,可以早点下班了!

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java ...

最新文章

  1. CSSA email list
  2. keras添加正则化全连接_收藏!改善TensorFlow模型的4种方法你需要了解的关键正则化技术(2)...
  3. 哪些情况是友情链接作弊?总结了11种方法!
  4. loss低但精确度低_低光照图像增强网络-RetinexNet(model.py解析【2】)
  5. 某大型银行深化系统技术方案之七:核心层之流程控制引擎
  6. 在Eclipse上使用egit插件通过ssh协议方式上传项目代码的具体步骤
  7. 20155315 2016-2017-2 实验二《Java面向对象程序设计》实验报告
  8. 个人学习进度(第四周)
  9. 【图像融合】基于matlab GUI小波变换可见光与红外光图像融合(带面板)【含Matlab源码 701期】
  10. Axure RP 6.5中文汉化包及汉化方法
  11. hp/博科光纤交换机配置小记
  12. 笔记本怎样做无线打印服务器,自己的笔记本怎么连打印机_笔记本怎样无线连接打印机...
  13. Similarity-Preserving Knowledge Distillation
  14. 用C语言程序进行比赛日程排列
  15. Android中夜间模式的三种实现方式
  16. Yolov3:win10下训练自己的数据(GPU版)(详细步骤)
  17. DeepFlow: Deep Learning-Based Malware Detection by Mining Android Application for Abnormal Usage 2
  18. 谷歌浏览器设置默认搜索引擎
  19. C# 汉字转拼音 拼音转汉字 简体繁体互转
  20. 1-JVM之Java运行时数据区域

热门文章

  1. What makes for Effective detection proposals?论文阅读笔记
  2. 测试一款LMV358, DIP8封装
  3. 目标追踪篇---yolov8_tracking复现
  4. 统计学基础--标准差
  5. 职场小故事,工作大道理(20)——采摘山果,喝上一碗蘑菇汤,让“堂堂大学生干保安”有了新启示
  6. java swing视频教程下载_JAVA Swing 教程
  7. 算法复杂度的表示法_用简单的英语算法:时间复杂度和Big-O表示法
  8. Python数据分析练习(二)数据分析工具Pandas
  9. taobao.item.img.delete( 删除商品图片 )
  10. 笔记本电脑连不上waifi怎么办