首页 > 其他分享 >Hadoop-3.3.5单节点开启Kerberos认证

Hadoop-3.3.5单节点开启Kerberos认证

时间:2023-06-02 17:48:01浏览次数:47  
标签:hdfs keytab COM Kerberos Hadoop dfs 3.3 node1 root

1、Hadoop单节点部署

部署过程看官方文档即可

https://hadoop.apache.org/

为增加执行命令的便利性,添加hadoop的环境变量:

vim /etc/profile.d/hadoop.sh

export HADOOP_HOME=/usr/local/hadoop-3.3.5
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export JAVA_HOME=/usr/java/jdk1.8.0_121

2、Kerberos认证服务部署

看这里:https://www.cnblogs.com/zhangzhide/p/17452093.html

3、编辑hadoop core-site.xml文件

<configuration>

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://0.0.0.0:9000</value>
    </property>

    <!-- 开启安全验证 -->
    <property>
        <name>hadoop.security.authentication</name>
        <value>kerberos</value>
    </property>
    <property>
        <name>hadoop.security.authorization</name>
        <value>true</value>
    </property>

</configuration>

4、在Kerberos上创建认证凭据

kadmin.local -q "addprinc -randkey root/[email protected]"
kadmin.local -q "addprinc -randkey HTTP/[email protected]"
# 这地方为什么要创建root/node1凭据呢?是因为默认hadoop hdfs的属主是root。创建非root用户,恐怕会报权限不足,亲测当时是直接报错。
[root@node1 ~]# hdfs dfs -ls -d hdfs://127.0.0.1:9000/
drwxr-xr-x   - root supergroup          0 2023-05-30 16:41 hdfs://127.0.0.1:9000/

5、创建认证凭据文件

1) 创建认证凭证文件
kadmin.local -q "xst -k hdfs-unmerged.keytab root/[email protected]"
kadmin.local -q "xst -k HTTP.keytab HTTP/[email protected]"
# 会在当前目录下生成hdfs-unmerged.keytab和HTTP.keytab两个文件
2)合并keytab文件
[root@node1 kerberos]# ktutil
ktutil:  rkt hdfs-unmerged.keytab
ktutil:  rkt HTTP.keytab
ktutil:  wkt hdfs.keytab
ktutil:  q
# 会在当前目录下生成hdfs.keytab的文件,这个就是最终的凭证。

  最后,将生成的hdfs.keytab文件放到某个目录下,比如/usr/local/hadoop-3.3.5/etc/,hdfs-site.xml文件要用到。

6、编辑hadoop hdfs-site.xml文件

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>

<!--kerberos security-->
    <property>
        <name>dfs.block.access.token.enable</name>
        <value>true</value>
    </property>

    <property>
        <name>dfs.datanode.data.dir.perm</name>
        <value>700</value>
    </property>

    <property>
        <name>dfs.namenode.keytab.file</name>
        <value>/usr/local/hadoop-3.3.5/etc/hdfs.keytab</value>
    </property>

    <property>
        <name>dfs.namenode.kerberos.principal</name>
        <value>root/[email protected]</value>
    </property>

    <property>
        <name>dfs.namenode.kerberos.https.principal</name>
        <value>HTTP/[email protected]</value>
    </property>

    <property>
        <name>dfs.datanode.keytab.file</name>
        <value>/usr/local/hadoop-3.3.5/etc/hdfs.keytab</value>
    </property>

    <property>
        <name>dfs.datanode.kerberos.principal</name>
        <value>root/[email protected]</value>
    </property>

    <property>
        <name>dfs.datanode.kerberos.https.principal</name>
        <value>HTTP/[email protected]</value>
    </property>

    <property>
        <name>dfs.datanode.address</name>
        <value>0.0.0.0:1004</value>
    </property>

    <property>
        <name>dfs.datanode.http.address</name>
        <value>0.0.0.0:1006</value>
    </property>

<!--webHDFS security-->

    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>

    <property>
        <name>dfs.web.authentication.kerberos.keytab</name>
        <value>/usr/local/hadoop-3.3.5/etc/hdfs.keytab</value>
    </property>

    <property>
        <name>dfs.web.authentication.kerberos.principal</name>
        <value>HTTP/[email protected]</value>
    </property>

</configuration>

7、拿生成的hdfs.keytab文件验证

用命令klist确认没有缓存的凭证。如果有就删除重新获取。
[root@node1 etc]# klist
klist: No credentials cache found (filename: /tmp/krb5cc_0)
[root@node1 etc]# kinit -k -t hdfs.keytab root/[email protected]
[root@node1 etc]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: root/[email protected]

Valid starting       Expires              Service principal
2023-06-02T17:23:36  2023-06-03T17:23:36  krbtgt/[email protected]

8、启动hdfs服务

# 由于我加了环境变量,因此在任何目录下都能执行start-dfs.sh。
start-dfs.sh
# 监听NameNode9000端口和9870 HTTP web端口。

9、验证测试

[root@node1 etc]# hdfs dfs -ls hdfs://127.0.0.1:9000/
Found 1 items
drwxr-xr-x   - root supergroup          0 2023-05-30 16:42 hdfs://127.0.0.1:9000/user
# 这是我验证通过后的结果,当用"kdestroy"命令删除当前认证的缓存时,再执行hdfs dfs -ls hdfs://127.0.0.1:9000/时就会报认证错误。 

 

标签:hdfs,keytab,COM,Kerberos,Hadoop,dfs,3.3,node1,root
From: https://www.cnblogs.com/zhangzhide/p/17452518.html

相关文章

  • Hadoop伪分布式安装
    Hadoop伪分布式安装安装环境:Centos7.5,只少2核4G提前准备:Linux中要安装JDK8,Zookeeper-3.5.71.关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld2.修改主机名Hadoop集群中,主机名中尽量不要出现-或者_vim/etc/hostname将原来的主机名删除,添加自己指定的主机名3......
  • Hadoop伪分布式安装
    Hadoop伪分布式安装安装环境:Centos7.5,只少2核4G提前准备:Linux中要安装JDK8,Zookeeper-3.5.71.关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld2.修改主机名Hadoop集群中,主机名中尽量不要出现-或者_vim/etc/hostname将原来的主机名删除,添加自己指定的主机名3......
  • Hadoop伪分布式安装
    Hadoop伪分布式安装安装环境:Centos7.5,只少2核4G提前准备:Linux中要安装JDK8,Zookeeper-3.5.71.关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld2.修改主机名Hadoop集群中,主机名中尽量不要出现-或者_vim/etc/hostname将原来的主机名删除,添加自己指定的主机名3......
  • Hadoop伪分布式安装
    Hadoop伪分布式安装安装环境:Centos7.5,只少2核4G提前准备:Linux中要安装JDK8,Zookeeper-3.5.71.关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld2.修改主机名Hadoop集群中,主机名中尽量不要出现-或者_vim/etc/hostname将原来的主机名删除,添加自己指定的主机名3.需......
  • 23.3.27-4.2 每周总结
    本周的学习任务依然是每天的javaweb学习、mysql、Android开发学习以及后期的课程复习任务。在javaweb学习方面,我学习了Spring框架的使用和AOP编程等内容;在MySQL方面,我学习了事务的隔离级别和存储引擎的对比使用;在Android开发方面,我学习了多线程编程的方法。在后期的课程复习任务方......
  • 通过实例了解vue3.3更新的特征
    开场白5月份,vue团队发布了vue3.3.这次小版本的发布主要解决了--Vue与TypeScript一起使用时的许多长期存在的痛点.下面我们一起来学习一下vue3.3新特征准备新新特征的环境根据官方团队的描述,我们需要准备一下工作。vue升级到3.3时,建议同时更新以下依赖项:Volar/vue......
  • flink安装(无hadoop)
    下载Flink:访问Flink的官方网站(https://flink.apache.org/),在下载页面找到适合你操作系统的预编译二进制包。选择与你的操作系统和版本相对应的下载链接,点击下载。解压二进制包:下载完成后,将二进制包解压到你想要安装Flink的目录中。你可以使用命令行工具(如tar命令)(没动)配置环......
  • hadoop 生态环境
     HDFS角色及概念hadoop体系中数据存储管理的基础,是一个高度蓉错的系统,用于在低成本的通用硬件上运行  角色和概念—Client—NameNode—Secondarynode —Datanode NameNode—Master节点,管理HDFS的(名称空间和数据块映射信息)就是fsimag,(......
  • 【博学谷学习记录】超强总结,用心分享 | Hadoop
    【博学谷IT技术支持】一、介绍概念Apache™Hadoop®项目为可靠、可扩展的分布式计算开发开源软件。允许简单的编程模型在大量计算机集群上对大型数据集群进行分布式处理。项目包含以下模块:Common:支持其他hadoop模块的通用实用程序HDFS(分布式文件系统):可提供对应用程......
  • hadoop-2.9.2集群安装
     curlhttp://10.99.67.4:8000/apache-hive-2.3.9-bin.tar.gz-oapache-hive-2.3.9-bin.tar.gzcurlhttp://10.99.67.4:8000/apache-zookeeper-3.5.7-bin.tar.gz-oapache-zookeeper-3.5.7-bin.tar.gzcurlhttp://10.99.67.4:8000/flink-1.14.5-bin-scala_2.12.tgz-ofli......