Atitit hadoop使用总结

目录

1.1. 下载300m ,解压后800M 1

1.2. 二:需要的jar包 1

2. Demo code 2

2.1. WCMapper 2

2.2. WCReduce 3

2.3. (3)实现运行驱动 3

3. Run 设置Hadoop  HADOOP_HOME 6

3.1. Input txt 6

3.2. Run output console 6

3.3. Result output .txt 7

4. 四:操作流程 jar mode 7

5. Ref 7

  1. 下载300m ,解压后800M

HDFS是Hadoop大数据平台中的分布式文件系统,为上层应用或其他大数据组件提供数据存储,如Hive,Mapreduce,Spark,HBase等。

  1. 二:需要的jar包

hadoop-2.4.1\share\hadoop\common\hadoop-common-2.4.1.jar

hadoop-2.4.1\share\hadoop\common\lib\所有jar包

hadoop-2.4.1\share\hadoop\mapreduce\lib\所有jar包

---------------------

  1. Demo code

    1. WCMapper 

package hadoopDemo;

import java.io.IOException;

import java.util.StringTokenizer;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

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;

//  public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> {

public class WCMapper extends Mapper<LongWritable, Text, Text, IntWritable> {

// 1.mapper阶段,切片

// 1).mapper类首先要继承自mapper类,指定输入的key类型,输入的value类型

// 2).指定输出的key类型,输出的value类型

// 3).重写map方法

// 在map方法里面获取的是文本的行号,一行文本的内容,写出的上下文对象

@Override

protected void map(LongWritable key, Text value_line, Context context) throws IOException, InterruptedException {

String line = value_line.toString();

String[] words = line.split(" ");

for (String word : words) {

Text key_Text = new Text();

IntWritable val_IntWritable = new IntWritable(1);

key_Text.set(word);

context.write(key_Text, val_IntWritable);

}

}

}

  1. WCReduce 

package hadoopDemo;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Reducer;

import com.alibaba.fastjson.JSON;

import com.google.common.collect.Maps;

import java.io.IOException;

import java.util.Map;

public class WCReduce extends Reducer<Text,IntWritable,Text,IntWritable> {

@Override

protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {

int sum=0; //定义一个变量来统计单词出现的次数

for (IntWritable num:values //遍历这个迭代器,累计单词出现的次数

) {

sum += num.get();

Map  m=Maps.newConcurrentMap();

m.put("key",key );

m.put("num",num);

m.put("sum_curr",sum );

System.out.println(JSON.toJSONString(m));

}

context.write(key,new IntWritable(sum));

}

}

  1. (3)实现运行驱动

运行驱动的目的就是在程序中指定用户的Map类和Reduce类,并配置提交给Hadoop时的相关参数。例如实现一个词频统计的wordcount驱动类:MyWordCount.java,其核心代码如下:

package hadoopDemo;

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.IOException;

public class WCDriver {

public static void main(String[]  args) throws IOException, ClassNotFoundException, InterruptedException {

System.load("D:\\haddop\\hadoop-3.1.1\\bin\\hadoop.dll");

//创建Job作业

Job job  = Job.getInstance(new Configuration());

//设置驱动类

job.setJarByClass(WCDriver.class);

//设置mapper类、reduce类

job.setMapperClass(WCMapper.class);

job.setReducerClass(WCReduce.class);

//设置map阶段输出的key类型、value类型

job.setMapOutputKeyClass(Text.class);

job.setMapOutputValueClass(IntWritable.class);

//设置reduce阶段输出key类型、value类型

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

//设置读取文件路径、输出文件路径

String path_ipt ="D:\\workspace\\hadoopDemo\\ipt.txt";

FileInputFormat.setInputPaths(job, new Path(path_ipt));

String path_out = "D:\\workspace\\hadoopDemo\\out.txt";

FileOutputFormat.setOutputPath(job, new Path(path_out));

//等待提交作业

boolean result = job.waitForCompletion(true);

System.out.println(result);

while(true)

{

Thread.sleep(5000);

System.out.println("..");

}

//    System.exit(result ? 0 : 1);

}

}

import org.apache.hadoop.conf.Conf?iguration;

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;

public class MyWordCount {

public static void main(String[] args) throws Exception {

Conf?iguration conf = new Conf?iguration();

Job job = new Job(conf, "word count");

job.setJarByClass(MyWordCount.class);

job.setMapperClass(WordcountMapper.class);

job.setCombinerClass(WordcountReducer.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);

}

}

从上述核心代码中可以看出,需要在main函数中设置输入/输出路径的参数,同时为了提交作业,需要job对象,并在job对象中指定作业名称、Map类、Reduce类,以及键值的类型等参数。来源:CUUG官网

  1. Run 设置Hadoop  HADOOP_HOME

可以通过附加下面的命令到 ~/.bashrc 文件中设置 Hadoop 环境变量。

export HADOOP_HOME=/usr/local/hadoop

Eclipse envi only can cfg in run cfg ..

  1. Input txt 

aaa bbb ccc aaa

  1. Run output console

{"num":{},"sum_curr":1,"key":{"bytes":"YWFh","length":3}}

{"num":{},"sum_curr":2,"key":{"bytes":"YWFh","length":3}}

{"num":{},"sum_curr":1,"key":{"bytes":"YmJi","length":3}}

{"num":{},"sum_curr":1,"key":{"bytes":"Y2Nj","length":3}}

  1. Result output .txt

D:\workspace\hadoopDemo\out.txt\part-r-00000  file

aaa 2

bbb 1

ccc 1

  1. 四:操作流程 jar mode

1、将项目打成jar包上传到虚拟机上 if use jar mode

运行jar文件

  1. Ref

Mapreduce实例---统计单词个数(wordcount) - Tyshawn的博客 - CSDN博客.html

MapperReduce入门Wordcount案例 - 小刘的博客 - CSDN博客.html

Atitit hadoop使用总结 目录 1.1. 下载300m ,解压后800M 1 1.2. 二:需要的jar包 1 2. Demo code 2 2.1. WCMapper 2 2.2. WC相关推荐

  1. 在linux中怎么编程软件下载,linux系统下载软件解压后怎么安装

    用户提问 linux系统里安装软件问题,可是怎么就是安装不了,请高手指教,最好详细点带个例子!还有,安装路径最好说明,谢谢了!满意肯定加分! 推荐答案 现在一般是使用 RPM ,YUM 和 APT 来 ...

  2. 什么是二维数组?二维遍历?Java二维数组制作图片迷宫 使用如鹏游戏引擎制作窗口界面 附带压缩包下载,解压后双击start.bat启动...

    什么是二维数组? 数组当中放的还是数组 int [][] arr=new int[3][2]; 有3个小箱子,每个箱子2个格子. 看结果? int [][] arr=new int[3][2]; Sy ...

  3. 蔡妍图片打包下载(解压后600多M)

    蔡妍群里以朋友发的,解压后600多M,分类蛮全的,喜欢的就快去下哦,115盘的,居心不良者勿下! http://u.115.com/file/e61xt2ek# 小坏图片.rar 显示的是小坏图片,因 ...

  4. 3.在slave1机器下载3个安装包解压后,复制给master机器

    务必:从机器slave1或者slave2中下载下面三个安装包 一.在slave1机器上下载下面三个安装包 jdk-8u111-Linux-x64.tar.gz 下载地址:http://www.orac ...

  5. 我下载的mysql解压后没有安装_mysql 解压版安装配置方法教程

    1.首先,你要下载MySQL解压版,下载地址 虽然mysql都有8.0了,但这里我要安装的是mysql5.7,其他版本方法类似 2.解压安装包,根据自己的喜好选择路径,我选择的路径是D盘,因此MySQ ...

  6. jdk安装包解压后如何安装(jdk下载安装)

    1.找到"解压到"按钮,一般解压到压缩包所在的位置就行,点"确定"2.解压后,找到这个文件夹,并在里面找到"**.setup"的文件(一般文 ...

  7. imx8的源码开发方式非yocto方式(三)——基于imx8的firmware-imx固件包下载与解压

    1.进入NXP的官方网站下载firmware-imx的固件包(最新版本V8.18版本,流程浏览器输入以下网址,即可下载),网址如下所示: https://www.nxp.com.cn/lgfiles/ ...

  8. 压缩包下载后php文件怎么打开,用户下载的压缩包rar格式或zip文件如何解压 解压后就可以安装或运行里面的文件了...

    狸窝网盘中分享有很多解决方案中使用到的软件资源,下载到电脑后是一个软件的文件压缩包,有的用户下载后不知道如何解压或说解压不了,怎么办?由于狸窝所面向用户比较大众化,为方便不同年龄层次和新手的使用,这里 ...

  9. 小程序资源下载、解压、保存到本地及本地文件的使用

    小程序对资源存储有限一般10M,不要超过限制 思路解析:将资源保存到本地,首先 需要获取到 本地路径 ,然后将文件下载(下载前需要判断文件是否更新,第一次和更新则需要下载,如果存在之前的资源则将其删除 ...

  10. 苹果cms10的php.ini目录列表,苹果cmsV10采集插件 安装包(解压后查看教程)

    苹果cmsV10采集插件 安装包(解压后查看教程) 所属分类:其他 开发工具:PHP 文件大小:574KB 下载次数:1 上传日期:2020-06-04 15:43:37 上 传 者:大秋 说明:   ...

最新文章

  1. 【机器学习】基于实战项目的SVM算法库使用方法详解
  2. 一个基于 Spring Boot 的项目骨架,少造轮子!
  3. postgreSQL入门01-安装
  4. 还在使用 Windows?我的70岁母亲都用了 21 年 Linux
  5. 编写一个脚本,用它来操纵QTP的运行
  6. 3G时代 一起走近无线运维的3A标准——柳州市劳动和社会保障局
  7. 生成对抗式网络 GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN等原理介绍、应用介绍及简单Tensorflow实现
  8. 介绍一款很好用的分区软件--分区助手(不用格式化磁盘哟~)
  9. 利用selenium获取接口数据
  10. IaaS(基础设施即服务),PaaS(平台即服务),SaaS(软件即服务)的区别
  11. 南京社保详解(绝对有用)
  12. oracle超级管理员忘记_Oracle 管理员账号密码忘记的快速解决方法
  13. 京东实习测开HR面(过)
  14. 服务器带宽10M能带多少人同时访问之并发数计算
  15. 对百度Bingo算法的猜测
  16. 安卓手机投屏安卓ADB群控自动化脚本命令
  17. 视频编解码 — H264结构
  18. 牛客小白月赛16——D 小阳买水果
  19. 输入售价后点击计算税费,自动显示在税费输入框!
  20. 国内五款好用的开源建站系统

热门文章

  1. 网站正在建设中_网站建设中如何设计更能吸引用户
  2. html5 2.5d,修仙三国:首款HTML5三国背景2.5D角色扮演页游
  3. 1、http网络编程——URL、CURL、CURLcode和curl_slist
  4. ATT的汇编格式X86内联汇编
  5. 深入分析Linux自旋锁【转】
  6. java-web学习笔记(第一章)
  7. Scrapy基础(八)————图片下载后将本地路径添加到Item中
  8. 《C#高效编程》读书笔记04-使用Conditional特性而不是#if条件编译
  9. [转] 电子技术*笔记4【2013-03】
  10. 转 Java多线程中Sleep与Wait的区别