YARN配置Kerberos认证
为什么80%的码农都做不了架构师?>>>
关于 Kerberos 的安装和 HDFS 配置 kerberos 认证,请参考 HDFS配置kerberos认证。
1. 环境说明
系统环境:
- 操作系统:CentOs 6.6
- Hadoop版本:
CDH5.4
- JDK版本:
1.7.0_71
- 运行用户:root
集群各节点角色规划为:
192.168.56.121 cdh1 NameNode、ResourceManager、HBase、Hive metastore、Impala Catalog、Impala statestore、Sentry
192.168.56.122 cdh2 DataNode、SecondaryNameNode、NodeManager、HBase、Hive Server2、Impala Server
192.168.56.123 cdh3 DataNode、HBase、NodeManager、Hive Server2、Impala Server
cdh1作为master节点,其他节点作为slave节点,hostname 请使用小写,要不然在集成 kerberos 时会出现一些错误。
2. 生成 keytab
在 cdh1 节点,即 KDC server 节点上执行下面命令:
cd /var/kerberos/krb5kdc/kadmin.local -q "addprinc -randkey yarn/cdh1@JAVACHEN.COM "
kadmin.local -q "addprinc -randkey yarn/cdh2@JAVACHEN.COM "
kadmin.local -q "addprinc -randkey yarn/cdh3@JAVACHEN.COM "kadmin.local -q "addprinc -randkey mapred/cdh1@JAVACHEN.COM "
kadmin.local -q "addprinc -randkey mapred/cdh2@JAVACHEN.COM "
kadmin.local -q "addprinc -randkey mapred/cdh3@JAVACHEN.COM "kadmin.local -q "xst -k yarn.keytab yarn/cdh1@JAVACHEN.COM "
kadmin.local -q "xst -k yarn.keytab yarn/cdh2@JAVACHEN.COM "
kadmin.local -q "xst -k yarn.keytab yarn/cdh3@JAVACHEN.COM "kadmin.local -q "xst -k mapred.keytab mapred/cdh1@JAVACHEN.COM "
kadmin.local -q "xst -k mapred.keytab mapred/cdh2@JAVACHEN.COM "
kadmin.local -q "xst -k mapred.keytab mapred/cdh3@JAVACHEN.COM "
拷贝 yarn.keytab 和 mapred.keytab 文件到其他节点的 /etc/hadoop/conf
目录
$ scp yarn.keytab mapred.keytab cdh1:/etc/hadoop/conf
$ scp yarn.keytab mapred.keytab cdh2:/etc/hadoop/conf
$ scp yarn.keytab mapred.keytab cdh3:/etc/hadoop/conf
并设置权限,分别在 cdh1、cdh2、cdh3 上执行:
$ ssh cdh1 "cd /etc/hadoop/conf/;chown yarn:hadoop yarn.keytab;chown mapred:hadoop mapred.keytab ;chmod 400 *.keytab"
$ ssh cdh2 "cd /etc/hadoop/conf/;chown yarn:hadoop yarn.keytab;chown mapred:hadoop mapred.keytab ;chmod 400 *.keytab"
$ ssh cdh3 "cd /etc/hadoop/conf/;chown yarn:hadoop yarn.keytab;chown mapred:hadoop mapred.keytab ;chmod 400 *.keytab"
由于 keytab 相当于有了永久凭证,不需要提供密码(如果修改 kdc 中的 principal 的密码,则该 keytab 就会失效),所以其他用户如果对该文件有读权限,就可以冒充 keytab 中指定的用户身份访问 hadoop,所以 keytab 文件需要确保只对 owner 有读权限(0400
)
3. 修改 YARN 配置文件
修改 yarn-site.xml,添加下面配置:
<property><name>yarn.resourcemanager.keytab</name><value>/etc/hadoop/conf/yarn.keytab</value>
</property>
<property><name>yarn.resourcemanager.principal</name> <value>yarn/_HOST@JAVACHEN.COM</value>
</property><property><name>yarn.nodemanager.keytab</name><value>/etc/hadoop/conf/yarn.keytab</value>
</property>
<property><name>yarn.nodemanager.principal</name> <value>yarn/_HOST@JAVACHEN.COM</value>
</property>
<property><name>yarn.nodemanager.container-executor.class</name> <value>org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor</value>
</property>
<property><name>yarn.nodemanager.linux-container-executor.group</name><value>yarn</value>
</property>
如果想要 YARN 开启 SSL,则添加:
<property><name>yarn.http.policy</name><value>HTTPS_ONLY</value>
</property>
修改 mapred-site.xml,添加如下配置:
<property><name>mapreduce.jobhistory.keytab</name><value>/etc/hadoop/conf/mapred.keytab</value>
</property>
<property><name>mapreduce.jobhistory.principal</name> <value>mapred/_HOST@JAVACHEN.COM</value>
</property>
如果想要 mapreduce jobhistory 开启 SSL,则添加:
<property><name>mapreduce.jobhistory.http.policy</name><value>HTTPS_ONLY</value>
</property>
在 /etc/hadoop/conf
目录下创建 container-executor.cfg 文件,内容如下:
#configured value of yarn.nodemanager.linux-container-executor.group
yarn.nodemanager.linux-container-executor.group=yarn
#comma separated list of users who can not run applications
banned.users=bin
#Prevent other super-users
min.user.id=0
#comma separated list of system users who CAN run applications
allowed.system.users=root,nobody,impala,hive,hdfs,yarn
设置该文件权限:
$ chown root:yarn container-executor.cfg
$ chmod 400 container-executor.cfg$ ll container-executor.cfg
-r-------- 1 root yarn 354 11-05 14:14 container-executor.cfg
注意:
container-executor.cfg
文件读写权限需设置为400
,所有者为root:yarn
。yarn.nodemanager.linux-container-executor.group
要同时配置在 yarn-site.xml 和 container-executor.cfg,且其值需要为运行 NodeManager 的用户所在的组,这里为 yarn。banned.users
不能为空,默认值为hfds,yarn,mapred,bin
min.user.id
默认值为 1000,在有些 centos 系统中,用户最小 id 为500,则需要修改该值- 确保
yarn.nodemanager.local-dirs
和yarn.nodemanager.log-dirs
对应的目录权限为755
。
设置 /usr/lib/hadoop-yarn/bin/container-executor 读写权限为 6050
如下:
$ chown root:yarn /usr/lib/hadoop-yarn/bin/container-executor
$ chmod 6050 /usr/lib/hadoop-yarn/bin/container-executor$ ll /usr/lib/hadoop-yarn/bin/container-executor
---Sr-s--- 1 root yarn 333 11-04 19:11 container-executor
测试是否配置正确:
$ /usr/lib/hadoop-yarn/bin/container-executor --checksetup
如果提示错误,则查看 NodeManger 的日志,然后对照 YARN ONLY: Container-executor Error Codes 查看错误对应的问题说明。
关于 LinuxContainerExecutor 的详细说明,可以参考 http://hadoop.apache.org/docs/r2.5.0/hadoop-project-dist/hadoop-common/SecureMode.html#LinuxContainerExecutor。
记住将修改的上面文件同步到其他节点:cdh2、cdh3,并再次一一检查权限是否正确。
$ cd /etc/hadoop/conf/$ scp yarn-site.xml mapred-site.xml container-executor.cfg cdh2:/etc/hadoop/conf/
$ scp yarn-site.xml mapred-site.xml container-executor.cfg cdh3:/etc/hadoop/conf/$ ssh cdh2 "cd /etc/hadoop/conf/; chown root:yarn container-executor.cfg ; chmod 400 container-executor.cfg"
$ ssh cdh3 "cd /etc/hadoop/conf/; chown root:yarn container-executor.cfg ; chmod 400 container-executor.cfg"
4. 启动服务
启动 ResourceManager
resourcemanager 是通过 yarn 用户启动的,故在 cdh1 上先获取 yarn 用户的 ticket 再启动服务:
$ kinit -k -t /etc/hadoop/conf/yarn.keytab yarn/cdh1@JAVACHEN.COM
$ service hadoop-yarn-resourcemanager start
然后查看日志,确认是否启动成功。
启动 NodeManager
resourcemanager 是通过 yarn 用户启动的,故在 cdh2 和 cdh3 上先获取 yarn 用户的 ticket 再启动服务:
$ ssh cdh2 "kinit -k -t /etc/hadoop/conf/yarn.keytab yarn/cdh2@JAVACHEN.COM ;service hadoop-yarn-nodemanager start"
$ ssh cdh3 "kinit -k -t /etc/hadoop/conf/yarn.keytab yarn/cdh3@JAVACHEN.COM ;service hadoop-yarn-nodemanager start"
启动 MapReduce Job History Server
resourcemanager 是通过 mapred 用户启动的,故在 cdh1 上先获取 mapred 用户的 ticket 再启动服务:
$ kinit -k -t /etc/hadoop/conf/mapred.keytab mapred/cdh1@JAVACHEN.COM
$ service hadoop-mapreduce-historyserver start
5. 测试
检查 web 页面是否可以访问:http://cdh1:8088/cluster
运行一个 mapreduce 的例子:
$ klistTicket cache: FILE:/tmp/krb5cc_1002Default principal: yarn/cdh1@JAVACHEN.COMValid starting Expires Service principal11/10/14 11:18:55 11/11/14 11:18:55 krbtgt/cdh1@JAVACHEN.COMrenew until 11/17/14 11:18:55Kerberos 4 ticket cache: /tmp/tkt1002klist: You have no tickets cached$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 10000
如果没有报错,则说明配置成功。最后运行的结果为:
Job Finished in 54.56 seconds
Estimated value of Pi is 3.14120000000000000000
如果出现下面错误,请检查环境变量中 HADOOP_YARN_HOME
是否设置正确,并和 yarn.application.classpath
中的保持一致。
14/11/13 11:41:02 INFO mapreduce.Job: Job job_1415849491982_0003 failed with state FAILED due to: Application application_1415849491982_0003 failed 2 times due to AM Container for appattempt_1415849491982_0003_000002 exited with exitCode: 1 due to: Exception from container-launch.
Container id: container_1415849491982_0003_02_000001
Exit code: 1
Stack trace: ExitCodeException exitCode=1:at org.apache.hadoop.util.Shell.runCommand(Shell.java:538)at org.apache.hadoop.util.Shell.run(Shell.java:455)at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:702)at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.launchContainer(LinuxContainerExecutor.java:281)at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:299)at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:81)at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)at java.util.concurrent.FutureTask.run(FutureTask.java:138)at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)at java.lang.Thread.run(Thread.java:662)Shell output: main : command provided 1
main : user is yarn
main : requested yarn user is yarnContainer exited with a non-zero exit code 1
.Failing this attempt.. Failing the application.
14/11/13 11:41:02 INFO mapreduce.Job: Counters: 0
Job Finished in 13.428 seconds
java.io.FileNotFoundException: File does not exist: hdfs://cdh1:8020/user/yarn/QuasiMonteCarlo_1415850045475_708291630/out/reduce-out
转载于:https://my.oschina.net/boltwu/blog/825957
YARN配置Kerberos认证相关推荐
- HDFS配置Kerberos认证
为什么80%的码农都做不了架构师?>>> 本文主要记录 CDH Hadoop 集群上配置 HDFS 集成 Kerberos 的过程,包括 Kerberos 的安装和 Hadoo ...
- (转载)详解Hive配置Kerberos认证
Hive提供了运行SQL语句查询存储在HDFS上数据的能力,Hive提供的查询引擎,可以将SQL语句转化成MapReduce任务,提交到Hadoop集群上执行.MapReduce任务运行的结果会存在H ...
- hadoop生态的kerberos认证系列2-hadoop
hadoop生态的kerberos认证系列2-hadoop 一.准备工作 二.配置 1.hdfs配置kerberos认证 1.1所有节点安装autoconf 1.2所有节点安装gcc 1.3安装jsv ...
- hadoop2.7.2开启kerberos认证
环境介绍: 一共三台机器: hadoop11: 192.168.230.11 namenode .kerberos client hadoop12: 192.168.230.12 datanode . ...
- Hadoop集群中数据传输(涉及两个集群是非kerberos认证)
在两个集群中数据迁移的事情在前面的过程中, 已经有了详细的介绍,这里是涉及外部的理论, 具体需要迁移的机器的配置,关注之前的博客 1.在非kerberos认证的集群中 distcp hdfs://IP ...
- go kafka 配置SASL认证及实现SASL PLAIN认证功能
用户认证功能,是一个成熟组件不可或缺的功能.在0.9版本以前kafka是没有用户认证模块的(或者说只有SSL),好在kafka0.9版本以后逐渐发布了多种用户认证功能,弥补了这一缺陷(这里仅介绍SAS ...
- OpenTSDB搭建过程(CDH环境,kerberos认证)
写在最前 为什么要写这篇文章: 目前在国内关于OpenTSDB的文章较少,在下因为最近工作需要需要搭建OpenTSDB找到一些文章,但是关于CDH环境的却很少,搭建的时候也遇到不少坑,所以为了避免后面 ...
- kerberos mysql配置_CDH安装之篇四:启用Kerberos认证
启用Kerberos认证 • 安装Kerberos • 安装配置master KDC/Kerberos Server 注:Kerberos Server可以是任意一 ...
- CDH 的Kerberos认证配置
2019独角兽企业重金招聘Python工程师标准>>> 最近因为项目需要,需要对用户权限做限制,最终选择了kerberos+sentry+hue模式来管理用户,但是这个kerbero ...
最新文章
- html5实践开发教程,HTML5基础与实践教程
- MiniGUI.cfg 文件详解
- Sublime插件开发 启动Anaconda并运行对应Python脚本
- OpenGL着色器将纹理应用于全屏四边形
- python怎么打不开图片_为什么pygame打不开图片 各种格式的都试过了
- BZOJ3784树上的路径
- 如何让div中的文字只显示一行,多余的文字隐藏并加上省略号(超链接形式)...
- 你真的理解反向传播吗?面试必备
- win11更新特别慢怎么办 windows11更新缓慢的解决方法
- 语音识别,搜狗的下一个大梦想?
- HBase伪分布式搭建
- android恢复出厂设置的流程
- 读书-算法《程序设计导引及在线实践》-简单计算题3:校门外的树
- Java---设计【员工工资管理系统】
- AirServer Mac Airplay投屏工具
- MATLAB怎么加0x,matlab 0xc0150002的解决办法
- 卖减肥产品怎么正确引流?减肥产品抖音应该如何引流?
- Laravel多表连接,多个查询(Eloquent)
- linux没有cpufreq目录,Linux系统的Cpufreq
- Windows7 基本常见问题及解决方案之汇总
热门文章
- 一次学5句简单英语口语
- VC++开发简单DLL并调用
- 图文详解asp.net自带控件
- webpack 零基础到工程实战(1)
- jzoj3085. 图的计数
- 日期时间函数(1)-time()gmtime()strftime()localtime()
- Name与x:Name的关系--转载
- LINQ那些事儿(2)- 简单对象的CRUD操作和Association的级联操作
- [转]一个总成本花费100W的失败项目的小小反省
- 芬兰计算机研究生申请表,芬兰的研究生申请技巧