开发者社区> 代码的天敌是懒惰> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Driver 端程序编写

简介: Driver 端程序编写
+关注继续查看

Driver 端为该 FlowSum 程序运行的入口,相当于 YARN 集群(分配运算资源)的客户端,需要**创建一个 Job 类对象来管理 MapReduce 程序运行时需要的相关运行参数**,最后将该 Job 类对象提交给 YARN。


 Job对象指定作业执行规范,我们可以用它来控制整个作业的运行。接下来,我们来看一下作业从提交到执行的整个过程。


 FlowSum.java 的完整代码如下所示:

public class FlowSum {
    /**
     * 项目需求:统计每一个用户(手机号)所耗费的总上行流量、总下行流量、总流量;
     * 
     */
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
        // (1)创建配置文件对象,指定mapreduce程序所需的 HDFS 相关参数
        Configuration conf = new Configuration();
        // 本地运行模式
        conf.set("fs.defaultFS", "hdfs://localhost:9000");

        // (2)新建一个 job 任务
        Job job = Job.getInstance(conf);

        // (3)将 job 所用到的那些类(class)文件,打成jar包 (打成jar包在集群运行必须写)
        job.setJarByClass(FlowSum.class);

        // (4)指定Mapper和Reducer组件
        job.setMapperClass(FlowSumMapper.class);
        job.setReducerClass(FlowSumReducer.class);

        // (5)指定MapTask和ReduceTask的输出key-value类型
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(FlowBean.class);

        // (6)指定该MapReduce程序数据的输入输出路径
        Path inPath = new Path("/flow/input");
        Path outPath = new Path("/flow/output_sum");
        // 获取fs对象
        FileSystem fs = FileSystem.get(conf);
        // 判断输出路径是否存在
        if (fs.exists(outPath)) {
            // 输出路径存在则递归删除
            fs.delete(outPath, true);
        }

        FileInputFormat.addInputPath(job, inPath);
        FileOutputFormat.setOutputPath(job, outPath);

        // (7)最后提交任务给YARN来运行,等着集群运行完成返回反馈信息,客户端退出
        boolean waitForCompletion = job.waitForCompletion(true);
        System.exit(waitForCompletion ? 0 : 1);
    }
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Appium自动化框架从0到1之 Driver配置封装
Appium自动化框架从0到1之 Driver配置封装
0 0
Appium自动化框架从0到1之Driver驱动的封装
Appium自动化框架从0到1之Driver驱动的封装
0 0
JDBC入门一 驱动下载和第一个简单的jdbc程序
JDBC入门一 驱动下载和第一个简单的jdbc程序 一 、jar包的下载: 二:在idea中使用 三 测试代码: 1.自己准备一个MySQL数据库 比如我的数据库(作为例题) 2.JDBC编程六部: //1.注册驱动 //2.获取链接 //3.创建数据库操作对象 //4.执行sql语句 //5.处理查询结果集resultSet //6.释放资源 3.一些单词的意思: 4.全部代码实列: 5.结果与对比:
0 0
WEXT driver的执行过程实现(iwpriv部分/softapcontroller)
之前在看wifi driver源代码时一直有一个疑惑就是net dev的wireless_handlers中(WEXT类型的接口)提供两个iw_handler接口,怎么知道上层是调用的是private中的函数还是standard中的SIOCSIWPRIV接口和SIOCGIWPRIV接口。
783 0
EMQ
JMeter 扩展开发:BeanShell 数据模拟实现及性能探讨
本文是开源测试工具JMeter扩展性开发教程第三期,讲解如何采用JMeter内置功能BeanShell实现动态生成测试数据,并探讨其与Java扩展JMeter的实现方式对比。
0 0
如何使用cmd运行java程序
如何使用cmd运行java程序
0 0
+关注
代码的天敌是懒惰
拒绝摆烂,寻寻渐进持续学习
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载