环境

Ubuntu 16.04 + Hadoop 2.7.4 + Intellij idea 2017.2 + jdk 1.8

创建过程

新建工程

  1. 新建一个工程
  2. 输入工程名
    可以随便给工程起一个名字,这里我写了“firstHadoop”,然后Finish。

创建包结构及java文件

由于工程比较简单,这里直接将WordCount.java文件放到src目录下,项目大的话还是要创建合理的包结构的。

WordCount代码如下(hadoop自带例子中也有):

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.*;import java.io.IOException;
import java.util.Iterator;
import java.util.StringTokenizer;
public class WordCount {public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable>{private final static IntWritable one = new IntWritable(1);private Text word = new Text();@Overridepublic void map(LongWritable longWritable, Text text, OutputCollector<Text, IntWritable> outputCollector, Reporter reporter) throws IOException {String line = text.toString();StringTokenizer tokenizer = new StringTokenizer(line);while(tokenizer.hasMoreTokens()){word.set(tokenizer.nextToken());outputCollector.collect(word,one);}}}public static class Reduce extends MapReduceBase implements Reducer<Text,IntWritable,Text, IntWritable>{@Overridepublic void reduce(Text text, Iterator<IntWritable> iterator, OutputCollector<Text, IntWritable> outputCollector, Reporter reporter) throws IOException {int sum= 0;while(iterator.hasNext()){sum += iterator.next().get();}outputCollector.collect(text, new IntWritable(sum));}}public static void main(String[] args) throws Exception{JobConf conf = new JobConf(WordCount.class);conf.setJobName("wordCount");conf.setOutputKeyClass(Text.class);conf.setOutputValueClass(IntWritable.class);conf.setMapperClass(Map.class);conf.setReducerClass(Reduce.class);conf.setInputFormat(TextInputFormat.class);conf.setOutputFormat(TextOutputFormat.class);FileInputFormat.setInputPaths(conf,new Path(args[0]));FileOutputFormat.setOutputPath(conf, new Path(args[1]));JobClient.runJob(conf);}
}

这时代码会有很多错误提示,接下来导入hadoop所需jar包

导入Hadoop依赖的jar包

在工程名点击右键,选择Open Module Settings,或直接使用快捷键Ctrl+Shift+Alt+S,打开Project Structure,找到Modules中的Dependencies,如果没有JDK,先添加JDK。
1. 添加Hadoop依赖的jar包
点击右侧+号,(2016版本idea在下面),选择JARs or directories
将下载的Hadoop目录下share/hadoop文件夹下的目录逐个添加进来。这里我的目录是/usr/local/hadoop/share/hadoop,可以根据自己的hadoop所在目录修改

2. 添加Artifacts
新建一个空的jar,输入名字后,添加Module Output,如图


加入我们创建的项目,点击确定。至此,hadoop依赖的jar包已添加完毕,代码中的错误也消失了,如果没有可以手动编译一下。

运行时配置

接下来配置 Run/Debug Configurations
1. 点击“+”号新建一个Application,起一个名字。

选择main函数所在位置,这里直接就选择WordCount文件(class文件)
2. 配置Program arguments

两个参数分别为输入文件和输出文件所在位置。其中hdfs://localhost:9000是与hadoop的配置有关,就是core-site.xml配置文件中的fs.defaultFS属性的值。这里根据自己配置的值自行调整,后面为文件绝对路径。

将文件放入HDFS文件系统

如果没有启动hadoop,先启动hadoop。启动后,将本地文件put到HDFS文件系统中。需要注意文件路径,如果输入

hadoop fs -put xxx.txt input

则文件的绝对路径是/user/你的用户名/input。

如果输入

hadoop fs -put xxx.txt /input

则文件的绝对路径是/input
输出路径同理

执行程序并查看结果

在代码区右键,然后运行程序,执行完成之后,从相应的输出路径将执行结果get到本地,即可查看结果。

hadoop fs -get /output ./output

至此,我的第一个Hadoop程序已经创建完成。

参考文章

intellij idea本地开发调试hadoop的方法
使用IntelliJ IDEA 16.1写hadoop程序

java程序员的大数据之路(2):创建第一个Hadoop程序相关推荐

  1. java程序员的大数据之路(1):Hadoop安装

    Hadoop伪分布式安装 从今天开始我会在这里记录在大数据学习方面的方法和遇到的一些问题. 首先从最著名的开源平台Hadoop开始学习.参考安装教程,这个教程比较全面,按照步骤一步步安装即可. 安装时 ...

  2. java程序员的大数据之路(12):Hadoop的守护进程

    关键属性 Hadoop守护进程的关键属性大多标记为final,使作业的配置无法覆盖. 典型的core-site.xml配置文件 <?xml version="1.0"> ...

  3. java程序员的大数据之路(13):Pig入门

    Pig简介 Pig为大型数据集的处理提供了更高层次的抽象. Pig包括两部分: 用于描述数据流的语言,称为Pig Latin. 用于运行Pig Latin程序的执行环境.当前有两个环境:单JVM中的本 ...

  4. java程序员的大数据之路(3):用maven构建Hadoop项目

    背景 由于Hadoop项目多数是比较大的项目,因此我们选择使用构建工具来构建Hadoop项目,这里我们使用的是maven.当然也可以使用Gradle等比较流行的构建工具 构建过程 这里总结一下我使用I ...

  5. java程序员的大数据之路(9):MapReduce的类型

    概述 Hadoop的MapReduce中,map和reduce函数遵循如下常规格式: map:(K1,V1) -> list(K2,V2) reduce:(K2,list(V2)) -> ...

  6. java程序员的大数据之路(15):Pig Latin用户自定义函数

    过滤函数 所有的过滤函数都要继承FilterFunc类,并且实现抽象方法exec(),该方法的返回类型为Boolean. 示例代码如下: package com.udf.filter;import o ...

  7. java程序员的大数据之路(14):Pig Latin

    结构 一个Pig Latin程序由一组语句构成,一个语句可以理解为一个操作,或一个命令.语句必须以分号结束. Pig Latin有两种注释方法,双减号表示单行注释.多行注释可以使用/* 和 */表示. ...

  8. java程序员的大数据之路(8):MapReduce的工作机制

    概述 Hadoop运行作业时的整个过程如果所示. 包含如下4个独立的实体. 客户端:提交MapReduce作业. jobtracker:协调作业的运行.它的主类是JobTracker. tasktra ...

  9. java程序员的大数据之路(7):基于文件的数据结构

    SequenceFile 介绍 由于日志文件中每一条日志记录是一行文本.如果想记录二进制类型,纯文本是不合适的.这种情况下,Hadoop的SequenceFile类非常合适.SequenceFile可 ...

最新文章

  1. 如何成为顶尖管理者?
  2. TCP-IP详解:快速重传与快速恢复
  3. ABAP模块P类型详细解释
  4. 设计模式的理解:桥模式 Bridge
  5. aws技术峰会2018_AWS re:Invent 2018的5大公告
  6. JavaFX:TouchGesture内存泄漏?
  7. jsp mysql servlet_JSP+Servlet+JDBC+mysql实现的学生成绩管理系统
  8. 总结C语言中的数组知识点
  9. 35 岁 学python 必要_程序员:Python学不学?完全没必要纠结
  10. 第 1-2 课:你不知道的基础数据类型和包装类 + 面试题
  11. java上下左中右的布局面板_JAVA GUI重要知识点学习心得
  12. 小白学开发(iOS)OC_ SEL数据类型(2015-08-10)
  13. 数学之美系列好文,强烈推荐
  14. pillow图像格式转化和缩放操作
  15. 虚拟同步发电机_学术简报基于分散式微电网的虚拟同步发电机无通信预同步并网方案...
  16. 【cocos2d-js】监听双击
  17. JAVA算法:李白遇花喝酒游戏JAVA DFS 算法设计
  18. linux安装浏览器 linux本地浏览器进行访问
  19. ViewFlipper动态加载View
  20. 在studio one中使用iZotope Ozone 9?臭氧9怎么导入到Logic Pro X和AU中?速看教程

热门文章

  1. 在苏联时期有没有计算机语言,俄罗斯留学时没有语言可以过去吗
  2. 国家职业分类大典公示 心理咨询行业迎来重大变革
  3. 钢七连C2游戏编程具体知识点清单V2.0
  4. 学知网是个有5000G学习资料的下载网站,注册后可免费下载以下资料
  5. ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digi
  6. Keka for Mac (优秀的压缩解压缩工具) v1.2.50
  7. python模拟浏览器请求
  8. 如何在本地建立服务器以后使得外网可以访问(nat123)
  9. Last.fm - 推动社会音乐革命
  10. net.sf.json-lib