E-MapReduce集群中HDFS服务集成Kerberos
master节点执行:
sudo yum install krb5-server krb5-devel krb5-workstation -y
slave节点执行:
sudo yum install krb5-devel krb5-workstation -y2. 配置Kerberos master节点上面修改配置:
a) /etc/krb5.conf
备注: 配置中emr-header-1.cluster-xxxx替换成自己集群的hostname
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = EMR.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] EMR.COM = { kdc = emr-header-1.cluster-xxxx admin_server = emr-header-1.cluster-xxxx [domain_realm] .emr.com = EMR.COM emr.com = EMR.COM
b) /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] EMR.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 }
c) /var/kerberos/krb5kdc/kadm5.acl
*/admin@EMR.COM *slave节点修改配置
只需将上面master节点修改过的/etc/krb5.conf文件拷贝到slave节点对应文件夹即可。 3. 创建数据库
在master节点上面执行:
sudo kdb5_util create -r EMR.COM -s
备注:
若出现Loading random data卡住(需要等一会),可以另外开一个终端执行一些耗费cpu的操作,增加随机数采集
在master节点执行:
sudo service krb5kdc start sudo service kadmin start5. 创建kadmin管理员账号
在master节点root账号上面执行
$kadmin.local #进入kadmin后继续执行: $addprinc root/admin #输入密码,记住后面执行kadmin时需要输入
后续可以在所有集群所有节点上使用kadmin命令来管理Kerberos的一些数据库操作(如添加principal等)
备注:
kadmin.local只能在kadmin server所在的机器(即master节点)且拥有root权限情况下才能执行,其它情况使用kadmin
在集群的每个节点上面创建对应的keytab文件,用于HDFS服务各个Daemon(如NameNode/DataNode等)之间的身份认证,防止非法的节点加入集群。
E-MapReduce集群中的HDFS的所有Daemon都是在hdfs账号下启动,所以各个Daemon使用共用相同的keytab配置。
接下来分别在集群的每台机器上面分别执行下面命令:
以master节点为例,其它节点按照同样的方式操作
$sudo su hdfs $hostname emr-header-1.cluster-xxxx #后面需要使用hostname $sudo kadmin #输入密码,进入kadmin后执行 # principal使用了上面的hostname即emr-header-1.cluster-xxxx $kadmin: addprinc -randkey hdfs/emr-header-1.cluster-xxxx@EMR.COM $kadmin: addprinc -randkey HTTP/emr-header-1.cluster-xxxx@EMR.COM $kadmin: xst -k hdfs-unmerged.keytab hdfs/emr-header-1.cluster-xxxx@EMR.COM $kadmin: xst -k http.keytab HTTP/emr-header-1.cluster-xxxx@EMR.COM $kadmin: exit #合并http.keytab和hdfs-unmerged.keytab $sudo ktutil #进入ktutil后执行: $ktutil: rkt hdfs-unmerged.keytab $ktutil: rkt http.keytab $ktutil: wkt hdfs.keytab $ktutil: exit #将hdfs.keytab拷贝到/etc/emr/hadoop-conf $sudo cp hdfs.keytab /etc/emr/hadoop-conf $sudo chown hdfs:hadoop /etc/emr/hadoop-conf/hdfs.keytab $sudo chmod 400 /etc/emr/hadoop-conf/hdfs.keytab2. 修改HDFS服务配置
HDFS服务集成Kerberos需要修改core-site.xml和hdfs-site.xml,如下:
备注: 集群所有节点都需要修改
a) core-site.xml
路径: /etc/emr/hadoop-conf/core-site.xml
使用hadoop账号来操作sudo su hadoop
添加如下配置项:
property name hadoop.security.authentication /name value kerberos /value !-- A value of "simple" would disable security. -- /property property name hadoop.security.authorization /name value true /value /property
修改如下配置项:
将value值master_host_name换成自己集群的master的hostname(如emr-header-1.cluster-xxx)
property name master_hostname /name value master_host_name /value /property
b) hdfs-site.xml
路径: /etc/emr/hadoop-conf/hdfs-site.xml
使用hadoop账号来操作sudo su hadoop
添加如下配置项:
!-- General HDFS security config -- property name dfs.block.access.token.enable /name value true /value /property !-- NameNode security config -- property name dfs.namenode.keytab.file /name value /etc/emr/hadoop-conf/hdfs.keytab /value !-- path to the HDFS keytab -- /property property name dfs.namenode.kerberos.principal /name value hdfs/_HOST@EMR.COM /value /property property name dfs.namenode.kerberos.internal.spnego.principal /name value HTTP/_HOST@EMR.COM /value /property !-- Secondary NameNode security config -- property name dfs.secondary.namenode.keytab.file /name value /etc/emr/hadoop-conf/hdfs.keytab /value !-- path to the HDFS keytab -- /property property name dfs.secondary.namenode.kerberos.principal /name value hdfs/_HOST@EMR.COM /value /property property name dfs.secondary.namenode.kerberos.internal.spnego.principal /name value HTTP/_HOST@EMR.COM /value /property !-- DataNode security config -- property name dfs.datanode.data.dir.perm /name value 700 /value /property property name dfs.datanode.keytab.file /name value /etc/emr/hadoop-conf/hdfs.keytab /value !-- path to the HDFS keytab -- /property property name dfs.datanode.kerberos.principal /name value hdfs/_HOST@EMR.COM /value /property !-- datanode SASL配置 -- property name dfs.http.policy /name value HTTPS_ONLY /value /property property name dfs.data.transfer.protection /name value integrity /value /property property name dfs.web.authentication.kerberos.principal /name value HTTP/_HOST@EMR.COM /value /property property name dfs.web.authentication.kerberos.keytab /name value /etc/emr/hadoop-conf/hdfs.keytab /value !-- path to the HTTP keytab -- /property3. 生成keystore文件
HDFS中使用HTTPS来传输数据,需要有keystore相关配置。
在master节点上面执行:
$sudo su hadoop #生成了ca相关文件 $openssl req -new -x509 -keyout ca-key -out ca-cert -days 1000
继续在master节点上重复按照如下命令,分别为集群所有节点生成keystore/truststore文件
备注: 每次为新节点重复执行,需要更换命令中的一些文件名称(防止被覆盖),下面以尖括号( )标出
# 以为master节点生成keystore/truststore为例 $keytool -keystore keystore -alias localhost -validity 1000 -genkey 输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [Unknown]: emr-header-1 #备注: 不同节点不一样,如emr-worker-1 您的组织单位名称是什么? [Unknown]: EMR 您的组织名称是什么? [Unknown]: EMR 您所在的城市或区域名称是什么? [Unknown]: EMR 您所在的省/市/自治区名称是什么? [Unknown]: EMR 该单位的双字母国家/地区代码是什么? [Unknown]: EMR CN=emr-worker-2, OU=EMR, O=EMR, L=EMR, ST=EMR, C=EMR是否正确? [否]: 是 输入 localhost 的密钥口令 (如果和密钥库口令相同, 按回车): $keytool -keystore truststore -alias CARoot -import -file ca-cert $keytool -keystore keystore -alias localhost -certreq -file cert-file #下面命令中your_pwd替换成自己的 $openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days 1000 -CAcreateserial -passin pass:your_pwd $keytool -keystore keystore -alias CARoot -import -file ca-cert $keytool -keystore keystore -alias localhost -import -file cert-signed
执行完上述命令后,将在当前文件夹下会生成新文件 keystore 和 truststore 拷贝scp到对应机器的/etc/emr/hadoop-conf/目录下
#master节点不需要scp,直接cp过去 $cp keystore /etc/emr/hadoop-conf $cp keystore /etc/emr/hadoop-conf4. 配置ssl
在master节点上面执行
$sudo su hadoop $cp /etc/emr/hadoop-conf/ssl-server.xml.example /etc/emr/hadoop-conf/ssl-server.xml
修改,不是覆盖ssl-server.xml文件中相关配置项对应的key
备注:
配置中密码需要替换成自己的上面生成keystore/truststore时的密码
property name ssl.server.truststore.location /name value /etc/emr/hadoop-conf/truststore /value description Truststore to be used by NN and DN. Must be specified. /description /property property name ssl.server.truststore.password /name value YOUR_TRUSTSTORE_PASSWD /value description Optional. Default value is "". /description /property
value /etc/emr/hadoop-conf/keystore /value description Keystore to be used by NN and DN. Must be specified. /description /property property name ssl.server.keystore.password /name value YOUR_KEYSTORE_PASSWD /value description Must be specified. /description /property property name ssl.server.keystore.keypassword /name value YOUR_KEYSTORE_PASSWD /value description Must be specified. /description /property
最后,将master节点的这个ssl-server.xml文件 scp 到其它所有节点/etc/emr/hadoop-conf目录下面。
5. 重启HDFS服务在master节点上面执行:
$sudo su hdfs #停止集群HDFS服务 $/usr/lib/hadoop-current/sbin/stop-dfs.sh #停止SecondaryNameNode $/usr/lib/hadoop-current/sbin/hadoop-daemon.sh stop secondarynamenode #启动NameNode $/usr/lib/hadoop-current/sbin/hadoop-daemon.sh start namenode #启动SecondaryNameNode $/usr/lib/hadoop-current/sbin/hadoop-daemon.sh start secondarynamenode
在slave节点上面执行:
#启动DataNode $sudo su hdfs $/usr/lib/hadoop-current/sbin/hadoop-daemon.sh start datanode6. 验证HDFS
在master节点上面执行:
$useradd testkb $sudo su testkb $hadoop fs -ls / 17/05/09 12:04:19 WARN ipc.Client: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)] ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]; Host Details : local host is: "emr-header-1.cluster-xxxx/10.26.6.62"; destination host is: "emr-header-1.cluster-xxxx":9000;
出现上面错误,说明HDFS服务的Kerberos认证生效了,接着执行:
#从testkb账号退出到root账号执行 # 添加testkb的principal $kadmin.local $kadmin.local: addprinc testkb
重新进入testkb账号
$sudo su testkb $hadoop fs -ls / 17/05/09 12:04:19 WARN ipc.Client: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)] ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]; Host Details : local host is: "emr-header-1.cluster-xxxx/10.26.6.62"; destination host is: "emr-header-1.cluster-xxxx":9000; #获取testkb的TGT $kinit testkb #验证成功 $hadoop fs -ls / drwxr-xr-x - hadoop hadoop 0 2017-05-09 10:12 /apps drwxr-xr-x - hadoop hadoop 0 2017-05-09 11:57 /spark-history drwxrwxrwx - hadoop hadoop 0 2017-05-09 10:12 /tmp drwxr-xr-x - hadoop hadoop 0 2017-05-09 10:14 /usr
手把手教你使用自建Hadoop访问全托管服务化HDFS(OSS-HDFS服务) 1. 服务介绍OSS-HDFS服务(JindoFS 服务)是一款云原生数据湖3.0存储产品,基于统一的元数据管理能力,在完全兼容 HDFS 文件系统接口的同时,提供充分的 POSIX 能力支持,能更好的满足大数据和 AI 领域丰富多样的数据湖计算场景。通过OSS-HDFS服务,无需对现有的 Hadoop/Spark 大数据分析应用做任何修改,通过简单的配置就可以像在原生HDFS中那样管理和访问数据
E-MapReduce HDFS文件快速CRC校验工具介绍 在大数据应用场景下经常有数据文件的迁移工作,如果保障迁移之后数据的完整性是一个很常见的问题。本文就给大家介绍一下在大数据场景下,如何用工具快速对比文件。
datenode节点超时时间设置,Hadoop启动不正常,HDFS冗余数据块的自动删除,NameNode安全模式问题,ntp时间服务同步,机架感知配置 1.Hadoop datanode节点超时时间设置 datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长。HDFS默认的超时时长为10分钟+30秒。如果定义超时时间为timeout,则超时时长的计算公式为: timeout = 2 * heartbeat.rec
阿里云EMR是云原生开源大数据平台,为客户提供简单易集成的Hadoop、Hive、Spark、Flink、Presto、ClickHouse、StarRocks、Delta、Hudi等开源大数据计算和存储引擎,计算资源可以根据业务的需要调整。EMR可以部署在阿里云公有云的ECS和ACK平台。
相关文章
- 在做httpModules测试的时候出现“HTTP Error 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。”
- 华为HMS Core集成测试报错找不到appid和cpid
- 快速集成华为AGC-AppLinking服务-Cocos平台
- Android | 教你如何快速集成机器学习能力
- Angular集成UEditor
- 《敏捷制造——敏捷集成基础结构设计》——1.3本书的主要工作与结构
- HBase集成Zookeeper集群部署
- 《计算机系统:系统架构与操作系统的高度集成》——3.5 控制单元设计
- 《计算机系统:系统架构与操作系统的高度集成》——导读
- 【HarmonyOS】【JAVA UI】 HarmonyOS如何集成华为分享
- Android集成测试
- postman(九):postman接口测试脚本集成到jenkins