使用cloudera CHD3u1 —— 使用eclipse plugin提交Job
来源:互联网 发布:无功功率测量算法 编辑:程序博客网 时间:2024/06/06 08:36
Clouder CDH3B3 开始后hadoop.job.ugi不再生效,这意味着无法通eclipse plugin提交job和修改hdfs。
大家初次使用hadoop eclipse plugin一定在修改HDFS文件过程中出现过下面的错误
问题在于我当前OS用户名为“test”,这个值是hadoop通过 System.getProperty("user.name") 获取的,如果当前用户名和HDFS文件所属用户名不一致,修改HDFS文件时则会报AccessControlException,怎么解决呢?办法是修改hadoop插件的“hadoop.job.ugi”属性为"hadoop,hadoop"就可以了,告诉hdfs我当前就是hadoop用户,这个属性也可以在代码里设置。
最近部署了一个CDH版本Hadoop集群,首先发现的是它的eclipse plugin和Apache hadoop plugin不兼容,需要手工编译(这个jar文件在这里可以下到:http://heipark.iteye.com/admin/blogs/1178756),接着发现hadoop plugin属性配置页面没有hadoop.job.ugi配置项了,在代码中设置也不好使,还是报AccessControlException。出现什么情况呢?看看cloudera的公告:
cdh基于安全考虑建议如下方式提交job和修改hdfs:
创建一个kerberos用户,这里叫oozie(其实它是一个开源hadoop workflow框架),然后通过代理方式提交job,即,让当前客户端用户模拟成oozie这个授权用户做操作。
具体信息参考这里:http://archive.cloudera.com/cdh/3/hadoop/Secure_Impersonation.pdf
这里说下两种基于试验目的的获取权限的方法:
- 关闭dfs权限管理,方法是修改hdfs-site.xml文件设置属性dfs.permissions为false;
- 通过代码将当前用户设置为集群管理者权限,这里我设置当操作者为hadoop,代码如下:
- <SPAN><SPAN style="FONT-SIZE: small">UserGroupInformation ugi = UserGroupInformation.createRemoteUser("hadoop");
- try {
- ugi.doAs(new PrivilegedExceptionAction<Void>() {
- public Void run() throws IOException {
- Job job = new Job(initConf(), "tencent m/r");
- // do something
- System.exit(job.waitForCompletion(true) ? 0 : 1);
- return null;
- }
- });
- } catch (InterruptedException e) {
- e.printStackTrace();
- }</SPAN></SPAN>
UserGroupInformation ugi = UserGroupInformation.createRemoteUser("hadoop");try {ugi.doAs(new PrivilegedExceptionAction<Void>() {public Void run() throws IOException {Job job = new Job(initConf(), "tencent m/r");// do somethingSystem.exit(job.waitForCompletion(true) ? 0 : 1);return null;}});} catch (InterruptedException e) {e.printStackTrace();}
- 使用cloudera CHD3u1 —— 使用eclipse plugin提交Job
- 使用eclipse向yarn提交job
- eclipse Job 使用案例
- Groovy Eclipse Plugin使用
- mapreduce eclipse plugin使用
- Eclipse plugin -- Antlr 使用
- 自己编译的cloudera cdh3u2 eclipse plugin
- Eclipse RMI plugin的使用
- oracle—job使用详解
- Job的提交—客户端
- Job的提交—客户端
- 【eclipse】 使用The Eclipse Color Theme Plugin
- Eclipse RCP中多线程Job使用
- Eclipse RCP中多线程Job使用
- Hadoop2.7.0学习——Windows下hadoop-eclipse-plugin-2.7.0插件使用
- 我主要使用的Eclipse些Plugin!
- 如何使用links配置eclipse的plugin
- 在Eclipse中使用FindBugs plugin.
- HighCharts自定义坐标轴显示内容
- c#赋值
- 睁大眼睛看排序:直观展现常用排序算法!
- 【Android】自动提示匹配之AutoCompleteTextView
- Android 应用的自动升级、更新模块的实现
- 使用cloudera CHD3u1 —— 使用eclipse plugin提交Job
- iPhone开源项目汇总
- Android程序运行报错"Process xxxx has died"原因查找
- 2011.12.26 新的开始
- 答案都给你了-------你居然还是不会??????
- 高内聚低耦合
- 变量应该在循环之内,还是应该在循环之外。
- Android 内存泄漏调试
- Ubuntu 系统下自启动选项的设置方法