博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Chukwa Sequence File的MapReduce
阅读量:6689 次
发布时间:2019-06-25

本文共 2441 字,大约阅读时间需要 8 分钟。

hot3.png

关于Chukwa配置及运行实例,请参见:

Chukwa将收集到的数据以Sink Files的形式写入到HDFS中,如果不做Archive和Demux操作的话,默认存储在hdfs:///chukwa/logs目录下。

Sink File是Hadoop Sequence File,包含key-value集合。

其中key的类型为org.apache.hadoop.chukwa.ChukwaArchiveKey;

value的类型为org.apache.hadoop.chukwa.ChunkImpl.

一个完整的MapReduce过程可参考代码:

假定已经有Sequence File文件写入到hdfs:///chukwa/logs目录下,我们要对该文件做一个最基本的Word Count MapReduce操作。代码如下:

Tips: 读取Sequece File需要注明job.setInputFormatClass(SequenceFileInputFormat.class)

public class WordCount_SequenceFile {	public static class TokenizerMapper extends		Mapper
{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(ChukwaArchiveKey key, ChunkImpl value, Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(new String(value.getData())); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } public static class IntSumReducer extends Reducer
{ private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable
values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args) .getRemainingArgs(); if (otherArgs.length != 2) { System.err.println("Usage: wordcount
"); System.exit(2); } @SuppressWarnings("deprecation") Job job = new Job(conf, "word count"); job.setJarByClass(WordCount_SequenceFile.class); job.setInputFormatClass(SequenceFileInputFormat.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); }}
关于MapReduce程序的编译,请参见:

在运行时需要添加chukwa-0.5.0.jar库:

hadoop jar MapReduce.jar demo.mapreduce.WordCount_SequenceFile-libjars MapReduce.jar,chukwa-0.5.0.jar /chukwa/logs/xx.done /output_file

转载于:https://my.oschina.net/xiangchen/blog/102325

你可能感兴趣的文章
PHP 生成唯一订单号函数
查看>>
mysql优化学习笔记
查看>>
从零开始写个编译器吧系列——将在 GitBook 上以在线电子书的形式继续连载
查看>>
[LintCode] Sort Integers II [Merge-sort, Quick-sort, Heap-sort]
查看>>
RabbitMQ 基础教程(1) - Hello World
查看>>
英特尔前任 CEO 安迪·格鲁夫的传奇一生
查看>>
memcache 安装 (windows和linux)
查看>>
浅谈Android应用保护(一):Android应用逆向的基本方法
查看>>
IIFE语法
查看>>
Mysql 架构及优化之-主从复制同步部署
查看>>
【11】把 Elasticsearch 当数据库使:Filter 下钻
查看>>
iOS原生分享—UIActivityViewController
查看>>
创业的N种死法:抵御DDoS攻击花钱致死
查看>>
[TODO]Iterator, foreach, generics and callback in C# and Python
查看>>
苹果弃用 OpenCL 和 OpenGL ,OpenCL 或遭全面淘汰
查看>>
JS '严格模式'
查看>>
chrome扩展调试:background.html如何调试?
查看>>
关于嵌入式安全性的6个要点
查看>>
Hibernate分页
查看>>
Drawable解析4——StateListDrawable和AnimationDrawable
查看>>