Reporter用于报告进度,设定应用级别的状态消息,更新Counters(计数器),或者仅是表明自己运行正常

例如如下代码

public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {String line = (caseSensitive) ? value.toString() : value.toString().toLowerCase();for (String pattern : patternsToSkip) {line = line.replaceAll(pattern, "");}StringTokenizer tokenizer = new StringTokenizer(line);while (tokenizer.hasMoreTokens()) {word.set(tokenizer.nextToken());output.collect(word, one);reporter.incrCounter(Counters.INPUT_WORDS, 1);}if ((++numRecords % 100) == 0) {reporter.setStatus("Finished processing " + numRecords + " records " + "from the input file: " + inputFile);}}

Partitioner用法: Mapper 的输出被排序后,就被划分给每个 Reducer 。分块的总数目和一个作业的reduce任务的数目是一样的。用户可以通过实现自定义的  Partitioner 来控制哪个key被分配给哪个  Reducer,即Partitioner可以定义对mapper输出数据的key进行分区,对key按照一定的算法进行分组,每组数据交给一个reduce任务执行

JobConf代表一个Map/Reduce作业的配置。

JobConf是用户向Hadoop框架描述一个Map/Reduce作业如何执行的主要接口。框架会按照JobConf描述的信息忠实地去尝试完成这个作业

通常,JobConf会指明Mapper、Combiner(如果有的话)、 Partitioner、Reducer、InputFormat和 OutputFormat的具体实现。JobConf还能指定一组输入文件 (setInputPaths(JobConf, Path...) /addInputPath(JobConf, Path)) 和(setInputPaths(JobConf, String)/addInputPaths(JobConf, String)) 以及输出文件应该写在哪儿 (setOutputPath(Path))。

JobConf可选择地对作业设置一些高级选项,例如:设置Comparator; 放到DistributedCache上的文件;中间结果或者作业输出结果是否需要压缩以及怎么压缩; 利用用户提供的脚本(setMapDebugScript(String)/setReduceDebugScript(String)) 进行调试;作业是否允许预防性(speculative)任务的执行 (setMapSpeculativeExecution(boolean))/(setReduceSpeculativeExecution(boolean)) ;每个任务最大的尝试次数 (setMaxMapAttempts(int)/setMaxReduceAttempts(int)) ;一个作业能容忍的任务失败的百分比 (setMaxMapTaskFailuresPercent(int)/setMaxReduceTaskFailuresPercent(int)) ;等等。

当然,用户能使用 set(String, String)/get(String, String) 来设置或者取得应用程序需要的任意参数。然而,DistributedCache的使用是面向大规模只读数据的。

JobClient是用户提交的作业与JobTracker交互的主要接口。

JobClient 提供提交作业,追踪进程,访问子任务的日志记录,获得Map/Reduce集群状态信息等功能。

作业提交过程包括:

  1. 检查作业输入输出样式细节
  2. 为作业计算InputSplit值。
  3. 如果需要的话,为作业的DistributedCache建立必须的统计信息。
  4. 拷贝作业的jar包和配置文件到FileSystem上的Map/Reduce系统目录下。
  5. 提交作业到JobTracker并且监控它的状态。

JobClient的用法示例如下:

public int run(String[] args) throws Exception {JobConf conf = new JobConf(getConf(), CompleteWordCount.class);conf.setJobName("wordcount");conf.setOutputKeyClass(Text.class);conf.setOutputValueClass(IntWritable.class);conf.setMapperClass(Map.class);conf.setCombinerClass(Reduce.class);conf.setReducerClass(Reduce.class);conf.setInputFormat(TextInputFormat.class);conf.setOutputFormat(TextOutputFormat.class);List<String> other_args = new ArrayList<String>();for (int i=0; i < args.length; ++i) {if ("-skip".equals(args[i])) {DistributedCache.addCacheFile(new Path(args[++i]).toUri(), conf);conf.setBoolean("wordcount.skip.patterns", true);} else {other_args.add(args[i]);}}FileInputFormat.setInputPaths(conf, new Path(other_args.get(0)));FileOutputFormat.setOutputPath(conf, new Path(other_args.get(1)));JobClient.runJob(conf);return 0;}

Hadoop系列之Reporter,Partitioner,JobConf, JobClient相关推荐

  1. hadoop系列四:mapreduce的使用(二)

    转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...

  2. Hadoop系列之FieldSelectionMapReduce用法

    Hadoop的工具类org.apache.hadoop.mapred.lib.FieldSelectionMapReduce帮助用户高效处理文本数据, 就像unix中的"cut"工 ...

  3. hadoop系列三:mapreduce的使用(一)

    一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6.4 上一篇:hadoop系列二: ...

  4. Hadoop 系列之 Hive

    Hadoop 系列之 Hive Hive 的官网:http://hive.apache.org/ Hive versions 1.2 onward require Java 1.7 or newer. ...

  5. Hadoop 系列之 HDFS

    Hadoop 系列之 HDFS 花絮 上一篇文章 Hadoop 系列之 1.0和2.0架构 中,提到了 Google 的三驾马车,关于分布式存储,计算以及列式存储的论文,分别对应开源的 HDFS,Ma ...

  6. Hadoop 系列之 1.0 和2.0 架构

    Hadoop 系列之 1.0 和2.0 架构 自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背景自己也很喜欢.趁着还没有入职,给大家争取先把 Hadoop ...

  7. Hadoop 基础系列一Hadoop 系列之 1.0 和2.0 架构

    精选30+云产品,助力企业轻松上云!>>> Hadoop 系列之 1.0 和2.0 架构 自学大数据有一段时间了,找工作历时一周,找到一家大厂,下周入职,薪资待遇还不错,公司的业务背 ...

  8. 小丸子学Hadoop系列之——部署Hbase集群

    0.集群规划 主机名 ip地址 安装的软件 运行的进程 AI-OPT-HBS01 10.46.52.30 hadoop,hbase namenode,zkfc,resourcemanager AI-O ...

  9. hadoop系列(一)概念、组件介绍、安装环境、配置

    hadoop系列(一)概念.组件介绍.安装环境.配置 一.大数据概念 概念 大数据:解决海量数据的采集.存储.分析计算的能力 大数据特点 Volume(大量) Velocity(高速) Variety ...

最新文章

  1. OpenCV中的光流及视频特征点追踪
  2. 主要操作系统体系结构
  3. 3分钟带你理解深度学习中的RNN和LSTM究竟是什么?
  4. css实现文字超出显示省略号...
  5. C语言实现单链表的逆置
  6. 2019.3.1版本pycharm撤销及恢复图解
  7. git pull代码出现refusing to merge unrelated histories错误
  8. Android开发的之基本控件和详解四种布局方式
  9. 链式调用setTimeout()与setInterval()的区别
  10. linux使用教程_iTOP-4412-QtE系统源码以及Linux系统-wfi设置以及使用文档 - 心底狂像...
  11. html中的float属性,css float属性 图解float属性的点点滴滴
  12. 项目二:2020年华为软件精英挑战赛
  13. ad如何绘制拼版_ad 拼板
  14. 解决浏览器不能安装idm插件
  15. win10屏幕文字模糊不清
  16. linux 机房安全管理,提示尊敬的用户您好:您访问的网站被机房安全管理系统拦截怎么办?...
  17. win10安装oracle18c,Win10 Oracle 18c 完全卸载
  18. vue项目中获取今天,昨天,明天时间方法
  19. h3c交换机配置远程管理_h3c 交换机配置VLAN和远程管理
  20. 神经网络中BP算法的推导

热门文章

  1. Linux 生产者消费者简单例子学习
  2. Mediator模式(C++中介者模式含个人Demo源码)
  3. Linux机器学习软件配置
  4. es6中的promise解读
  5. malloc在函数内分配内存问题
  6. codeforces 111A/112C Petya and Inequiations
  7. Persistent Data Structures(可持久化的数据结构)
  8. 【Java】什么是多态?多态的实现机制是什么?
  9. 【Hadoop】在Linux中的Hadoop部署与yarn HDFS MapReduce 的配置中常见的问题?你解决了吗?
  10. JMeter中如何实现跨线程组关联