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