🔍 登录 注册

Apache Knox的使用,提供安全的Hadoop集群访问

大 大苹果 2024-07-20 algorithm 👁 42 ⏱ 5min

Apache Knox的使用,提供安全的Hadoop集群访问

什么是Apache Knox

Apache Knox是一个REST API网关,旨在为Hadoop生态系统提供统一且安全的访问点。它通过对Hadoop集群中的各种服务(如HDFS、YARN、Hive、HBase等)进行代理和保护,实现认证、授权、审计和HTTP安全的功能。

Apache Knox的安装

环境准备

  • 操作系统:建议使用Linux(如CentOS、Ubuntu等)。
  • Java:需要安装Java JDK 1.8或更高版本。
  • Hadoop集群:已经配置好的Hadoop集群。

安装步骤

  1. 下载Apache Knox

    从Apache Knox官网或Apache镜像下载Knox安装包:

    wget https://downloads.apache.org/knox/1.6.0/knox-1.6.0.zip
    
  2. 解压安装包

    解压下载的Knox安装包:

    unzip knox-1.6.0.zip
    cd knox-1.6.0
    
  3. 配置环境变量

    配置Knox的环境变量:

    export KNOX_HOME=$(pwd)
    export PATH=$KNOX_HOME/bin:$PATH
    
  4. 初始化Knox

    初始化Knox的配置和密钥库:

    knox setup
    

配置Apache Knox

配置顶级域名

  1. 编辑topologies文件

    在$KNOX_HOME/conf/topologies目录下,创建或编辑一个顶级域名文件(例如:sandbox.xml):

    <topology>
      <gateway>
        <provider>
          <role>authentication</role>
          <name>ShiroProvider</name>
          <enabled>true</enabled>
          <param>
            <name>main.ldapRealm</name>
            <value>org.apache.hadoop.gateway.shirorealm.KnoxLdapRealm</value>
          </param>
          <param>
            <name>main.ldapRealm.userDnTemplate</name>
            <value>uid={0},ou=users,dc=hadoop,dc=apache,dc=org</value>
          </param>
          <param>
            <name>main.ldapContextFactory</name>
            <value>org.apache.hadoop.gateway.shirorealm.KnoxLdapContextFactory</value>
          </param>
          <param>
            <name>main.ldapContextFactory.url</name>
            <value>ldap://localhost:33389</value>
          </param>
          <param>
            <name>main.ldapContextFactory.systemUsername</name>
            <value>uid=admin,ou=system</value>
          </param>
          <param>
            <name>main.ldapContextFactory.systemPassword</name>
            <value>secret</value>
          </param>
        </provider>
      </gateway>
      <service>
        <role>WEBHDFS</role>
        <url>https://namenode:50070/webhdfs/v1</url>
      </service>
    </topology>
    
  2. 配置安全性

    编辑knox.home/conf/ldap-log4j.properties,配置LDAP连接和认证信息。

启动Knox Gateway

  1. 启动Knox

    启动Knox Gateway:

    knox start
    
  2. 验证启动

    通过浏览器访问https://<gateway-host>:8443/gateway/sandbox,验证Knox Gateway是否正常运行。

使用Knox进行安全访问

访问HDFS

  1. WebHDFS访问

    使用Knox Gateway访问WebHDFS:

    curl -ku admin:admin-password -X GET "https://<gateway-host>:8443/gateway/sandbox/webhdfs/v1/?op=LISTSTATUS"
    

访问其他Hadoop服务

  1. YARN

    使用Knox Gateway访问YARN:

    curl -ku admin:admin-password -X GET "https://<gateway-host>:8443/gateway/sandbox/ws/v1/cluster"
    
  2. Hive

    使用Knox Gateway访问Hive:

    beeline -u "jdbc:hive2://<gateway-host>:8443/knoxsso;ssl=true;sslTrustStore=/path/to/truststore;trustStorePassword=password" -n admin -p admin-password
    

高级配置

配置LDAP认证

  1. 配置Shiro

    编辑knox.home/conf/shiro.ini,配置LDAP认证:

    [main]
    ldapRealm = org.apache.hadoop.gateway.shirorealm.KnoxLdapRealm
    ldapRealm.contextFactory.url = ldap://localhost:389
    ldapRealm.userDnTemplate = uid={0},ou=people,dc=hadoop,dc=apache,dc=org
    ldapRealm.contextFactory.systemUsername = uid=admin,ou=system
    ldapRealm.contextFactory.systemPassword = secret
    

配置SSO

  1. 启用SSO

    在topologies文件中,配置SSO支持:

    <provider>
      <role>sso</role>
      <name>SSOProvider</name>
      <enabled>true</enabled>
      <param>
        <name>sso.token.ttl</name>
        <value>30000</value>
      </param>
    </provider>
    

总结

通过掌握Apache Knox的基本安装与配置方法,以及如何使用Knox进行安全的Hadoop集群访问,你可以为Hadoop生态系统提供一个统一的安全访问入口。Knox的认证、授权和审计功能,使其成为大数据环境中实现安全管理的理想选择。

读完了?给作者一点支持

本文采用 CC BY 4.0 协议转载 · © 大苹果

评论(0)

登录 后参与评论。

  • 还没有评论,来抢沙发。

🔗 相关文章

动态规划从入门到进阶:状态设计与空间优化的完整方法论

从暴力递归到记忆化与递推,覆盖背包、区间、状态压缩等模型,给出动态规划状态设计与空间优化的完整方法论。

21 天前👍 0

Go 排序算法实战:从冒泡到 TimSort 的复杂度与工程取舍

用 Go 实现九种经典排序,剖析复杂度、稳定性与适用场景,并拆解标准库 sort 背后的 introsort 工程取舍。

21 天前👍 0

RabbitMQ 标准队列

RabbitMQ 标准队列(Classic Queue)是消息传递系统中最基本的队列类型,消息按先进先出(FIFO)的顺序存储和传递。以下是标准队列的常见应用场景和详细说明: ### 1. **任务队列(Task Queue)** - **场景描述**:在后台处理任务时,如图像处理、视频转码、数据分析等,需要将任务分配给多个工作节点进行处理,避免阻塞主应用。 - **应用说明**:在任务队列中,每个任务都会被推送到 RabbitMQ 的标准队列中,多个消费者从队列中获取任务并处理,任务处理完毕后删除队列中的消息。 - **举例**: - **应用**:电商网站后台处理订单数据,如生成发货单、发送确认邮件等。这些任务可以异步处理,以提高系统的响应速度。 - **代码示例(Node.js)**: ```javascript // 生产者:将任务添加到队列 const amqp = require('amqplib/callback_api'); amqp.connect('amqp://localhost', func

2024/8/11👍 0