Win7下通过eclipse远程连接CDH集群来执行相应的程序以及错误说明
最近尝试这用用eclipse连接CDH的集群,由于之前尝试过很多次都没连上,有一次发现Cloudera Manager是将连接的端口修改了,所以才导致连接不上CDH的集群,之前Apache hadoop采用的端口是9000和9001,而Cloudera Manager采用的端口是8020端口,于是通过eclipse中的MapReduce选项卡,edit一个选项连接,发现连上了。这给我带来了一些意外。
在这里有一个问题需要说明一下,这个eclipse的插件我还是用的Apache hadoop的hadoop2.5.2时编译的插件,而我上面能够连上的集群是CDH5.4.4,它采用的Apache hadoop是hadoop2.6.0的版本。这说明什么?说明eclipse的插件与hadoop的版本没多大关系,但是这里需要注意一个问题,我在创建MapReduce工程的时候,是没有加载hadoop2.5.2的jar包,所以我们需要在创建的工程下面手动添加你的CDH版本的jar包。这是由于我将MapReduce的的hadoop的安装目录设置成我的CDH5.4.4的路径(具体:Window--->Preferences---->Hadoop Map/Reduce)。通常情况下,如果版本相同的话,创建一个工程是会自动加载对应的jar包的。
好了,现在我们可以创建我们想要的版本的MapReduce的工程了,那么接下来就是是否能正常的运行呢?答案当然是否定的。那么怎么办呢?请继续耐心的看完下面内容。
当我按照上面创建好工程后,添加了WordCount的例子,运行发现出现了错误,错误一次列举如下:
错误1:Exceptionin thread "main" java.lang.UnsatisfiedLinkError:org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V
这个错误,网上也有很多人遇到过,开始以为我们有在C:/Windows/System32/和Hadoop—Home/bin目录下添加hadoop.dll文件,但是我进去查看发现我添加了,再认为是我的hadoop_home的环境变量没有配置,再次检查发现我配置了环境变量啊。于是继续在网上查找该问题的解决方案。后来发现有人说是hadoop.dll的版本的问题,hadoop2.4之前和之后对hadoop.dll的要求不一样。因此需要在网上下载对应的hadoop.dll文件即可。(在这里我没有提供下载的连接,需要的可以留言)
错误2:Exception in thread "main"java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
错误2是紧接着错误1的,网上说目前错误的解决办法还没有解决,采用一种临时的方式来解决,解决的办法是:通过下载你的CDH的版本的源码(hadoop2.6.0-cdh5.4.4-src.zip),在对应的文件下,hadoop2.6.0-cdh5.4.4-src\hadoop-common-project\hadoop- common\src\main\java\org\apache\hadoop\io\nativeio下NativeIO.java 复制到对应的Eclipse的project(复制的过程中需要注意一点,就是在当前的工程下创建相同的包路径,这里的包路径org.apache.hadoop.io.nativeio,再将对应NativeIO.java文件复制到对应的包路径下即可。)
最后修改NativeIO.java文件中的557行的代码,如下所示:
源代码如下:
public static boolean access(String path, AccessRight desiredAccess)
throws IOException {
return access0(path, desiredAccess.accessRight());
}
修改后的代码如下:
public static boolean access(String path, AccessRight desiredAccess)
throws IOException {
return true;
//return access0(path, desiredAccess.accessRight());
}
再次执行,发现ok了。
前面几篇文章介绍了如何通过eclipse来调试mapreduce程序,其中一篇文章是介绍调试技巧:http://www.cnblogs.com/ljy2013/p/4686005.html 通过这篇文章现在可以直接写对应版本的CDH的MapReduce的工程了。并且可以调试。
Win7下通过eclipse远程连接CDH集群来执行相应的程序以及错误说明的更多相关文章
- windows下eclipse远程连接hadoop集群开发mapreduce
转载请注明出处,谢谢 2017-10-22 17:14:09 之前都是用python开发maprduce程序的,今天试了在windows下通过eclipse java开发,在开发前先搭建开发环境.在 ...
- Eclipse远程提交hadoop集群任务
文章概览: 1.前言 2.Eclipse查看远程hadoop集群文件 3.Eclipse提交远程hadoop集群任务 4.小结 1 前言 Hadoop高可用品台搭建完备后,参见<Hadoop ...
- kubectl客户端工具远程连接k8s集群
一.概述 一般情况下,在k8smaster节点上集群管理工具kubectl是连接的本地http8080端口和apiserver进行通讯的,当然也可以通过https端口进行通讯前提是要生成证书.所以说k ...
- CDH集群spark-shell执行过程分析
目的 刚入门spark,安装的是CDH的版本,版本号spark-core_2.11-2.4.0-cdh6.2.1,部署了cdh客户端(非集群节点),本文主要以spark-shell为例子,对在cdh客 ...
- windows下在eclipse上远程连接hadoop集群调试mapreduce错误记录
第一次跑mapreduce,记录遇到的几个问题,hadoop集群是CDH版本的,但我windows本地的jar包是直接用hadoop2.6.0的版本,并没有特意找CDH版本的 1.Exception ...
- Win7下无法提交MapReduce Job到集群环境(转)
一. 对hadoop eclipse plugin认识不足 http://zy19982004.iteye.com/blog/2024467曾经说到我最hadoop eclipse plugin作用的 ...
- 配置kubectl在Mac(本地)远程连接Kubernetes集群
集群部署在云服务器的ECS上,但是有时需要本地原创连接集群,这就需要通过ApiServer的外网地址去访问集群,但是-/.kube/config下的地址又都是内网,所以可以使用如下方式解决: Mac安 ...
- Eclipse/MyEclipse连接Hadoop集群出现:Unable to ... ... org.apache.hadoop.security.AccessControlExceptiom:Permission denied问题
问题详细如下: 解决办法: <property> <name>dfs.premissions</name> <value>false</value ...
- Eclipse远程连接Hadoop
Windows下面调试程序比在Linux下面调试方便一些,于是用Windows下的Eclipse远程连接Hadoop. 1. 下载相应版本的hadoop-eclipse-plugin插件,复制到ecl ...
随机推荐
- JVM监控与调优
目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 转:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html光说不练假把式,学习J ...
- C#获取文件时间
在NTFS下,文件的创建及修改时间可以精确到毫秒,以下是测试过程. DirectoryInfo diSource = new DirectoryInfo(@"C:\Users\不告诉你\De ...
- Visual Studio的Web Performance Test提取规则详解(2)
总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...
- [问题2015S12] 复旦高等代数 II(14级)每周一题(第十三教学周)
[问题2015S12] 设 \(A\) 为 \(n\) 阶实矩阵, 若对任意的非零 \(n\) 维实列向量 \(\alpha\), 总有 \(\alpha'A\alpha>0\), 则称 \( ...
- StudyFoxCMS-6
1.phpstrom中安装emmet File=>Settings=>Plugins=>右侧搜索框搜索“emmet”=>点击下方中间按钮“Browse repositories ...
- Unity3D之协程(Coroutines & Yield )
在Unity中StartCoroutine/yield return这个模式到底是怎么应用的? 比如你要一个方法进行一个比较耗时的复杂运算~同时又想让脚本流畅的进行其他操作而不是卡在那里等该方法执行完 ...
- sqlite创建表
create table bike (id ) primary key, password ));
- JS中的各种类型转换规则(转)
JS中的类型转换非常恶心,大家都懂的,不过该学还是要学. 今天看犀牛书看到了转换规则,总结出来. X转字符串.数字.布尔值 X表示各种类型的值,直接上图: 值 转数字 转字符串 转布尔值 undefi ...
- 深入浅出设计模式——单例模式(Singleton Pattern)
模式动机对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务:一个系统只能有一个窗口管理器或文件系统:一个系统只能有一个计时工具或ID(序号) ...
- 《BI那点儿事—数据的艺术》理解维度数据仓库——事实表、维度表、聚合表
事实表 在多维数据仓库中,保存度量值的详细值或事实的表称为“事实表”.一个按照州.产品和月份划分的销售量和销售额存储的事实表有5个列,概念上与下面的示例类似. Sate Product Mouth U ...