开发者学堂课程【快速掌握 Hadoop 集成 Kerberos 安全技术:YARN 并启动测试】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/708/detail/12567
YARN 并启动测试
配置 YARN
1.配置 YARN 相关的 Kerberos 账户
(1)配置 cdho
#在 root 用户下执行
kadmin #进入 kerberos admin 后台
首先回到 cdh0的操作平台,回到 root 账户看一下目前还是托管着 admin 权限的,输入 kadmin 后台,输入他的密码。
#添加 resourcemanager 的账户
addprinc -randkeyrm/cdheitcast.cnITCAST.CN
输入 cd /etc/security/keytabs/
,会发现已经添加好。
#添加 job historvserver 的账户
addprinc -randkeyjhs/cdhitcastnITCASTCN
执行 kadmin,输入密码,添加 job historvserver 账户
#添加 rm 账户的本地 keytab
ktadd -k/etc/security/keytabs/rmservicekeytab rm/cdhitcast.cn@ITCAST.CN
ktadd
-k/etc/security/keytabs/ihs.servicekeytabhs/cdhitcast.cn@ITCAST.CN
将以上代码执行并添加,没有问题后会发现多了 jhs.service keytabhs
# 将得到的 rm.service.keytab 改权限
chmod 400rm.service kevtab
chown yarn:hadoop rm.service.keytab
#将得到的 ihs.service.kevtab 改权限
chmod 400 ihs.service.kevtab
chown mapred:hadoop ihs.service.keytab
先改一下400,再改一下所属,
# 得到
[root@cdhe keytabs]# 11
total 20mapred hadoop 412 Sep 26 14:20 jhsservicekeytab
-r--------- 1 hdfs hadoop 406 Sep 26 11:11 nnservicekeytab
-r--------1
-r---------1yarn hadoop 406 Sep 26 14:09 m.service.keytab
-r-------- 1 hdfs hadoop 486 Sep 26 11:13snservicekeytab
-r-------- 1 hdfs hadoop 418 Sep 26 12:20 spnego.service.keytab
(2)配置 cdh1
#在 root 用户下执行
kadmin#进 Akerberos admin 后台
进入到 cd/ect/security/keytabs
#添加 nodemanager 的账户
addprinc-randkeynm/cdh1iteastnITCAST.CN
#添加 nm 账户的本地 keytab
ktadd -k/etc/security/keytabs/nm.servicekeytabnm/cdh1itcastcn@ITCAST.CN
# 将得到的 nm.service.keytab 改权限
chmod 400 nm.service kevtab
chown yarn:hadoop nm.service.keytab
# 得到
[rootecdh1 keytabs]#11
total 12
-r-------- 1 hdfs hadoop 406 Sep 26 11:18 dn.service.keytab
-r-------- 1 yarn hadoop 406 Sep 26 14:14nmservicekeytab
-r-------- 1 hdfs hadoop 418 Sep 26 12:22 spnegoservicekeytab
(3)配置 cdh2
#在 root 用户下执行
kadmin #进入kerberos admin后台
#添加 nodemanager 的账户
addprinc -randkeynm/cdh2iteastcnITCAST.CN
#添加 nm 账户的本地 keytab
ktadd -k/etc/security/keytabs/nmservicekeytabnm/cdh2itcast.cn@ITCASTCN
#将得到的 nm.service.kevtab 改权限 chmod 400 nm.service keytab
chown yarn:hadoopnm.service.keytab
# 得到
rootecdh1 kevtabs # 11
total 12
-r-------- 1 hdfs hadoop 406 Sep 26 11:18 dn.service.keytab
-r-------- 1 varn hadoop 406 Sep 2614:14nmservicekevtab
-r-------- 1 hdfs hadoop 418 Sep 26 12:22 spnego.service.keytab
检查时会发现 nmservicekevtab 已经创建好了
2、配置 yarn-site.xml
<?xml version="1.0"?>
<!--
Licensed under the Apache License,Version 2.0(the"License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing. software
distributed under the License is distributed on an"AS IS" BASIS.
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND. either express orimplied.
See the License for the specific language governing permissionsand
limitations under the License. See accompanying LICENSE file.
-->
<confiauration>
<property>
<name>yarn.log.server.url</name>
<value>https://cdh0.itcast.cn:19890/jobhistory/logs</value><description></description>
</property>
首先是配置 jobhistory 的 ul 路径
<propertyx
<name>yarn.acl.enable</name>
<value>false</value>
<description>lnable ACLs? Defaults to false.</description>
</property>
这里配置 acl.,这里没有开启 sl
所有的配置大多数都是 yarn 本身的配置。
<property>
<name>yarn.resourcemanager.principal</name>
<value>rm/_HOST@ITCAST.CN</value>
</property>
<property>
<name>yarn.resourcemanager.keytab</name>
<value>/etc/security/keytabs/rm.service.keytab</value>
</property>
这里 resourcemanager 对应账户,_HOST 来转换成主题名,同时对应 keytabs 文件转化在哪里
这里还有个 webapp 对应的是 true,同样是 manager 账户是哪一个,对应的 keytab 存放在那个路径下。
还有一些 timeline,这里并没有使用 timeline,在这个示例里面用不到。
还是需要对 yarn 实行一些 ssl,开启 httpsonly,只允许使用 https
有个关键配置 linux-container-executor.要首先给他个 group,用 Hadoop 作为他的管理者
这里有个执行的 class,这里配置为这样一个 class:org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.
3、配置 mapred.xml
<?xml version="1.0"?>
e?xml-stylesheettype="text/xsl"hrefconfiquration xsl"?>
<!--
Licensed under the Apache License, Version 2.e (the “License").you may not use this file except in compliance with the License.You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by apolicable lam or agreed to in writing, software
distributed under the License is distributed on an"AS IS" BASIS.
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND. either express orimplied.
See the License for the specific languace coverning permissionsand
limitations under the License. See accompanying LICENSE file.
--->
<!-- Put site specifie property overrides in this file.-->
<property>
<name>mapreduce.framework.name</name><value>yarn</value>
(这里是 mapreduce 的框架登录)
<description></description></property>
<!--
<property>
<name>mapreduce.map.memory.mb</nam><value>1024</value>
<description>Larger resource limit for maps.
</description>
</property>
<property>
<name>mapreduce.mapjava.opts</name><value>-Xmx768M</value>
<description></description></property>
<property>
<name>mapreduce.reduce.memory.mb</name><value>1024</value>
<description></description></property>
<property>
<name>mapreduce.reduce.java.opts</name><value>-Xmx2000M</value>
<description></description></property>
<property>
<name>mapreduce.task.io.sort.mb</name><value>256</value>
<description></description></property>
I
<property>
<name>mapreduce.task.io.sort.factor</name><value>50</value>
<description></descliption></property>
<property>
<name>mapreduce.reduce.shuffle.parallelcopies</name><value>25</value>
<description>Higher number of parallel copies run by reduces tofetch outputs from very large number of maps.</description>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name><value>cdh0.itcast.cn:19888</value><description></description></property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name><value>/mr-data/mr-history/tmp</value><description></description></property>
<property>
<name>mapreduce.jobhistory.done-dir</name><value>/mr-data/mr-history/done</value><description></description></property>
<property> I
<name>mapreduce.obhistorykeytab</name>
<value>/etc/security/keytabs/ihs.servicekeytab</value></property><property>
<name>mapreduce.jobhistory.principal</name><value>jhs/_HOST@ITCAST.CN</value></property>
<property>
<name>mapreduce.jobhistory.webapp.spnego-principal</name><value>HTTP/_HOST@ITCAST.CN</value></property><property>
(他要使用的账户在哪里)
<name>mapreduce.jobhistory.webapp.spnego-keytab-file</name>
<value>/etc/security/keytabs/spnego.servicekeytab</value>
</property>
<property>
<name>mapreduce.jobhistory.http.policy</name><value>HTTPS_ONLY</value>
</property>
</configuration>
将以上代码复制,保存即可
添加操作如图:
4、配置 container-executor.cfg
以 root 账户编辑
yarn.nodemanager.local-dirs=/data/nm-local
yarn.nodemanagerlog-dirs=/data/nm-1og
yarnnodemanager.linux-container-executor.group-hadoop
#configured value of yarn.nodemanager.linux-container-executor. Group
banned.users bin
#comma separated list of users who can not run applications
min.user.id=100
#Prevent other super-users
allowed.system.users=root,yarn,hdfs,mapred,hive,dev t
##comma separated list of system users who can run applications
将以上进行复制,首先定义 yarn 两个路径,banned.users bin 是不允许提交 yarn 的容器的,如果不想某个账户提交,就把这个账户放在这里面这些对应的账户它就没有权限去创建对应的容器,有一个最小的 user.id 设置为100,因为某些 superu id 就是他的 ID 是很小的,低于100是不允许执行的,还有一个叫做允许的系统用户,比如说 root,yarn,hdfs,mapred,hive,dev t,这些用户它是可以有权限去提交 yarn 任务的。
5.将配置文件复制到其他机器
scp container-executor.cfg mapred-site.xml yarn-site.xml cdh1:/bigdata/hadoop-2.6.0 cdh5.14.4/etc/hadoop/
scp container-executor.cfg mapred-site.xml yarn-site.xml cdh2:/bigdata/hadoop-2.6.0 cdh5.14.4/etc/hadoop/
6.启动 HistoryServer
在 cdho 机器,切换到 mapred 账户
执行: kinit -kt /etc/security/keytabs/jhs.service.keytab jhs/cdh0.itcast.cn@ITCAST.CN
(授权)
执行: mr-jobhistory-daemon.sh start historyserver
,会发现正常运行
浏览器打开:https://cdh0:19890
7.启动 resourcemanager
在 cdho 机器,切换到 yarn 账户
执行:kinit -kt /etc/securitv/kevtabs/rm.service keytab rm/cdhe.itcast.cneITCAST.CN
(授权)
执行: yarn-daemon.sh start resource manager
,(启动)正常运行,查看日志,没有问题
浏览器打开:https://cdho:8090
没有问题同样启动 cdh1、cdh2。操作步骤相同,打开浏览器页面如下:
8.提交 MR 程序测试
在 cdho 机器上:
1. su-yirn
2. kinit -kt /etc/security/kevtabs/rm.service.kevtab rm/cdh0.itcast.cneITCAST.CN
(注册)
3.hadoopiar/biadata/hadoop-2.6.0-cdh5.14.4/share/hadoop/mapreduce/hadoon-mapreduce-examples-2.6.0-cdh5.14.4 iar wordcount /readme txt /tmp/wd-outputi
(运行)
这个异常一般忽略就可以:
Job 已经运行成功了,再切换到 hdfs 账户,运行会发现有/tmp/wd-output1目录
以上所有步骤操作完后,会发现都可以正常执行了。