Hadoop Intellij IDEA本地开发环境搭建

原文:http://blog.csdn.net/u010171031/article/details/53024516

首先我们需要新建一个java工程用于开发Mapper与Reducer,同时我们也需要导入hadoop的依赖包,这些包可以在hadoop的 share/hadoop 目录下找到,你可以把这些包单独取出来作为之后项目的备用。

打开Project Structure

找到module点击右侧的小加号JARS or directories…
添加

common
hdfs
mapreduce
yarn
comom/lib
  • 1
  • 2
  • 3
  • 4
  • 5

添加完成之后应该像下图

然后是Artifacts

点击加号,新建一个jar,jar->empty

给自己的jar包取个名字,然后点击下面的绿色加号,Module output,在弹出的对话框中选择当前的项目,然后点击ok保存。

接着要新建一个Application

Edit Configurations

点击加号新建,选择Application

然后取个名字,在右侧的Main class中输入org.apache.hadoop.util.RunJar

Working directory当然是选择当前项目的目录了

最后是Program arguments,这个是设置默认参数的会在程序执行的时候传递进去

/home/edmond/workspace/IdeaProjects/Hadoop/HadoopWordCount/out/artifacts/wordcount/wordcount.jar
com.company.Main
input
output
  • 1
  • 2
  • 3
  • 4

第一个是jar包所在的位置
第二个是Main函数所在的类
第三四两个参数是由自己决定的(这两个参数会作为args[0]和args[1]传入)

点击ok保存。

然后我们需要开始对Mapper以及Reducer进行编写,首先先创建一个Mapper类

public class WordCountMapper extends Mapper<LongWritable,Text,Text,IntWritable>{private final static IntWritable one = new IntWritable(1);private Text word = new Text();@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()){word.set(itr.nextToken());context.write(word,one);}}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

如果类都可以正常导入说明jar包没有问题

接着是Reducer类

public class WordCountReducer extends Reducer<Text,IntWritable,Text,IntWritable>{private IntWritable result = new IntWritable();@Overrideprotected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {int sum = 0;for(IntWritable val:values){sum += val.get();}result.set(sum);context.write(key,result);}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

最后我们需要编写main方法作为测试

public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {// write your code hereConfiguration configuration = new Configuration();if(args.length!=2){System.err.println("Usage:wordcount <input><output>");System.exit(2);}Job job = new Job(configuration,"word count");job.setJarByClass(Main.class);job.setMapperClass(WordCountMapper.class);job.setReducerClass(WordCountReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(job,new Path(args[0]));FileOutputFormat.setOutputPath(job,new Path(args[1]));System.exit(job.waitForCompletion(true)?0:1);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

这样main方法启动就会使用hadoop的mapper和reducer来处理数据

我们在项目目录下面创建一个input文件夹,在文件夹中创建一个文件,然后在文件中随意输入一些字符串,保存,然后运行刚刚新建的Application,等待运行完成会发现项目目录下多了一个output文件夹,打开里面的‘part-r-00000’文件就会发现里面是对你输入字符串的出现个数的统计。

当你第二次运行的时候因为hadoop不会自动删除output目录所以可能会出现错误,请手动删除之后再运行。
这样就可以使用intellij来开发hadoop程序并进行调试了。

Hadoop Intellij IDEA 建demo相关推荐

  1. hadoop streaming编程小demo(python版)

    大数据团队搞数据质量评测.自动化质检和监控平台是用django,MR也是通过python实现的.(后来发现有orc压缩问题,python不知道怎么解决,正在改成java版本) 这里展示一个python ...

  2. Quartz.net 定时任务矿建Demo

    1. 首先新建一个 window 控制台程序 2. 通过 nuget 的方式搜索并安装 Quartz . 安装的时候回引入3个程序集 Quartz.dll .Common.logging.dll . ...

  3. IntelliJ IDEA 建空包合并问题。

    举例:我想在一个包下,创建2个空子包,这个时候,却无法再IDE里完成. 老是这样子,如果选中dff.sfsdf再右键 创建包的话,结局是再sfsdf下 又创建一个文件夹. 如果右键创建类的话,实际上在 ...

  4. Hadoop之HDFS文件操作

    摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HD ...

  5. linux 查看hdfs文件,Hadoop之HDFS文件操作

    摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行    Java API HDF ...

  6. Hadoop实战之三~ Hello World

    本文介绍的是在Ubuntu下安装用三台PC安装完成Hadoop集群并运行好第一个Hello World的过程,软硬件信息如下: Ubuntu:12.04 LTS Master: 1.5G RAM,奔腾 ...

  7. hadoop+Spark实战基于大数据技术之电视收视率企业项目实战

    课程简介 本课程将通过一个电视收视率项目实战驱动讲解,项目案例是国内的一家广电企业作为非洲国家的一个运营商,以用户收视行为数据作为基础数据,通过对频道和节目的分析,采用多维度统计分析的方法挖掘用户的收 ...

  8. Hadoop笔记02-Hadoop-HDFS

    HDFS概述 HDFS产出背景及定义 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分 ...

  9. Hadoop 常用的命令

    创建.删除 -文件,文件夹 hadoop fs -touchz /user/demo/3.txt 创建新文件 hadoop fs -mkdir /user 在本地根目录创建user文件夹 hadoop ...

最新文章

  1. 纯CSS实现文字一行居中,多行左对齐的方法
  2. 【剑指Offer】28、数组中出现次数超过一半的数字
  3. Unix Regex
  4. pgsql自动安装shell脚本整理
  5. OpenCV绘图和注释
  6. 用 Python 编写一个天气查询应用
  7. Java自定义Annotation方法
  8. C#获取实体类属性名和值 | 遍历类对象
  9. 豪华版飞机大战系列(三)
  10. java实验目的_java实验报告一
  11. 模式识别算法:SVM支持向量机
  12. python库ffmpeg的错误解决方法:“Couldn‘t find ffmpeg or avconv - defaulting to ffmpeg, but may not work“
  13. Android 工具:TraceView
  14. 短线起爆点(移动均线15种战法)
  15. nginx 499 错误的解决
  16. 健康小贴士:喝酒时别点哪些菜_新闻中心_新浪网
  17. 相机的内参会改变吗_关于相机内参中的焦距fx和fy
  18. Android 面部识别之二(调用开源面部识别算法seetaface检测)
  19. 《卓有成效的管理者》培训感悟
  20. 热电阻 热电偶 测量电路_热电偶温度传感器与热电阻温度传感器之间应该如何选择?...

热门文章

  1. android siri 源码,Android的SIRI 。
  2. mysql5.7.17主从_MySQL 5.7主从不停机添加新从库
  3. 全国信息化计算机应用技术水平教育考试,全国信息化计算机应用技术水平教育考试试卷.doc...
  4. cmd输入pip报错_安装pip报错:WARNING: Retrying (Retry(total=4,...
  5. es分词器错误分析_了解ElasticSearch分析器
  6. dubbo 即是服务提供者又是消费者_Dubbo详细介绍与安装使用过程
  7. oracle is删除表数据库,rman删除expired备份提示“This command is forbidden”
  8. Java前沿分享:value或许成为java的新关键字
  9. 干掉Postman?测试接口直接生成API文档,这工具强烈推荐!
  10. 皮一皮:学霸和学渣的区别