侧边栏壁纸
博主头像
jack

日拱一卒无有尽,功不唐捐终入海

  • 累计撰写 25 篇文章
  • 累计创建 13 个标签
  • 累计收到 6 条评论

目 录CONTENT

文章目录

Hadoop集成Knox网关

jack
2023-03-17 / 2 评论 / 0 点赞 / 701 阅读 / 1,502 字 / 正在检测是否收录...

官网地址

用户指南-点我

注意!!! 太坑了, 可以先不看这个,等Knox全部配置好启动再回来看这个坑
按照官网说的 NameNode UI 地址模板: https://knox:8443/gateway/bdha/hdfs/explorer.html# 这个地址对于hadoop3.x不行的,会报错,日志如下

 PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

应该是 : https://knox:8443/gateway/bdha/hdfs/explorer.html/?host=http://master:9870#

目前官网文档关于Hadoop3.x 版本 NameNode UI访问地址的说明 是过时了
浏览了很多的issues(官方文档也看了很多遍,以为是自己配置问题,最后怀疑是bug ) ,找到了官方的解释,也给出了上面的方案: 点我去看

最后官方说将在2.1.0版本进行修改和发布(用是可以用,只是影响了体验)

安装LDAP客户端

apache官方下载地址 : 官方地址下载
对jdk版本有要求,我的电脑是jdk8,下载2021版本 亲测是需要jdk11支持
官网下载慢的话,点我直接下载

安装Knox2.0.0

点我下载knox

备注: knox2.0.0安装包内置一个LDAP服务端用来做测试用的

解压到相关目录

我是在/opt/bigdata/knox/ 下解压的,解压后的完整目录是/opt/bigdata/knox/knox-2.0.0

unzip knox-2.0.0.zip

配置和启动

环境变量设置

export GATEWAY_HOME=/opt/bigdata/knox/knox-2.0.0
export PATH=$PATH:$GATEWAY_HOME/bin:$PATH

启动 knox内置的 LDAP服务端

ldap.sh start

先使用前面安装的ldap客户端连接knox内置的ldap客户端

客户端连接使用如下,目前使用knox内置的admin账户
image-1679123514680


image-1679123774995


DN : uid=admin,ou=people,dc=hadoop,dc=apache,dc=org
password: admin-password

image-1679123863838

备注: 如何查看Knox内置的LDAP账户和密码呢? 使用如下命令

cat /opt/bigdata/knox/knox-2.0.0/conf/users.ldif

image-1679124219954


创建master key

创建master key以保护knox实例里保存的key和credential

knoxcli.sh create-master

image-1679038108034


新建bdha.xml

在/opt/bigdata/knox/knox-2.0.0/conf/topologies 目录下,新建bdha.xml文件,bdha是我Hadoop集群的名字,bdha是网关url的一部分,注意下面关于bdha、knox(这个是我knox服务主机的hostname)、其他端口改成自己的

<?xml version="1.0" encoding="UTF-8"?>
<topology>
   <uri>https://knox:8443/gateway/bdha</uri>
   <name>bdha</name>
   <timestamp>1679161274000</timestamp>
   <generated>false</generated>
   <redeployTime>0</redeployTime>
   <gateway>
      <provider>
         <role>authentication</role>
         <name>ShiroProvider</name>
         <enabled>true</enabled>
        <!--  这个是session可以设置长一点, 单位是分钟  -->
         <param>
            <name>sessionTimeout</name>
            <value>10080</value>
         </param>
         <param>
            <name>main.ldapRealm</name>
            <value>org.apache.knox.gateway.shirorealm.KnoxLdapRealm</value>
         </param>
         <param>
            <name>main.ldapContextFactory</name>
            <value>org.apache.knox.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://knox:33389</value>
         </param>
         <param>
            <name>main.ldapRealm.contextFactory.authenticationMechanism</name>
            <value>simple</value>
         </param>
         <param>
            <name>urls./**</name>
            <value>authcBasic</value>
         </param>
      </provider>
      <provider>
         <role>identity-assertion</role>
         <name>Default</name>
         <enabled>true</enabled>
      </provider>
      <provider>
         <role>hostmap</role>
         <name>static</name>
         <enabled>true</enabled>
         <param>
            <name>localhost</name>
            <value>sandbox,sandbox.hortonworks.com</value>
         </param>
      </provider>
   </gateway>
   
   <service>
      <role>HDFSUI</role>
      <url>http://master:9870</url>
      <url>http://slave1:9870</url>
   </service>
   
   <service>
      <role>NAMENODE</role>
      <url>hdfs://master:9000</url>
      <url>hdfs://slave1:9000</url>
   </service>
   
   <service>
      <role>WEBHDFS</role>
      <url>http://master:9870/webhdfs</url>
      <url>http://slave1:9870/webhdfs</url>
   </service>
   
   <service>
      <role>RESOURCEMANAGER</role>
      <url>http://master:8088/ws</url>
      <url>http://slave1:8088/ws</url>
   </service>
   
   <service>
      <role>YARNUI</role>
      <url>http://master:8088</url>
      <url>http://slave1:8088</url>
   </service>
   
</topology>

配置knox的白名单

修改/opt/bigdata/knox/knox-2.0.0/conf/gateway-site.xml
image-1679069331165

在上面我把knox主机加入了白名单(自己电脑的host配置的knox指向192.168.237.140)

<value>^https?:\/\/(localhost|knox|master|slave1|slave2|127\.0\.0\.1|0:0:0:0:0:0:0:1|::1):[0-9].*$</value>

启动Knox网关,

不能以root账号启动,这里还是以bigdata为例

chown -R bigdata:bigdata /opt/bigdata/knox
sudo chmod -R 775 /opt/bigdata/knox

执行下面命令启动(注意:我这里配置了环境变量,可以直接启动,不用到具体目录下)

gateway.sh start

访问验证

HDFSUI 访问

下面这个地址访问NameNode UI 是不行的, 可以回到本文最开始的地方去了解一下

https://knox:8443/gateway/bdha/hdfs

应该使用下面的地址,用户名和密码可以使用Knox内置的LDAP :admin账户

https://knox:8443/gateway/bdha/hdfs/dfshealth.html?host=http://master:9870#tab-overview

这是默认的密码,使用如下命令查看

cat  /opt/bigdata/knox/knox-2.0.0/conf/users.ldif

image-1679064863162

访问Yarn UI

https://knox:8443/gateway/bdha/yarn

访问Knox的admin界面

https://knox:8443/gateway/manager/admin-ui/

image-1679169771311

访问Knox Home页面

https://knox:8443/gateway/homepage/home/

自建LDAP服务器(使用FreeIPA)、集成Ranger

目前已经完成,Hadoop大数据安全体系全部实践文章请查看:https://www.tobehacker.com/archives/bigdata-security-practice-article-collection

0

评论区