Hadoop开启Kerberos安全模式,

基于已经安装好的Hadoop的2.7.1环境,

在此基础上开启Kerberos安全模式。

1.安装规划

已经安装好Hadoop的环境

10.43.159.7 zdh-7

hdfsone/zdh1234

Kerberos服务器

10.43.159.11 zdh-11

kerberos server

2.创建用户的keytab

在zdh-11上,用root用户在/root/keytabs目录下,

创建hdfsone的principal,并导出hdfsone.keytab,

创建HTTP的principal,并导出HTTP.keytab:

kadmin.local
addprinc -randkey hdfsone/zdh-7@ZDH.COM
addprinc -randkey HTTP/zdh-7@ZDH.COM
xst -k hdfsone.keytab hdfsone/zdh-7@ZDH.COM
xst -k HTTP.keytab HTTP/zdh-7@ZDH.COM
exit

3.合并上面2个keytab到hdfsone.keytab

ktutil
rkt hdfsone.keytab
rkt HTTP.keytab
wkt hdfsone.keytab
exit

4.将新生成的hdfsone.keytab拷贝到指定位置

首先在hdfsone上面创建目录/home/hdfsone/hadoop-2.7.1/etc/keytabs,

然后进入到/root/keytabs目录下,执行拷贝:

scp hdfsone.keytab hdfsone@zdh-7:/home/hdfsone/hadoop-2.7.1/etc/keytabs

5.修改keytab权限

chown hdfsone:hadoop hdfsone.keytab

chmod 400 hdfsone.keytab

6.修改core-site.xml文件

<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hadoop.security.authorization</name>
<value>true</value>
</property>

7.修改hdfs-site.xml文件

<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>/home/hdfsone/hadoop-2.7.1/etc/keytabs/hdfsone.keytab</value>
</property>
<property>
<name>dfs.namenode.kerberos.principal</name>
<value>hdfsone/_HOST@ZDH.COM</value>
</property>
<property>
<name>dfs.namenode.kerberos.https.principal</name>
<value>HTTP/_HOST@ZDH.COM</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>
<property>
<name>dfs.datanode.keytab.file</name>
<value>/home/hdfsone/hadoop-2.7.1/etc/keytabs/hdfsone.keytab</value>
</property>
<property>
<name>dfs.datanode.kerberos.principal</name>
<value>hdfsone/_HOST@ZDH.COM</value>
</property>
<property>
<name>dfs.datanode.kerberos.https.principal</name>
<value>HTTP/_HOST@ZDH.COM</value>
</property> <property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.web.authentication.kerberos.principal</name>
<value>HTTP/_HOST@ZDH.COM</value>
</property>
<property>
<name>dfs.web.authentication.kerberos.keytab</name>
<value>/home/hdfsone/hadoop-2.7.1/etc/keytabs/hdfsone.keytab</value>
</property>

注意:hdfs/_HOST@ZDH.COM不用手动修改,hadoop运行是自动替换成hdfs/zdh-7@ZDH.COM

8.启动hadoop

启动NameNode:

start-dfs.sh

开启Kerberos安全模式后,此命令只会启动NamdeNode,

所以还需要再次启动datanode:

/home/hdfsone/hadoop-2.7.1/sbin/hadoop-daemon.sh start datanode

9.问题处理

启动DataNode时发生如下异常:

2018-03-02 17:20:15,261 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.lang.RuntimeException: Cannot start secure DataNode without configuring either privileged resources or SASL RPC data transfer protection and SSL for HTTP. Using privileged resources in combination with SASL RPC data transfer protection is not supported.
at org.apache.hadoop.hdfs.server.datanode.DataNode.checkSecureConfig(DataNode.java:1173)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1073)
at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:428)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2373)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2260)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2307)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2484)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2508)
2018-03-02 17:20:15,264 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2018-03-02 17:20:15,265 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:

解决办法:

当设置了安全的datanode时,启动datanode需要root权限,需要修改hadoop-env.sh文件.且需要安装jsvc,同时重新下载编译包commons-daemon-1.0.15.jar,并把$HADOOP_HOME/share/hadoop/hdfs/lib下替换掉.

否则报错Cannot start secure DataNode without configuring either privileged resources

9.1.编译安装JSVC

下载解压commons-daemon-1.0.15-src.tar.gz及commons-daemon-1.0.15-bin.tar.gz

操作命令:

wget http://apache.fayea.com//commons/daemon/binaries/commons-daemon-1.0.15-bin.tar.gz
wget http://apache.fayea.com//commons/daemon/source/commons-daemon-1.0.15-src.tar.gz
tar zxvf commons-daemon-1.0.15-src.tar.gz
tar zxvf commons-daemon-1.0.15-bin.tar.gz

编译生成jsvc,并拷贝至指定目录

cd commons-daemon-1.0.15-src/src/native/unix/
./configure
make
cp jsvc /home/hdfs/hadoop-3.0.0-alpha2-SNAPSHOT/libexec/

9.2.拷贝commons-daemon-1.0.15.jar

rm hadoop-3.0.0-alpha2-SNAPSHOT/share/hadoop/hdfs/lib/commons-daemon-*.jar

cp commons-daemon-1.0.15.jar hadoop-3.0.0-alpha2-SNAPSHOT/share/hadoop/hdfs/lib/

9.3.修改hadoop-env.sh文件

vi hadoop-env.sh

export HADOOP_SECURE_DN_USER=hdfs

export JSVC_HOME=/home/hdfs/hadoop-3.0.0-alpha2-SNAPSHOT/libexec

9.4.参考文章:

kerberos-hadoop配置常见问题汇总

Hadoop开启Kerberos安全模式的更多相关文章

  1. Sqoop2开启Kerberos安全模式

    Sqoop2开启Kerberos安全模式, 基于版本sqoop-1.99.7, 在已经安装好的sqoop2环境上配置kerberos. 1.安装规划 10.43.159.9 zdh-9 sqoop2k ...

  2. Ranger-AdminServer安装(开启Kerberos)

    Ranger-AdminServer安装, 同时开启Kerberos安全模式, 基于ranger版本0.7.0. 安装规划 10.43.159.240 zdh-240 10.43.159.245 zd ...

  3. Apache Hadoop配置Kerberos指南

    通常,一个Hadoop集群的安全使用kerberos来进行保障.在启用Kerberos后,需要用户进行身份验证.用户通过验证后可以使用GRANT/REVOKE语句来进行基于角色的访问控制.本文介绍一下 ...

  4. 【原创】大叔经验分享(41)hdfs开启kerberos之后报错Encryption type AES256 CTS mode with HMAC SHA1-96 is not supported/enabled

    hdfs开启kerberos之后,namenode报错,连不上journalnode 2019-03-15 18:54:46,504 WARN org.apache.hadoop.security.U ...

  5. Storm集群安装Version1.0.1开启Kerberos

    Storm集群安装,基于版本1.0.1, 同时开启Kerberos安全认证, 使用apache-storm-1.0.1.tar.gz安装包. 1.安装规划 角色规划 IP/机器名 安装软件 运行进程 ...

  6. Zookeeper集群安装(开启kerberos)

    安装规划 zookeeper集群模式,安装到如下三台机器 10.43.159.237 zdh-237 10.43.159.238 zdh-238 10.43.159.239 zdh-239 Kerbe ...

  7. Zookeeper单机安装(开启kerberos)

    安装规划 zookeeper安装到zdh41上面,单机模式 10.43.159.41 zdh41 ZDH.COM 安装用户 zookeeper/zdh1234 useradd -g hadoop -s ...

  8. hadoop的kerberos认证

    言归正传,介绍过hadoop的simple认证和kerberos后,我们在这一章介绍hadoop的kerberos认证 我们还使用hadoop集群的机器. OS 版本: Centos6.4 Kerbe ...

  9. Hadoop开启后jps显示只有jps

    之前在用Mapreduce写代码时,在DFS Location下的会报一个error,大体的意思就是与主机名相关的错误 然后我就觉得可能时Hadoop开启时出了错误,然后我就重启了Hadoop,jps ...

随机推荐

  1. android转换透明度

    比方说 70% 白色透明度. 就用255*0.7=185.5  在把185.5转换成16进制就是B2 你只需要写#B2FFFFFF 如果是黑色就换成6个0就可以了.前2位是控制透明度的.

  2. 【Linux】【Shell】【Basic】一行代码解决常见问题

    1. 查看可用IP for i in `seq 1 255`; do ping -c 1 10.210.55.$i >> /dev/null; if [ $? -eq 1 ]; then ...

  3. Dubbo服务分组

    服务分组与多版本控制的使用方式几乎是相同的,只要将version替换为group即可.但使用目的不同.使用版本控制的目的是为了升级,将原有老版本替换掉,将来不再提供老版本的服务,所以不同版本间不能出现 ...

  4. 【Linux】【Commands】基础概念及常用基础命令

    命令的语法通用格式: ------------------------------------------------ #COMMAND OPTIONS ARGUMENTS 发起命令:请求内核将某个二 ...

  5. Linux:spool命令

    格式调整有以下参数: set echo on/off--是否显示脚本中的需要执行的命令 set feedback on/off--是否显示 select 结果之后返回多少行的提示 set linesi ...

  6. 【JS】toLocaleString 日期格式,千分位转换

    https://blog.csdn.net/Seven521m/article/details/108866881 类似于c里printf(m%)的意思 可以指定整数最少位数,小数最少与最多位数,有效 ...

  7. Quartz使用AutoFac依赖注入问题小结

    theme: channing-cyan highlight: a11y-dark 背景 最近在做一个需求,就是在Job中捕捉异常,然后通过邮件或者消息的方式推送给指定人员,在需求实现的过程中遇到的一 ...

  8. 《手把手教你》系列技巧篇(五十一)-java+ selenium自动化测试-字符串操作-下篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

  9. [BUUCTF]PWN1——test_your_nc

    [BUUCTF]PWN1-test_your_nc 题目网址:https://buuoj.cn/challenges#test_your_nc 步骤: 根据题目提示,nc一下靶场 2.nc连接上后ls ...

  10. [BUUCTF]PWN6——ciscn_2019_c_1

    [BUUCTF]PWN6--ciscn_2019_c_1 题目网址:https://buuoj.cn/challenges#ciscn_2019_c_1 步骤: 例行检查,64位,开启了nx保护 nc ...