开发者学堂课程【快速掌握 Hadoop 集成 Kerberos 安全技术:使用 Java 代码集成测试】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/708/detail/12569
使用 Java 代码集成测试
使用代码集成测试
代码就是正常的 hdoop 操作代码,删除使用 fs delete 来删除,下载使用 fscopyBytes,上传也使用 opyBytes,使用 fs list 里面的 api
核心:UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab(pri incipal, keytab):
平常写或者代码是不需要写这两个的,因为用的 coops,需要加上他,那第一句话就是把我们要多给 hdoopcont 放进来,这个没什么特殊的,其实第二个就是登录 loginUserFromKeytab,就是把炫耀的账户告诉她就可以了。他会在代码里认证这个账户,认证通过,代码也相当于认证过的代码,执行起来没有任何阻碍。
word count 代码和正常的没有任何区别
关键UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab(pri incipal, keytab):加上这两句话
Hive 也是没有区别,同样在运行时候,拿取链接时执行两句话:
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab(pri incipal, keytab):
以 hive/cdho.itcast.cn@ITCAST.CN"来登录,path:"/etc/security/keytabs/hive.keytab");文件在这里
就可以去操作托管 hdoop 集群了
1、测试 HDFS
切换到 hdfs 账户 cd /tmp,上传安装包提供的 Kerberos-testjar 到/tmp/下
执行 hadoop jar Kerberos-test.jar com.itheima.kerberos.test.FSTools
正确输出:
===查询===
rwxr-xr-x 0 0 1970-01-01 08:00:00 hdfs://cdh0.itcast.cn:8020/mr-data
rw-r--r-- 3 1366 2019-09-27 20:25:55 hdfs://cdh0.itcast.cn:8020/readme.txt
rwxrwxrwx 0 0 1970-01-01 08:00:00 hdfs://cdh0.itcast.cn:8020/tmp
rwxrwxr-x 0 0 1970-01-01 08:00:00 hdfs://cdho.itcast.cn;8020/user
===上传===
===查询===
rwxr-xr-x 0 0 1970-01-01 08:00:00 hdfs://cdho.itcast.cn:8020/mr-data
rw-r--r-- 3 229072 2019-09-27 20:57:41 hdfs://cdh0.itcast.cn:8020/nn.log
rw-r--r-- 3 1366 2019-09-27 20:25:55 hdfs://cdh0.itcast.cn:8020/readme.txt
rwxrwxrwx 0 0 1970-01-01 08:00:00 hdfs://cdh0.itcast.cn:8020/tmp
rwxrwxr-x 0 0 1970-01-01 08:00:00 hdfs://cdh0.itcast.cn:8020/user
===下载===
===删除===
true
=-=查询===
rwxr-xr-x 0 0 1970-01-01 08:00:00 hdfs://cdho.itcast.cn:8020/mr-data
rw-r--r- 3 1366 2019-09-27 20:25:55 hdfs://cdh0.itcast.cn:8020/readme.txt
xrwx 0 0 1970-01-01 08:00:00 hdfs://cdh0.itcast.cn:8020/tmp
rwxrwxr-x 0 0 1970-01-01 08:00:00 hdfs://cdho.itcast.cn:8020/user
查询列出了 hdfs 的目录,上传文件夹,多出一个 nn.log 文件夹给上传,下载 nn.log,删除 ture,再次查询就没有 nn.log,下载到 hdfs 后目录下。
2、测试 YARN
切换到 yarn 账户
cd/tmp
hadoop jar kerberos-test.jar comitheima.kerberos.test.WordCountApp /readme.txt /tmp/wd-output12 rm/cdho itcast.cngitcast.cn /etc/security/kevtabs/rm.servicekevtab
上面命令接受4个参数参数1hdfs 输入参数2wordcount 输出参数3 kerberos 的账户参数4 keytab 文件路径,回车,运行。
3、测试 HIVE
看一下刚刚 mar 的输出:[hdfs@cdh1 ~]$ hadoop fs -1s/tmp/wd-output12
可以看到刚刚也是成功的输出了:
再来 cat 一下,也是正确统计出来了单词的数量
切换到 hive 用户
cd/tmp
执行: hadoop jar Kerberos-test.jar com.itheima.kerberos.test.Hs2Tools(路径不一样可以修改原码)
正确结果输出如下:
[hive@cdho tmp]$ hadoop jar Kerberos-testjarcomitheimakerberos test.HS2Tools
19/09/26 17:52:04 INFO security.UserGroupInformation: Login successful for user hive/cdhe.itcast.cn@ITCA ST.CN using keytab file jetc/security/keytabs/hivekeytab
19/89/26 17:52:04 INFO jdbeUtils:Supplied authorities:cdhoitcastcn:1000019/09/26 17:52:04 INFO idbcUtils: Resolved authority:cdho.itcast.cn;10000
==显示表===
test temp
=建表详情=(基于 test-temp)
Id int
Name string
address string
===查询表===
1,hahaha,beijing
2,heiheihei,shanghai
3,hohoho,shenzhen
===删除表===
===显示表===
test temp
这对于操作在原码里面只需要加入这两行话,UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab(pri incipal, keytab):其实最主要是这一行,是需要去认证账户就可以给他一个账户名,这里还有重载的方法,那么除了可以使用 keytab 以外,还可以使用密码去认证,但是一般来说还是使用 eytab 最方便,你拿到文件就相当于拿到了入口,只要把那个文件保存好就可以了,不要让别人轻易的获得。
