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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM