使用 Java 代码集成测试|学习笔记

简介: 快速学习使用 Java 代码集成测试

开发者学堂课程【快速掌握 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

可以看到刚刚也是成功的输出了:

image.png

再来 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 最方便,你拿到文件就相当于拿到了入口,只要把那个文件保存好就可以了,不要让别人轻易的获得。

相关文章
|
2月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
377 7
|
2月前
|
Java 数据处理 API
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
265 115
|
2月前
|
安全 Java 编译器
为什么你的Java代码需要泛型?类型安全的艺术
为什么你的Java代码需要泛型?类型安全的艺术
189 98
|
2月前
|
安全 Java 容器
告别繁琐判空:Optional让你的Java代码更优雅
告别繁琐判空:Optional让你的Java代码更优雅
|
2月前
|
安全 Java 容器
告别空指针噩梦:Optional让Java代码更优雅
告别空指针噩梦:Optional让Java代码更优雅
391 94
|
2月前
|
Java 编译器 API
java最新版和java8的区别,用代码展示
java最新版和java8的区别,用代码展示
294 43
|
2月前
|
安全 Java 测试技术
《深入理解Spring》单元测试——高质量代码的守护神
Spring测试框架提供全面的单元与集成测试支持,通过`@SpringBootTest`、`@WebMvcTest`等注解实现分层测试,结合Mockito、Testcontainers和Jacoco,保障代码质量,提升开发效率与系统稳定性。
|
XML JSON 前端开发
阿里云JAVA高级测试试题及答案(十二)
阿里云JAVA高级测试试题及答案
338 0
阿里云JAVA高级测试试题及答案(十一)
阿里云JAVA高级测试试题及答案
288 0
|
XML 缓存 druid
阿里云JAVA高级测试试题及答案(十)
阿里云JAVA高级测试试题及答案
370 0