首页 > 其他分享 >Hadoop Yarn Tool接口接入

Hadoop Yarn Tool接口接入

时间:2023-12-17 21:45:34浏览次数:34  
标签:Tool Hadoop Yarn hadoop job org apache import class

项目搭建参考
Java实现对Hadoop HDFS的API操作

1.驱动类

package cn.coreqi.mapreduce.tool;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

import java.util.Arrays;

public class WordCountDriver {
    private static Tool tool;
    public static void main(String[] args) throws Exception {
        // 创建配置
        Configuration conf = new Configuration();
        switch (args[0]){
            case "wordcount":
                tool = new WordCount();
                break;
            default:
                throw new RuntimeException("no such tool " + args[0]);
        }
        // 执行程序
        int run = ToolRunner.run(conf, tool, Arrays.copyOfRange(args, 1, args.length));
        System.exit(run);
    }
}

2.核心逻辑

package cn.coreqi.mapreduce.tool;

import org.apache.hadoop.conf.Configuration;
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.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;

import java.io.IOException;

public class WordCount implements Tool {
    private Configuration conf;
    // 核心驱动(conf需要传入)
    @Override
    public int run(String[] strings) throws Exception {
        // 1.获取job
        Job job = Job.getInstance(conf);

        // 2.设置jar包路径
        job.setJarByClass(WordCountDriver.class);   //通过反射指定类所在的包地址来获取当前jar包的路径

        // 3.关联mapper和reducer
        job.setMapperClass(WordCountMapper.class);
        job.setReducerClass(WordCountReducer.class);

        // 4.设置mapper输出的KV类型[因为泛型擦除的问题,所以需要手动指定类型]
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);

        // 5. 设置最终输出(reducer)的KV类型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        // 6. 设置输入路径和输出路径(读取命令行参数集群模式运行)
        FileInputFormat.setInputPaths(job,new Path(strings[0]));
        FileOutputFormat.setOutputPath(job,new Path(strings[1]));

        // 7.提交job,获取更多返回信息
        return job.waitForCompletion(true) ? 0 : 1;
    }

    @Override
    public void setConf(Configuration configuration) {
        this.conf = configuration;
    }

    @Override
    public Configuration getConf() {
        return conf;
    }

    // mapper
    public static class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
        private Text outK = new Text();
        private IntWritable outV = new IntWritable(1);
        @Override
        protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {
            // 将一行的内容转换成字符串
            String line = value.toString();
            // 切割内容
            String[] words = line.split(" ");
            // 循环写出
            for (String word : words) {
                outK.set(word);
                context.write(outK,outV);
            }
        }
    }
    //reducer
    public static class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{
        private IntWritable outV = new IntWritable();
        @Override
        protected void reduce(Text key, Iterable<IntWritable> values, Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {
            int sum = 0;
            //累加
            for (IntWritable value : values) {
                sum += value.get();
            }
            outV.set(sum);

            //写出
            context.write(key,outV);
        }
    }
}

标签:Tool,Hadoop,Yarn,hadoop,job,org,apache,import,class
From: https://www.cnblogs.com/fanqisoft/p/17909889.html

相关文章

  • Hadoop YARN生产环境核心配置参数
    1.ResourceManager相关配置参数说明默认值备注yarn.resourcemanager.scheduler.class配置调度器,默认为容量调度器(Apache)org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler对并发度要求高,首选公平调度器,对并发度要求不高,则......
  • Hadoop YARN
    1.Yarn资源调度器Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。1.Yarn基础架构Yarn主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。1.......
  • Hadoop 数据压缩
    1.概述1.好处&坏处优点:减少磁盘IO、减少磁盘存储空间缺点:增加CPU开销2.压缩的原则运算密集型的Job,少用压缩IO密集型的Job,多用压缩2.MR支持的压缩编码1.压缩算法对比介绍压缩格式Hadoop自带?算法文件扩展名是否可切片换成压缩格式后,原来的程序是否需要修改......
  • Hadoop快速入门
    Hadoop快速入门一、大数据思维分而治之所谓“分而治之”,就是把一个复杂的算法问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个分别找出各部分的解,再把各部分的解组成整个问题的解。传统的计算都是基于内存去完成的,但是内存是有限的,数据量太大,导致无法在较短......
  • C++ Qt开发:ToolBar与MenuBar菜单组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍ToolBar工具栏组件以及与之类似的MenuBar菜单栏组件的常用方法及灵活运用。1.1QToolBar工具栏......
  • popper/tooltip 组件
    在element-plus中,popper组件是tooltip、select、date-picker等触发式弹出层组件的基础,有了它就可以封装各种类似功能的组件了。popper组件依赖于floating-ui,是对floating-ui的高级封装。最终效果展示今天的完整代码放在play/src/components/popper里了popper组件......
  • 掌握npm、yarn、pnpm的workspaces使用
    workspaces(工作区)是一个通用术语,它指的是从单个顶级根包中管理本地文件系统中的多个包。npm、yarn、pnpm都提供了对workspaces的支持,在使用上会有些微的不同,今天就分享一下这几个包管理器分别使用workspaces的方式前段时间写几个独立的组件,当时因为没考虑要做成啥样,就把de......
  • 如何在 macOS Sonoma 虚拟机中安装 VMware Tools
     vmware-tools VMwareTools简介VMwareTools中包含一系列服务和模块,可在VMware产品中实现多种功能,从而使用户能够更好地管理客户机操作系统,以及与客户机操作系统进行无缝交互。VMwareTools具备以下功能:将消息从主机操作系统传递到客户机操作系统。将客户机操作......
  • java: 通过URL读取hadoop HDFS
    packagetju;importorg.apache.hadoop.fs.FsUrlStreamHandlerFactory;importorg.apache.hadoop.io.IOUtils;importjava.io.InputStream;importjava.net.MalformedURLException;importjava.net.URL;importjava.net.URLStreamHandlerFactory;publicclassReadF......
  • hadoop:通过Configuration读取hdfs
    packagetju;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FSDataInputStream;importorg.apache.hadoop.fs.FSDataOutputStream;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io......