Atitit hadoop使用总结 目录 1.1. 下载300m ,解压后800M 1 1.2. 二:需要的jar包 1 2. Demo code 2 2.1. WCMapper 2 2.2. WC
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
- 下载300m ,解压后800M
HDFS是Hadoop大数据平台中的分布式文件系统,为上层应用或其他大数据组件提供数据存储,如Hive,Mapreduce,Spark,HBase等。
- 二:需要的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包
---------------------
- Demo code
- 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);
}
}
}
- 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));
}
}
- (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官网
- Run 设置Hadoop HADOOP_HOME
可以通过附加下面的命令到 ~/.bashrc 文件中设置 Hadoop 环境变量。
export HADOOP_HOME=/usr/local/hadoop
Eclipse envi only can cfg in run cfg ..
- Input txt
aaa bbb ccc aaa
- 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}}
- Result output .txt
D:\workspace\hadoopDemo\out.txt\part-r-00000 file
aaa 2
bbb 1
ccc 1
- 四:操作流程 jar mode
1、将项目打成jar包上传到虚拟机上 if use jar mode
运行jar文件
- 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相关推荐
- 在linux中怎么编程软件下载,linux系统下载软件解压后怎么安装
用户提问 linux系统里安装软件问题,可是怎么就是安装不了,请高手指教,最好详细点带个例子!还有,安装路径最好说明,谢谢了!满意肯定加分! 推荐答案 现在一般是使用 RPM ,YUM 和 APT 来 ...
- 什么是二维数组?二维遍历?Java二维数组制作图片迷宫 使用如鹏游戏引擎制作窗口界面 附带压缩包下载,解压后双击start.bat启动...
什么是二维数组? 数组当中放的还是数组 int [][] arr=new int[3][2]; 有3个小箱子,每个箱子2个格子. 看结果? int [][] arr=new int[3][2]; Sy ...
- 蔡妍图片打包下载(解压后600多M)
蔡妍群里以朋友发的,解压后600多M,分类蛮全的,喜欢的就快去下哦,115盘的,居心不良者勿下! http://u.115.com/file/e61xt2ek# 小坏图片.rar 显示的是小坏图片,因 ...
- 3.在slave1机器下载3个安装包解压后,复制给master机器
务必:从机器slave1或者slave2中下载下面三个安装包 一.在slave1机器上下载下面三个安装包 jdk-8u111-Linux-x64.tar.gz 下载地址:http://www.orac ...
- 我下载的mysql解压后没有安装_mysql 解压版安装配置方法教程
1.首先,你要下载MySQL解压版,下载地址 虽然mysql都有8.0了,但这里我要安装的是mysql5.7,其他版本方法类似 2.解压安装包,根据自己的喜好选择路径,我选择的路径是D盘,因此MySQ ...
- jdk安装包解压后如何安装(jdk下载安装)
1.找到"解压到"按钮,一般解压到压缩包所在的位置就行,点"确定"2.解压后,找到这个文件夹,并在里面找到"**.setup"的文件(一般文 ...
- imx8的源码开发方式非yocto方式(三)——基于imx8的firmware-imx固件包下载与解压
1.进入NXP的官方网站下载firmware-imx的固件包(最新版本V8.18版本,流程浏览器输入以下网址,即可下载),网址如下所示: https://www.nxp.com.cn/lgfiles/ ...
- 压缩包下载后php文件怎么打开,用户下载的压缩包rar格式或zip文件如何解压 解压后就可以安装或运行里面的文件了...
狸窝网盘中分享有很多解决方案中使用到的软件资源,下载到电脑后是一个软件的文件压缩包,有的用户下载后不知道如何解压或说解压不了,怎么办?由于狸窝所面向用户比较大众化,为方便不同年龄层次和新手的使用,这里 ...
- 小程序资源下载、解压、保存到本地及本地文件的使用
小程序对资源存储有限一般10M,不要超过限制 思路解析:将资源保存到本地,首先 需要获取到 本地路径 ,然后将文件下载(下载前需要判断文件是否更新,第一次和更新则需要下载,如果存在之前的资源则将其删除 ...
- 苹果cms10的php.ini目录列表,苹果cmsV10采集插件 安装包(解压后查看教程)
苹果cmsV10采集插件 安装包(解压后查看教程) 所属分类:其他 开发工具:PHP 文件大小:574KB 下载次数:1 上传日期:2020-06-04 15:43:37 上 传 者:大秋 说明: ...
最新文章
- 【机器学习】基于实战项目的SVM算法库使用方法详解
- 一个基于 Spring Boot 的项目骨架,少造轮子!
- postgreSQL入门01-安装
- 还在使用 Windows?我的70岁母亲都用了 21 年 Linux
- 编写一个脚本,用它来操纵QTP的运行
- 3G时代 一起走近无线运维的3A标准——柳州市劳动和社会保障局
- 生成对抗式网络 GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN等原理介绍、应用介绍及简单Tensorflow实现
- 介绍一款很好用的分区软件--分区助手(不用格式化磁盘哟~)
- 利用selenium获取接口数据
- IaaS(基础设施即服务),PaaS(平台即服务),SaaS(软件即服务)的区别
- 南京社保详解(绝对有用)
- oracle超级管理员忘记_Oracle 管理员账号密码忘记的快速解决方法
- 京东实习测开HR面(过)
- 服务器带宽10M能带多少人同时访问之并发数计算
- 对百度Bingo算法的猜测
- 安卓手机投屏安卓ADB群控自动化脚本命令
- 视频编解码 — H264结构
- 牛客小白月赛16——D 小阳买水果
- 输入售价后点击计算税费,自动显示在税费输入框!
- 国内五款好用的开源建站系统
热门文章
- 网站正在建设中_网站建设中如何设计更能吸引用户
- html5 2.5d,修仙三国:首款HTML5三国背景2.5D角色扮演页游
- 1、http网络编程——URL、CURL、CURLcode和curl_slist
- ATT的汇编格式X86内联汇编
- 深入分析Linux自旋锁【转】
- java-web学习笔记(第一章)
- Scrapy基础(八)————图片下载后将本地路径添加到Item中
- 《C#高效编程》读书笔记04-使用Conditional特性而不是#if条件编译
- [转] 电子技术*笔记4【2013-03】
- 转 Java多线程中Sleep与Wait的区别