1.knox简介
Apache Knox Gateway 是一个应用程序网关,用于与Apache Hadoop 部署的 REST API 和 UI 进行交互。
Knox 网关为与 Apache Hadoop集群的所有 REST 和 HTTP 交互提供了一个单一的访问点。
Knox 提供三组面向用户的服务:
- 代理服务
Apache Knox 项目的主要目标是通过 HTTP 资源的代理提供对 Apache Hadoop 的访问。 - 身份验证服务
REST API 访问身份验证以及 UI 的 WebSSO 流。LDAP/AD、基于标头的 PreAuth、Kerberos、SAML、OAuth 都是可用的选项。 - 客户端服务
客户端开发可以通过 DSL 编写脚本或直接使用 Knox Shell 类作为 SDK 来完成。KnoxShell 交互式脚本环境将 groovy shell 的交互式 shell 与 Knox Shell SDK 类相结合,用于与您部署的 Hadoop 集群中的数据进行交互。
2.knox支持范围
2.1支持的 Apache Hadoop 服务
以下 Apache Hadoop 生态系统服务与 Knox 网关集成:
Ambari
Cloudera Manager
WebHDFS (HDFS)
Yarn RM
Stargate (Apache HBase)
Apache Oozie
Apache Hive/JDBC
Apache Hive WebHCat (Templeton)
Apache Storm
Apache Tinkerpop - Gremlin
Apache Avatica/Phoenix
Apache SOLR
Apache Livy (Spark REST 服务)
Apache Flink
Kafka REST 代理
2.2支持的 Apache Hadoop 生态系统 UI
Name Node UI
Job History UI
Yarn UI
Apache Oozie UI
Apache HBase UI
Apache Spark UI
Apache Ambari UI
Apache Impala
Apache Ranger 管理控制台
Apache Zeppelin
Apache NiFi
Hue
Livy
3.knox服务启动
3.1环境准备
运行环境:Java1.8
支持Hadoop 3.x
下载knox1.x.0压缩包
knox全版本资源链接:https://cwiki.apache.org/confluence/display/KNOX/Apache+Knox+Releases
3.2安装knox
如果您下载了 Zip 发行版,可以简单地将内容解压缩到一个目录中。下面的示例提供了一个可以执行此操作的命令。请注意{VERSION},该命令部分必须替换为实际的 Apache Knox Gateway 版本号。例如,这可能是 1.6.0。
unzip knox-{VERSION}.zip
knox-{VERSION}这将在您的当前目录中创建一个目录。该目录knox-{VERSION}将考虑您的{GATEWAY_HOME}
3.3启动knox
3.3.1 启动嵌入在 Knox 中的 LDAP
Knox 带有一个用于演示目的的 LDAP 服务器。注意:如果用于提取 Tar 或 tar.gz 文件内容的工具无法使 bin 目录中的文件可执行
cd {GATEWAY_HOME}
bin/ldap.sh start
3.3.2创建主密钥
运行knoxcli.sh create-master命令以保留用于保护网关实例的密钥和凭证存储的主密钥。
cd {GATEWAY_HOME}
bin/knoxcli.sh create-master
CLI 将提示您输入主密码(即密码)。
3.3.3启动knox
可以使用提供的 shell 脚本启动网关。
服务器将在启动期间发现持久的主密钥并完成演示安装的设置过程。演示安装将包含一个 Knox 网关实例和 localhost 的身份证书。这将要求客户端在同一台机器上或关闭主机名验证。有关更多涉及的部署,请参阅本文档的 Knox CLI 部分以获取其他配置选项,包括为特定主机名创建自签名证书的能力。
cd {GATEWAY_HOME}
bin/gateway.sh start
当以这种方式启动网关时,进程将在后台运行。日志文件将被写入,{GATEWAY_HOME}/logs进程 ID 文件 (PID) 将被写入{GATEWAY_HOME}/pids.
要停止使用脚本启动的网关,请使用以下命令:
cd {GATEWAY_HOME}
bin/gateway.sh stop
4.knox代理hadoopUI
目标:使用apache Knox作为代理网关,实现对于hadoop集群中web ui(hdfsUI、yarnUI、jobhistoryUI)的代理访问。
主要操作步骤如下:
- step 1:定制需要代理的{cluster_name}拓扑文件
- step 2:修改{KNOX_HOME}/conf/topologies/{cluster_name}.xml文件
- step 3:修改{KNOX_HOME}/conf/gateway-site.xml文件
- step 4:修改默认用户密码
- step 5:重启knox服务
下面具体介绍各个步骤的操作:
step 1:定制需要代理的{cluster_name}拓扑文件
# 进入topologies目录
cd {KNOX_HOME}/conf/topologies
# 拷贝sandbox.xml文件,自定义为{cluster_name}.xml拓扑文件
cp sandbox.xml {cluster_name}.xml
step 2:修改{KNOX_HOME}/conf/topologies/{cluster_name}.xml文件
修改并添加HDFSUI代理:
<service>
<role>HDFSUI</role>
<url>http://{active_namenode}:50070</url>
</service>
修改并添加YARNUI代理:
<service>
<role>YARNUI</role>
<url>http://{active_RM}:8088</url>
</service>
添加JOBHISTORYUI代理:
<service>
<role>JOBHISTORYUI</role>
<url>http://{jobHistory}:19888</url>
</service>
step 3:修改{KNOX_HOME}/conf/gateway-site.xml文件
修改gateway.dispatch.whitelist.services配置项,确认删除DATANODE、HDFSUI、YARNUI、JOBHISTORYUI
<property>
<name>gateway.dispatch.whitelist.services</name>
<value>HBASEUI,NODEUI,knoxauth</value>
<description>The comma-delimited list of service roles for which the gateway.dispatch.whitelist should be applied.</description>
</property>
step 4:修改默认用户密码
knox自带的ldap中,默认包含有guest、admin、tom、sam四个测试用户,其默认密码为“{username}-password”。为防范弱密码风险,请修改配置文件中默认的用户免密。
vim {KNOX_HOME}/conf/users.ldif
在users.ldif文件中,找到对应用户所在的DN记录,修改“userPassWord”项。
ps:请务必确保修改了guest、admin、tom、sam四个用户的默认密码。
step 5:重启knox服务
#重启knox服务
cd {KNOX_HOME}
bin/gateway.sh stop
bin/ldap.sh stop
bin/ldap.sh start
bin/gateway.sh start
knox代理访问HDFSUI:
https://{knox_host}:8443/gateway/{cluster_name}/hdfs?host=http://<active_NN>:50070
knox代理访问YARNUI:
https://{knox_host}:8443/gateway/{cluster_name}/yarn
knox代理访问jobhistoryUI:
https://{knox_host}:8443/gateway/{cluster_name}/jobhistory
knox代理访问sparkhistory:
https://{knox_host}:8443/gateway/{cluster_name}/sparkhistory
knox代理访问flink dashboard:
https://{knox_host}:8443/gateway/{cluster_name}/flink/#/overview
注意:查看以上knox网关代理时,会提示输入用户和密码。请使用修改后的用户和密码登录。