zoukankan      html  css  js  c++  java
  • CDH安装之篇四:启用Kerberos认证(转发)

    https://my.oschina.net/epoch/blog/1634325

    启用Kerberos认证

    •          安装Kerberos

    •          安装配置master KDC/Kerberos Server

    注:Kerberos Server可以是任意一台Hadoop集群网络相同的主机

    1、安装KDC所需软件krb5-server、krb5-workstation

    yum install krb5-libs krb5-server krb5-workstation

    通过命令查看安装列表rpm -qa|grep krb5

    2、软件安装完成后,首先配置/etc/krb5.conf文件。

    [libdefaults]

    default_realm = EXAMPLE.COM      #此处需要进行配置,把默认的EXAMPLE.COM修改为自己要定义的值

    [realms]

    EXAMPLE.COM ={     

    kdc = kerberos.example.com                #此处配置的为主机名

    admin_server = kerberos.example.com       #同上

    }

    3、配置/var/kerveros/krb5kdc/kdc.conf文件

    注意:

    [realms]

    EXAMPLE.COM = {

    #master_key_type = aes256-cts

    acl_file = /var/kerberos/krb5kdc/kadm5.acl

    dict_file = /usr/share/dict/words

    admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab

    supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal

    }

    此处为EXAMPLE.COM与/etc/krb5.conf中的配置保持一致。

    4、创建Kerberos数据库

    此步可能用时较长,创建完成会在/var/kerberos/krb5kdc/下面生成一系列文件。并且会提示输入数据库管理员的密码。

    kdb5_util create -r EXAMPLE.COM -s

    其他操作:

    删除Kerberos数据库,若重建数据库会先删除/var/kerberos/krb5kdc下面principal相关文件:

    kdb5_util -r EXAMPLE.COM destroy

    5、创建管理员并输入密码【admin】。kadmin.local可以直接运行在KDC上,而无需通过Kerberos认证。

    /usr/sbin/kadmin.local -q "addprinc admin/admin"【admin】

    给数据库管理员添加ACL权限,修改kadm5.acl文件,*代表全部权限

     cat /var/kerberos/krb5kdc/kadm5.acl

    6、设置kerberos服务为开机启动,关闭防火墙

    chkconfig krb5kdc on

    chkconfig kadmin on

    chkconfig iptables off

    7、启动krb5kdc和kadmind进程

    /usr/sbin/kadmind

    /usr/sbin/krb5kdc

    service krb5kdc start

    service kadmin start

    service krb5kdc status

    8、检查Kerberos正常运行

    kinit admin/admin

    9、使用admin登陆Kerberos

    kinit admin/admin@EXAMPLE.COM【初始化证书】

    klist         【查看当前证书】

    10、使用kadmin.local工具,创建用户,并使用命令listprincs查看用户是否已经创建成功。

    11、使用管理员为用户创建keytab认证文件

    kadmin下执行

    addprinc -randkey test@EXAMPLE.COM

    xst -k service.keytab test

    默认生成目录为/tmp/

    查看keytab文件

    klist –k -t /etc/security/service.keytab

    直接执行

    ktadd -k /root/wangjy.keytab -norandkey wangjy@HADOOP.COM

    此keytab文件相当于该用户的长期密钥,可用于在任意主机上进行账号认证。

    12、使用管理员删除用户

    kadmin下执行

    delprinc -force wangjy@HADOOP.COM

    •          安装idap客户端

    yum install openldap-clients

    •          安装Kerberos Client

    集群中的其他主机安装Kerberos Client:

    yum install krb5-libs krb5-server krb5-workstation

    •          开启Hadoop环境的Kerberos认证

    注:以下步骤仅仅针对CDH5.5.X版本的Hadoop

    •          基础环境

    1.配置好KDC及其域

    2.在Cloudera Manager Server主机安装openldap-clients

    3.在Hadoop集群其他节点安装krb5-workstation, krb5-libs

    4.KDC所在主机/var/kerberos/krb5kdc/kdc.conf添加如下配置信息

    max_life = 1d 

    max_renewable_life = 7d

    kdc_tcp_ports = 88

    5.如果开启了YARN-HA,需要清空Zookeeper中的相关状态:

    停止YARN,格式化State Store。可通过Cloudera Manager页面进行操作。

    •          安装步骤

    1.启用条件:

    设置正在运行的 KDC。Cloudera Manager 支持 MIT KDC 和 Active Directory。

    KDC 应配置为拥有非零票证生存期和可更新的生存期。如果票证不可更新,则 CDH 不能正常工作。

    如果想使用 Active Directory,OpenLdap 客户端库应安装在 Cloudera Manager Server 主机中。另外,Kerberos 客户端库应安装在所有主机中。

    以上条件全部确认后,勾选是的,并进入下一步。

    2.KDC信息

    3.KRB5配置

    是否部署krb5.conf到集群中每个节点

    4.导入KDC账户管理票证

    5.配置HDFS Datanode端口

    6.启动成功

    •          可能发生的错误

    1、Communication failure with server while initializing kadmin interface

    原因:

    为管理服务器指定的主机(也称为主 KDC)没有运行 kadmind 守护进程。

    解决方法:

    请确保为主 KDC 指定正确的主机名。如果指定了正确的主机名,请确保 kadmind 正在指定的主 KDC 上运行。

    •          关闭Kerberos认证

    •          关闭步骤

    1.修改hdfs配置core-site.xml

    hadoop.security.authentication -> Simple

    hadoop.security.authorization -> false

    dfs.datanode.address -> from 1004 (for Kerberos) to 50010 (default)

    dfs.datanode.http.address -> from 1006 (for Kerberos) to 50075 (default)

    2.hbase配置

    hbase.security.authentication -> simple

    hbase.security.authorization -> false

    3.zookeeper配置

    enableSecurity-> false

    4.Hue配置

    删除Kerberos Ticket Renewer实例

    •          可能发生的错误

     datanodes无法启动

    异常信息:

    java.io.IOException: Failed on local exception: java.net.SocketException: Permission denied; Host Details : local host is: "xxxxx"; destination host is: (unknown)

    解决方法:

    将datanode的dfs.datanode.address恢复为50010,dfs.datanode.http.address恢复为50075。

    Yarn中namenode都是standby状态

    •          开发机器连接Kerberos

    •          Windows

    1.        配置环境变量:USERDNSDOMAIN=HADOOP.COM

    2.        修改mapred.properties

    #kerberos认证配置

    hadoop.security.authentication=kerberos

    #kerberos.file.path=/etc/krb5.conf

    kerberos.file.path=E:/etc/security/keytab/krb5.conf

    hdfs.user=hdfs

    #mapreduce认证用户

    dfs.client.kerberos.principal=hebei@HADOOP.COM

    dfs.client.keytab.file=/etc/security/keytab/hebei.keytab

    #hive认证用户

    hive.dfs.client.kerberos.principal=hiveuser/secsight-nn01@HADOOP.COM

    hive.dfs.client.keytab.file=E:/etc/security/keytab/hiveuser.keytab

    FAQ

    •          取消权限控制

    Hadoop文件系统(HDFS)是有权限控制,与Linux权限类似,如果是测试环境找到dfs.permissions,取消此项中的勾选

    注:生产环境必须使用有权限控制的HDFS

    •          文件备份修改

    Hadoop文件系统(HDFS)默认是将数据备份三份,以保证Hadoop的可靠性,如果是测试环境或硬盘容量较小的话,可以找到dfs.replication配置,修改备份数(此数字是大于0的整数)

    注:生产环境必须使用三份以上的备份,视数据及硬盘容量而定

    •          Hadoop文件系统(HDFS)空间不足,增加空间

    Hadoop文件系统(HDFS)中空间不足,会导致MR、Hive等程序出错,需要对Hadoop集群中每台设备增加存储,操作系统挂载新存储后要对Hadoop中某些组件配置进行修改。

    在CM管理页面(主节点7180端口),点击HDFS进入HDFS页面后,点击配置:

    搜索dfs.datanode.data.dir配置项,点击“+”,增加新的存储目录/newdisk1/dfs/dn

    搜索hadoop.log.dir配置项,将原目录修改为新的存储目录/newdisk1/var/log/hadoop-mapreduce

    在CM管理页面(主节点7180端口),点击YARN进入YARN页面后,点击配置,依次搜索下面配置项,并修改为新的存储目录:

    配置项:yarn.nodemanager.local-dirs      存储目录:/newdisk1/yarn/nm

    配置项:yarn.nodemanager.log-dirs        存储目录:/newdisk1/var/log/hadoop-yarn/container

    配置项:hadoop.log.dir         存储目录:/newdisk1/var/log/hadoop-yarn

    配置项:hadoop.log.dir         存储目录:/newdisk1/var/log/hadoop-yarn

    •          在安装过程中出错,或者中断,想从头再来安装的,可执行下面的一些操作:

    master节点:关闭server、agent

       /opt/cm-5.5.0/etc/init.d/cloudera-scm-server stop

       /opt/cm-5.5.0/etc/init.d/cloudera-scm-agent stop

       rm -rf /opt/cloudera/parcel-cache

       rm -rf /opt/cloudera/parcel-parcels

    清除数据库:

    drop database scm;

    重建数据库:

    CREATE DATABASE scm OWNER scm ENCODING 'UTF8';

    slave节点:关闭agent

     /opt/cm-5.5.0/etc/init.d/cloudera-scm-agent stop

     rm -rf /opt/coudera

    重启服务:

    master节点:开启server、agent

       /opt/cm-5.5.0/etc/init.d/cloudera-scm-server start

       /opt/cm-5.5.0/etc/init.d/cloudera-scm-agent start

    slave节点:开启agent

    /opt/cm-5.5.0/etc/init.d/cloudera-scm-agent start

  • 相关阅读:
    IDL读取TXT文件并写入二维数组中【转】
    远程连接ArcSDE
    Silverlight项目启动出现System.NullReferenceException未将对象引用到对象实例
    ENVI扩展工具:HDF5 Browser
    READF: End of file encountered. Unit: 100
    ENVI4.8下从两幅分类结果的栅格图中计算土地利用类型转换矩阵
    IDL中去掉数组中相同的元素方法
    利用IDL程序自动添加ENVI菜单【转】
    WIN7远程桌面连接知识
    对COM组件的调用返回了错误"HRESULT E_FAIL”的错误分析(c#与IDL混合编程)转
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/13601442.html
Copyright © 2011-2022 走看看