热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hadoop开发与调试(Windows10)

Intellijidea本地开发调试hadoop的方法使用软件的版本信息Intellijidea版本:2016.3.2hadoop版本:2.6.5数据

Intellij idea 本地开发调试hadoop的方法


使用软件的版本信息


Intellij idea版本: 2016.3.2

hadoop版本: 2.6.5

数据集: **Hadoop: The Definitive Guide
**(使用《hadoop权威指南》的1901和1902的两年的天气统计的源码实例)



附上源码


hadooptestMapper

package cn.zcs.zzuli;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;/*** Created by 张超帅 on 2018/6/23.*/public class hadooptestMapper extends Mapper<LongWritable, Text, Text, IntWritable> {private static final int MISSING = 9999;@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {String line = value.toString();String year = line.substring(15, 19);int airTemperature;if (line.charAt(87) == &#39;+&#39;) { // parseInt doesn&#39;t like leading plus signsairTemperature = Integer.parseInt(line.substring(88, 92));} else {airTemperature = Integer.parseInt(line.substring(87, 92));}String quality = line.substring(92, 93);if (airTemperature != MISSING && quality.matches("[01459]")) {context.write(new Text(year), new IntWritable(airTemperature));}}}

hadooptestReducer

package cn.zcs.zzuli;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;/*** Created by 张超帅 on 2018/6/23.*/public class hadooptestReducer extends Reducer<Text, IntWritable, Text, IntWritable>{@Overrideprotected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {int maxValue = Integer.MIN_VALUE;for(IntWritable value : values) {maxValue = Math.max(maxValue, value.get());}context.write(key, new IntWritable(maxValue));}}

hadooptest

package cn.zcs.zzuli;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.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.File;/*** Created by 张超帅 on 2018/6/23.*/public class hadooptest {public static void main(String[] args) throws Exception {if (args.length != 2) {System.err.println("Usage: MaxTemperature ");System.exit(-1);}Job job = Job.getInstance(new Configuration());job.setJarByClass(hadooptest.class);job.setJobName("Max temperature");File inputdir = new File(args[0]);File[] files = inputdir.listFiles();for (File file : files) {FileInputFormat.addInputPath(job, new Path(file.toString()));}FileOutputFormat.setOutputPath(job, new Path(args[1]));job.setMapperClass(hadooptestMapper.class);job.setReducerClass(hadooptestReducer.class);job.setOutputKeyClass(Text.class); //注1job.setOutputValueClass(IntWritable.class);System.exit(job.waitForCompletion(true) ? 0 : 1);}}

建立项目 (File->new->project)


  • 创建包->在包里建立如上三个类

  • 项目结构如下图所示:


hadoop开发配置


  • File->Project Structure->Modules
  • 点击加号->JARs or dectories


  • 在Project Structure 中找到Artifacts点击。
  • 点击加号添加JARs


  • 点击加号->module output->OK;

  • 完成

  • Edit Configurations

  • 在Edit Configurations 界面点击加号->Application


  • 编辑各个参数信息

- (1) main class需要输入org.apache.hadoop.util.RunJar
- (2) program arguments,填写参数如上图所示:- 第一个参数之前在project structure中填写的jar文件路径,第二个参数是输入文件的目录,第二个参数是输出文件的路径- (3) 在项目中新建一个输入路径并将输入文件放进去(输出文件不用建立,系统自己建立的)

FAQ


找不到类


  • 发现刚才填写参数的地方着了一个参数,需要将main函数所在类的路径添加进去:


eclipse 中运行 Hadoop2.xx map reduce程序 出现错误(null) entry in command string: null chmod 0700


  • 解决办法:

    在https://github.com/SweetInk/hadoop-common-2.7.1-bin
    中下载winutils.exe,libwinutils.lib 拷贝到%HADOOP_HOME%\bin目录 。

  • 再次执行程序,报错:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Zat org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:609)at org.apache.hadoop.fs.FileUtil.canRead(FileUtil.java:977)at org.apache.hadoop.util.DiskChecker.checkAccessByFileMethods(DiskChecker.java:187)at org.apache.hadoop.util.DiskChecker.checkDirAccess(DiskChecker.java:174)at org.apache.hadoop.util.DiskChecker.checkDir(DiskChecker.java:108)at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.confChanged(LocalDirAllocator.java:285)at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:344)at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:150)at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:131)at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:115)at org.apache.hadoop.mapred.LocalDistributedCacheManager.setup(LocalDistributedCacheManager.java:125)at org.apache.hadoop.mapred.LocalJobRunner$Job.(LocalJobRunner.java:163)at org.apache.hadoop.mapred.LocalJobRunner.submitJob(LocalJobRunner.java:731)at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:240)at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:422)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287)at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1308)at com.jack.hadoop.temperature.MinTemperature.main(MinTemperature.java:37)

  • 在https://github.com/SweetInk/hadoop-common-2.7.1-bin中下载hadoop.dll,并拷贝到c:\windows\system32目录中。
  • 注意:程序中的路径都要写windows文件系统中的路径了,不再是hdfs中的路径。

输入文件的目录问题(出现权限问题)


Hadoop报错:Failed to locate the winutils binary in the hadoop binary path


  • 这个也是文件目录问题

推荐阅读
  • 本文整理了Java中org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc.getTypeInfo()方法的一些代码示例,展 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • importorg.apache.hadoop.hdfs.DistributedFileSystem;导入方法依赖的package包类privatevoidtestHSyncOpe ... [详细]
  • Maven构建Hadoop,
    Maven构建Hadoop工程阅读目录序Maven安装构建示例下载系列索引 序  上一篇,我们编写了第一个MapReduce,并且成功的运行了Job,Hadoop1.x是通过ant ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  • 本文整理了Java中org.apache.hadoop.hbase.client.Increment.getDurability()方法的一些代码示例,展示了 ... [详细]
  • MapReduce工作流程最详细解释
    MapReduce是我们再进行离线大数据处理的时候经常要使用的计算模型,MapReduce的计算过程被封装的很好,我们只用使用Map和Reduce函数,所以对其整体的计算过程不是太 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
author-avatar
过去丶真的過卜去
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有