大数据学习日记day1

复习

  • hdfs的读写
  • secondary namenode的工作原理
  • shell脚本定时采集数据到hdfs

mapreduce

  • 是一个编程框架
  • 分为两个阶段:
    1. map阶段,task并发实例各司其职
    2. reduce阶段,task并发实例依然各司其职,但依赖第一阶段的task并发实例
  • mapreduce只能分为1个map阶段和1个reduce阶段
  • 可以通过多个mapreduce串联解决大型复杂问题
  • mr application master的作用

实践

  • wordcount案例
    1. mapper类
public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
    //map方法的生命周期:  框架每传一行数据就被调用一次
    //key :  这一行的起始点在文件中的偏移量
    //value: 这一行的内容
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        //拿到一行数据转换为string
        String line = value.toString();
        //将这一行切分出各个单词
        String[] words = line.split(" ");
        //遍历数组,输出<单词,1>
        for(String word:words){
            context.write(new Text(word), new IntWritable(1));
        }
    }
}
2. reducer类
//生命周期:框架每传递进来一个kv 组,reduce方法被调用一次
    @Override
    protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
        //定义一个计数器
        int count = 0;
        //遍历这一组kv的所有v,累加到count中
        for(IntWritable value:values){
            count += value.get();
        }
        context.write(key, new IntWritable(count));
    }
}
3.  定义一个主类,用来描述job并提交job
    //把业务逻辑相关的信息(哪个是mapper,哪个是reducer,要处理的数据在哪里,输出的结果放哪里……)描述成一个job对象
    //把这个描述好的job提交给集群去运行
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        Job wcjob = Job.getInstance(conf);
        //指定我这个job所在的jar包
//      wcjob.setJar("/home/hadoop/wordcount.jar");
        wcjob.setJarByClass(WordCountRunner.class);

        wcjob.setMapperClass(WordCountMapper.class);
        wcjob.setReducerClass(WordCountReducer.class);
        //设置我们的业务逻辑Mapper类的输出key和value的数据类型
        wcjob.setMapOutputKeyClass(Text.class);
        wcjob.setMapOutputValueClass(IntWritable.class);
        //设置我们的业务逻辑Reducer类的输出key和value的数据类型
        wcjob.setOutputKeyClass(Text.class);
        wcjob.setOutputValueClass(IntWritable.class);

        //指定要处理的数据所在的位置
        FileInputFormat.setInputPaths(wcjob, "hdfs://hdp-server01:9000/wordcount/data/big.txt");
        //指定处理完成之后的结果所保存的位置
        FileOutputFormat.setOutputPath(wcjob, new Path("hdfs://hdp-server01:9000/wordcount/output/"));

        //向yarn集群提交这个job
        boolean res = wcjob.waitForCompletion(true);
        System.exit(res?0:1);
    }
  • 用debug追踪FileInputFormat()的执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据技术与应用实习周记全文共1页,当前为第1页。大数据技术与应用实习周记全文共1页,当前为第1页。大数据技术与应用实习周记 大数据技术与应用实习周记全文共1页,当前为第1页。 大数据技术与应用实习周记全文共1页,当前为第1页。 2020年6月15日,中北大学软件学院与优逸客校企合作大数据方向实训班级UBDF2006班正式开训。本周为软件学院的大数据方向课程第一周,班级人数总共为38人,本周课程实训过程内容主要如下: 一、实训内容 根据OBE(成功导向)的教学理念,深入聚焦学生解决复杂工程问题能力的培养,本周主要为实训学员讲解了软件工程管理相关理论知识以及相关过程文档的编写、相关项目管理工具的使用,比如UML图、Git版本控制系统以及MarkDown文档编写技巧、服务器部署技术等。具体的讲解内容如下: 二、实训过程 1、开班典礼 开班典礼一直为我们的传统,在正式上课之前为学员举办一个典礼,采用员工化思想培养学员,让学员认识到角色的转变,为将来进入职场打下基础。 2、实训授课 本次授课采用全线上直播授课,在讲解过程中为了避免同学中网路波动等问题,在授课过程中学员可随时提出疑问在线解答,同时采用在线连麦方式提问学员的掌握程度,并且为锻炼学员的表达能力,每天中午都会抽取半小时时间让学员进行主题演讲,锻炼学员的自信与表达能力。 在实训过程中每天都会让学员通过平台汇报自己的知识掌握程度以及通过在线考试方式检测学员的学习情况,每日会对学员提出问题进行解答,为学员制造更好的学习氛围。实训过程中学员的在线连线。 3、学员主题演讲风采 4、学员日周报 三、实训感言 在本次一周的上课中,充分感受到了中北学员的热情以及对学习的热爱,在实训过程中学员有不同的问题能积极反馈,并且能在实训过程中为我们的实训课程提出一些宝贵的意见。 实训不仅是一次传道授业的过程中,在和学员的相处过程中,能被学员的刻苦学习的精神感染,在授课过程中,自己也有了更好的心情为学员解决问题,把好学员走向社会的最后几步。 大数据技术与应用实习周记

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值