IP、主机名规划

hadoop集群规划:

hostname IP hadoop 备注
hadoop1 110.185.225.158 NameNode,ResourceManager,DFSZKFailoverController,JournalNode  
hadoop2 110.185.225.166 NameNode,ResourceManager,DataNode,NodeManager,DFSZKFailoverController,JournalNode  
hadoop3 110.185.225.167 DataNode,NodeManager,JournalNode hdfs client

kerberos集群规划:

hostname IP kerberos 备注
krb1 10.112.29.9 server  
krb2 10.112.29.10 slave  
krb3 10.112.28.237 slave  

用户权限规划:

user:group daemons
hdfs:hadoop NameNode, Second NameNode, JournalNode, DataNode
yarn:hadoop ResourceManager, NodeManager
mapred:hadoop MapReduce, JobHistory Server

前提是hadoop集群和kerberos服务器都安装完毕:

hadoop集群搭建:http://www.cnblogs.com/kisf/p/7460235.html

kerberos服务器搭建:http://www.cnblogs.com/kisf/p/7473193.html

注意:主机名,和host一定要配置正确。检验:hostname

为什么要使用kerberos:

简单来说,没有做 kerberos 认证的 Hadoop,只要有 client 端就能够连接上。而且,通过一个有 root 的权限的内网机器,通过创建对应的 Linux 用户,就能够得到 Hadoop 集群上对应的权限。

而实行 Kerberos 后,任意机器的任意用户都必须现在 Kerberos 的 KDC 中有记录,才允许和集群中其它的模块进行通信。

kerberos认证:

Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。

使用 Kerberos 时,一个客户端需要经过三个步骤来获取服务:

  • 认证:客户端向认证服务器发送一条报文,并获取一个含时间戳的 Ticket-Granting Ticket(TGT)。
  • 授权:客户端使用 TGT 向 Ticket-Granting Server(TGS)请求一个服务 Ticket。
  • 服务请求:客户端向服务器出示服务 Ticket ,以证实自己的合法性。

为此,Kerberos 需要 The Key Distribution Centers(KDC)来进行认证。KDC 只有一个 Master,可以带多个 slaves 机器。slaves 机器仅进行普通验证。Mater 上做的修改需要自动同步到 slaves。

另外,KDC 需要一个 admin,来进行日常的管理操作。这个 admin 可以通过远程或者本地方式登录。

在 Kerberos 安全机制里,一个 principal 就是 realm 里的一个对象,一个 principal 总是和一个密钥(secret key)成对出现的。

这个 principal 的对应物可以是 service,可以是 host,也可以是 user,对于 Kerberos 来说,都没有区别。

Kdc(Key distribute center) 知道所有 principal 的 secret key,但每个 principal 对应的对象只知道自己的那个 secret key 。这也是“共享密钥“的由来。

kerberos操作:

1. 生成principal

addprinc -randkey hdfs/hadoop1@JENKIN.COM
addprinc -randkey hdfs/hadoop2@JENKIN.COM
addprinc -randkey hdfs/hadoop3@JENKIN.COM
addprinc -randkey yarn/hadoop1@JENKIN.COM
addprinc -randkey yarn/hadoop2@JENKIN.COM
addprinc -randkey yarn/hadoop3@JENKIN.COM
addprinc -randkey mapred/hadoop1@JENKIN.COM
addprinc -randkey mapred/hadoop2@JENKIN.COM
addprinc -randkey mapred/hadoop3@JENKIN.COM addprinc -randkey HOST/hadoop1@JENKIN.COM
addprinc -randkey HOST/hadoop2@JENKIN.COM
addprinc -randkey HOST/hadoop3@JENKIN.COM

  

2. 生成keytab(文件夹需要提前建好)

xst -norandkey -k /var/kerberos/krb5kdc/keytab/hdfs.keytab hdfs/hadoop1@JENKIN.COM hdfs/hadoop2@JENKIN.COM hdfs/hadoop3@JENKIN.COM
xst -norandkey -k /var/kerberos/krb5kdc/keytab/yarn.keytab yarn/hadoop1@JENKIN.COM yarn/hadoop2@JENKIN.COM yarn/hadoop3@JENKIN.COM
xst -norandkey -k /var/kerberos/krb5kdc/keytab/mapred.keytab mapred/hadoop1@JENKIN.COM mapred/hadoop2@JENKIN.COM mapred/hadoop3@JENKIN.COM xst -norandkey -k /var/kerberos/krb5kdc/keytab/hdfs.keytab HTTP/hadoop1@JENKIN.COM HTTP/hadoop2@JENKIN.COM HTTP/hadoop3@JENKIN.COM
xst -norandkey -k /var/kerberos/krb5kdc/keytab/mapred.keytab HTTP/hadoop1@JENKIN.COM HTTP/hadoop2@JENKIN.COM HTTP/hadoop3@JENKIN.COM

  

验证生成的keytab是否可用

kinit -k -t /var/kerberos/krb5kdc/keytab/hdfs.keytab hdfs/hadoop1@JENKIN.COM

查看:

klist -e -k -t /var/kerberos/krb5kdc/keytab/hdfs.keytab

  

  

3. 将可用的keytab发至其他服务器:

scp /var/kerberos/krb5kdc/keytab/hdfs.keytab hadoop2:/var/kerberos/krb5kdc/keytab/
scp /var/kerberos/krb5kdc/keytab/hdfs.keytab hadoop3:/var/kerberos/krb5kdc/keytab/
scp /var/kerberos/krb5kdc/keytab/yarn.keytab hadoop2:/var/kerberos/krb5kdc/keytab/
scp /var/kerberos/krb5kdc/keytab/yarn.keytab hadoop3:/var/kerberos/krb5kdc/keytab/
scp /var/kerberos/krb5kdc/keytab/mapred.keytab hadoop2:/var/kerberos/krb5kdc/keytab/
scp /var/kerberos/krb5kdc/keytab/mapred.keytab hadoop3:/var/kerberos/krb5kdc/keytab/

  

4. 安装jsvc  ( 2.6.x  版本以上不需要通过jsvc 启动 datanode了)

但需要特别注意如下配置,hdfs-site.xml比须有:

<property>
<name>dfs.data.transfer.protection</name>
<value>integrity</value>
</property>

   

5. 修改hadoop配置

  以hdfs用户为例

core-site.xml 增加配置

        <!--kerberos config --> 
<property> 
<name>hadoop.security.authorization</name> 
<value>true</value> 
</property> 
<property> 
<name>hadoop.security.authentication</name> 
<value>kerberos</value> 
</property> 
<!—默认使用authentication,可使用integrity ,privacy --> 
<property> 
<name>hadoop.rpc.protection</name> 
<value>authentication</value> 
</property>
<property> 
<name>hadoop.security.auth_to_local</name> 
<value>DEFAULT</value> 
</property>

 hdfs-site.xml 增加配置

  <!-- General HDFS security config --> 
<property> 
<name>dfs.block.access.token.enable</name> 
<value>true</value> 
</property>  <!--NameNode security config --> 
<property> 
<name>dfs.encrypt.data.transfer</name> 
<value>true</value> 
</property>  <property> 
<name>dfs.https.address</name> 
<value>hadoop1:50470</value> 
</property>
<property> 
<name>dfs.https.port</name> 
<value>50470</value> 
</property> 
<property> 
<name>dfs.namenode.keytab.file</name> 
<value>/var/kerberos/krb5kdc/keytab/hdfs.keytab</value>
<!-- path to the HDFS keytab -->  
</property> 
<property> 
<name>dfs.namenode.kerberos.principal</name> 
<value>root/_HOST@JENKIN.COM</value> 
</property> 
<property> 
<name>dfs.namenode.kerberos.https.principal</name> 
<value>HTTP/_HOST@JENKIN.COM</value> 
</property> 
<!-- journalnode secure -->
<property>
<name>dfs.journalnode.keytab.file</name>
<value>/var/kerberos/krb5kdc/keytab/hdfs.keytab</value>
</property>
<property>
<name>dfs.journalnode.kerberos.principal</name>
<value>hdfs/_HOST@JENKIN.COM</value>
</property>
<property>
<name>dfs.journalnode.kerberos.internal.spnego.principal</name>
<value>HTTP/_HOST@JENKIN.COM</value>
</property>
<!--DataNode security config --> 
<property> 
<name>dfs.datanode.data.dir.perm</name> 
<value>700</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>/var/kerberos/krb5kdc/keytab/hdfs.keytab</value>
<!-- path to the HDFS keytab --> 
</property> 
<property> 
<name>dfs.datanode.kerberos.principal</name> 
<value>hdfs/_HOST@JENKIN.COM</value> 
</property> 
<property> 
<name>dfs.datanode.kerberos.https.principal</name> 
<value>HTTP/_HOST@JENKIN.COM</value> 
</property>  
<!--web config--> 
<property> 
<name>dfs.web.authentication.kerberos.principal</name> 
<value>HTTP/_HOST@JENKIN.COM</value> 
</property> 
<property> 
<name>dfs.web.authentication.kerberos.keytab</name> 
<value>/var/kerberos/krb5kdc/keytab/hdfs.keytab</value> 
<description> 
           The Kerberos keytab file with the credentials for the   HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint. 
</description>
</property>

mapred-site.xml增加配置:

<!--JobTracker security configs --> 
<property> 
<name>mapreduce.jobtracker.kerberos.principal</name> 
<value>mapred/_HOST@JENKIN.COM</value> 
</property> 
<property> 
<name>mapreduce.jobtracker.kerberos.https.principal</name> 
<value>HTTP/_HOST@JENKIN.COM</value> 
</property> 
<property> 
<name>mapreduce.jobtracker.keytab.file</name> 
<value>/var/kerberos/krb5kdc/keytab/mapred.keytab</value>
<!-- path to the MapReducekeytab --> 
</property>  
<!--TaskTracker security configs --> 
<property> 
<name>mapreduce.tasktracker.kerberos.principal</name> 
<value>mapred/_HOST@JENKIN.COM</value> 
</property> 
<property> 
<name>mapreduce.tasktracker.kerberos.https.principal</name> 
<value>HTTP/_HOST@JENKIN.COM</value> 
</property> 
<property> 
<name>mapreduce.tasktracker.keytab.file</name> 
<value>/var/kerberos/krb5kdc/keytab/mapred.keytab</value>
<!-- path to the MapReducekeytab --> 
</property>  
<!--jobhistory server security -->  
<property> 
<name>mapreduce.jobhistory.address</name> 
<value>10020</value>
</property>  
<property> 
<name>mapreduce.jobhistory.keytab</name> 
<value>/var/kerberos/krb5kdc/keytab/mapred.keytab</value> 
</property>
<property> 
<name>mapreduce.jobhistory.principal</name> 
<value>mapred/_HOST@JENKIN.COM</value> 
</property> 

yarn-site.xml增加配置:

<!-- yarn security -->  
<property> 
<name>yarn.resourcemanager.keytab</name> 
<value>/var/kerberos/krb5kdc/keytab/yarn.keytab</value> 
</property> 
<property> 
<name>yarn.resourcemanager.principal</name> 
<value>yarn/_HOST@JENKIN.COM</value> 
</property> 
<property> 
<name>yarn.nodemanager.keytab</name> 
<value>/var/kerberos/krb5kdc/keytab/yarn.keytab</value> 
</property> 
<property> 
<name>yarn.nodemanager.principal</name> 
<value>yarn/_HOST@JENKIN.COM</value> 
</property> 

服务启动:

./sbin/start-all.sh

namenode,journalnode,dfszkfcfailovercontroller,datanode,nodemanager,及resourcemanager正常启动即可用安全模式启动。

 

参考文档:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SecureMode.html  

  

hadoop HA+kerberos HA集群搭建的更多相关文章

  1. Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...

  2. Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...

  3. Ubuntu 12.04下Hadoop 2.2.0 集群搭建(原创)

    现在大家可以跟我一起来实现Ubuntu 12.04下Hadoop 2.2.0 集群搭建,在这里我使用了两台服务器,一台作为master即namenode主机,另一台作为slave即datanode主机 ...

  4. Hadoop HA高可用集群搭建(2.7.2)

    1.集群规划: 主机名        IP                安装的软件                            执行的进程 drguo1  192.168.80.149 j ...

  5. Hadoop HA 高可用集群搭建

    一.首先配置集群信息 vi /etc/hosts 二.安装zookeeper 1.解压至/usr/hadoop/下 .tar.gz -C /usr/hadoop/ 2.进入/usr/hadoop/zo ...

  6. Zookeeper(四)Hadoop HA高可用集群搭建

    一.高可就集群搭建 1.集群规划 2.集群服务器准备 (1) 修改主机名(2) 修改 IP 地址(3) 添加主机名和 IP 映射(4) 同步服务器时间(5) 关闭防火墙(6) 配置免密登录(7) 安装 ...

  7. Hadoop2学习记录(1) |HA完全分布式集群搭建

    准备 系统:CentOS 6或者RedHat 6(这里用的是64位操作) 软件:JDK 1.7.hadoop-2.3.0.native64位包(可以再csdn上下载,这里不提供了) 部署规划 192. ...

  8. 高可用Hadoop平台-HBase集群搭建

    1.概述 今天补充一篇HBase集群的搭建,这个是高可用系列遗漏的一篇博客,今天抽时间补上,今天给大家介绍的主要内容目录如下所示: 基础软件的准备 HBase介绍 HBase集群搭建 单点问题验证 截 ...

  9. Hadoop初期学习和集群搭建

    留给我学习hadoop的时间不多了,要提高效率,用上以前学的东西.hadoop要注重实战,把概念和原理弄清楚,之前看过一些spark,感觉都是一些小细节,对于理解hadoop没什么帮助.多看看资料,把 ...

  10. 第3章 Hadoop 2.x分布式集群搭建

    目录 3.1 配置各节点SSH无密钥登录 1.将各节点的秘钥加入到同一个授权文件中 2.拷贝授权文件到各个节点 3.测试无秘钥登录 3.2 搭建Hadoop集群 1.上传Hadoop并解压 2.配置H ...

随机推荐

  1. mysql 修改默认配置 提高性能

    解决问题 Lost connection to MySQL server at ‘reading authorization packet’, system error: 0 通过修改 connect ...

  2. 谷歌浏览器chrome://inspect/#devices调试webview的页面和控制台布局错乱问题

    谷歌浏览器chrome://inspect/#devices调试webview的页面和控制台布局错乱问题 : 谷歌浏览器的版本过高,选择60版本即可: 版本 60.0.3080.5(正式版本)

  3. idea下maven项目增加依赖项目里面没有添加相关依赖jar

    困扰了一晚上的问题,一般在pom.xml中增加了相关依赖,idea会自动将依赖的Jar包增加到maven项目中,但是在pom.xml中增加了依赖,项目中并没有 偶然打开idea的侧边栏maven工具栏 ...

  4. DEDE的搜索页面支持arclist和channelartlist标签的操作方法

    很多朋友在使用dedecms进行网站开发时都会存在这样的问题,那就是dedecms的搜索页(search.php)与我们网站页面的模板的头 部.底部不一样,并且还不支持在搜索页调用其他某一栏目的文档. ...

  5. EXSI5.5以上开启KVM二次虚拟化

    1,在EXSI5.5上创建centos虚拟机(过程省略) 2,开启EXSI5.5的ssh功能 3,ssh登录虚拟机 4,编辑虚拟配置文件 /vmfs/volumes/datastore1/目录下,找到 ...

  6. SQL中的循环获取根节点

    方法一: DECLARE @employeeid INT; set @employeeid = 8115; DECLARE @id INT; DECLARE @pid int; DECLARE @le ...

  7. No such file or directory

    项目-targets-build phases, 然后从copy bundle resources里面删掉红色的错误资源文件

  8. FW:主流RPC框架

    主流RPC框架  2015年10月27日  zman  RPC 介绍目前在互联网公司比较流行的开源的RPC框架. RPC框架比较   语言 协议 ​服务治理 ​社区 机构 Hessian 多语言 he ...

  9. 三种方案在Windows系统下安装ubuntu双系统

    一.虚拟机安装(不推荐) 使用工具:Vmware 如果不是因为迫不得已,比如Mac OS对硬件不兼容,Federa安装频繁出错,各种驱动不全等等,不推荐使用虚拟机安装. 个人感觉这是一种对操作系统的亵 ...

  10. Linux磁盘分区工具的使用

    ----------fdisk分区工具----------   一..下面来介绍fdisk分区工具的命令格式:    fdisk是传统的Linux硬盘分区工具,也是Linux系统中最常用的一种硬盘分区 ...