windows下远程连接hadoop开发实践及问题解决
来源:互联网 发布:类似无心法师的网络剧 编辑:程序博客网 时间:2024/06/08 12:23
环境搭建可参考:win10下使用eclipse开发hadoop环境搭建
本文对于在windows下使用eclipse远程连接hadoop进行开发的所遇到的问题进行了总结,并给出了相应的解决方案,以此为记,也希望能对有相同问题的后来者有所帮助。
使用反编译工具,反编译hadoop所给的统计单词数的示例程序hadoop-examples.jar,代码如下:
package mrtest;import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import org.apache.hadoop.util.GenericOptionsParser;public class WordCount {public static void main(String[] args) throws Exception {Configuration conf = new Configuration();String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();if (otherArgs.length != 2) {System.err.println("Usage: wordcount <in> <out>");System.exit(2);}Job job = Job.getInstance(conf, WordCount.class.getSimpleName());job.setJarByClass(WordCount.class);job.setMapperClass(TokenizerMapper.class);job.setCombinerClass(IntSumReducer.class);job.setReducerClass(IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(job, new Path(otherArgs[0]));FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));System.exit(job.waitForCompletion(true) ? 0 : 1);}static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {private IntWritable result = new IntWritable();public void reduce(Text key, Iterable<IntWritable> values,Reducer<Text, IntWritable, Text, IntWritable>.Context context)throws IOException, InterruptedException {int sum = 0;for (IntWritable val : values) {sum += val.get();}this.result.set(sum);context.write(key, this.result);}}static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {private static final IntWritable one = new IntWritable(1);private Text word = new Text();public void map(Object key, Text value, Mapper<Object, Text, Text, IntWritable>.Context context)throws IOException, InterruptedException {StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()) {this.word.set(itr.nextToken());context.write(this.word, one);}}}}
在hadoop上运行该程序前先填写运行的配置参数:右键-》Run As-》Run Configurations-》Arguments;在Program arguments里填入输入输出目录:
hdfs://master:8020/usr/hadoop/wordCount/input
hdfs://master:8020/usr/hadoop/wordCount/output
如下图所示。
注意:根据自己实际情况填写,地址端口不对,都会报拒绝连接的异常,切记。在输入目录下上传自己需要处理的文件,譬如xxx.txt等。输出目录不能有,hadoop会自动生成,否则会报已存在。
上述步骤正确可以运行程序了,有可能会遇到以下两个主要异常,没有异常的略过。
(1)
Exception in thread “main”java.lang.NullPointerException
解决办法:此异常是windows下运行hadoop程序需要插件,下载以下几个插件:
点此下载hadoop_dll2.6.0
将下载的插件放入本地hadoop安装目录的bin文件夹下,并将%hadoop_home%/bin添加进入环境变量,重启电脑,再次运行程序,将发现该异常已经消失。
备注:如果还不行,将hadoop.dll放入C:\Windows\System32目录下,重启电脑测试。
(2)
Exception in thread "main"java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
点击异常查看NativeIO.java:557行,如下:
在windows下又访问检测,我们只需要将557行改为 return true; 即可。
下载hadoop源码,解压,在路径 hadoop-2.6.0-src\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\io\nativeio 下找到 NativeIO.java 文件,按照上述修改557行为返回 true 。
在项目的根目录下添加包名:org.apache.hadoop.io.nativeio,并将修改后的文件复制到该包下。如图所示:
至此,该异常解决。
祝顺利。
附:所需资源下载
hadoop2.6.0源码和eclipse插件
windows下hadoop2.6.0远程开发所用插件
- windows下远程连接hadoop开发实践及问题解决
- eclipse连接远程hadoop集群开发时0700问题解决方案
- eclipse远程连接hadoop集群配置(windows及linux下)
- redHat linux下安装hadoop 0.20.2, 并在windows下远程连接此hadoop,开发调试
- redHat linux下安装hadoop 0.20.2, 并在windows下远程连接此hadoop,开发调试 .
- RedHat linux下安装hadoop 0.20.2, 并在windows下远程连接此hadoop,开发调试
- redHat linux下安装hadoop 0.20.2, 并在windows下远程连接此hadoop,开发调试
- 【Hadoop】windows下链接远程ubuntu开发hadoop
- 配置windows下远程连接hadoop的问题
- windows下eclipse远程连接linux上的hadoop集群
- windows用eclipse远程连接Ubuntu下hadoop
- Windows下eclipse连接远程Hadoop+Hbase+zookeeper
- Windows上使用Eclipse远程连接Hadoop进行程序开发
- Win7下用Eclipse远程连接Hadoop进行开发
- windows Hadoop开发环境搭建及远程提交
- Hadoop集群实践-Windows上Eclipse远程Linux服务器集群Hadoop进行程序开发
- windows下搭建eclipse远程开发hadoop应用环境
- eclipse连接远程hadoop集群开发时权限不足问题解决方案
- 回文数
- Java 8里面lambda的最佳实践
- 被呼叫方拒绝接收呼叫。 (异常来自 HRESULT:0x80010001 (RPC_E_CALL_REJECTED))
- Java-教你搞对象
- gc overhead limit exceeded eclipse解决方案
- windows下远程连接hadoop开发实践及问题解决
- many2one 字段的 ondelete
- Caffemodel解析
- 在.htaccess文件中加入php_flag后网站报错
- 特殊的数字
- 【NOIP2016普及组】 third 模拟 port
- ie不支持startWith和endWith
- PyQT中ui界面转换python脚本pyuic4的参数小结
- grep 实现and or 操作