【15_hadoop_mapreduce思想】

15_hadoop

MapReduce:
1.easily writing applications
2.process vast amounts of data:
1.1.in-parallel on large clusters (thousands of nodes) of 【以并行方式处理数据】

    并行处理:
        多个task
        单核 和 多核
        
        容错:
                有重试机制

2.mapreduce:
1.用的不多 ,重点是思想
2.为什么说非常容易编写程序:
1.非常多的接口
业务逻辑+MR api =》 开发完 mr程序 =》 提交到yarn 运行
3.mr 适用于 离线数据计算 【不适合流式数据计算】

3.mapreduce 做词频统计

        带着问题理解mapreduce:
                1.什么是Map阶段?
                2.什么是Reduce阶段?
                3.Map task 个数由什么东西决定的?
                4.Reduce task 个数由什么东西决定的?
                5.什么是shuffle?
                6.reduce阶段一定要有吗?
                7.partition 分区 什么是分区?为什么要分区?
                8.input 文件切片又是什么?

大数据处理三段论:
1.input
2.处理
3.output

4.mapreduce 整个流程?
(input) <k1, v1> -> map -> <k2, v2> -> reduce -> <k3, v3> (output)

        1.整个阶段都是对 kv进行开发
        2.每个阶段输出都是kv
        3.kv 数据类型 have to be serializable:(必须序列化) 所谓序列化就是把数据读进来
                        1.mplement the Writable interface
                            deserializable
                            serializable 场景就是把数据进行网络传输
                        2. key classes have to implement the WritableComparable:
                                key既要实现序列化+排序
                                value 只需实现序列化
                    

        4.mapreduce 为例 分析 wordcount 案例
                input:【读取】
                        读取的思想:文件里面的数据 一行一行进行读取
                    
                        a, a,a,b, b
                        x,x,x,y,y,y
                    
                        k => 行号
                        v=> 每行数据
            
            map: 一一映射
                        
                1.按照分隔符 进行拆分成一个一个单词 ,每个单词赋值为1
                (x,1)
                (x,1)
                (x,1)
                (y,1)

reduce: 归约 =》 聚合
                把相同的key “拉到一起”                    shuffle:把相同的key “拉到一起”
                聚合
        
wc案例:
        1.mapreduce :
                    模板:
                                1.mapper =》 map阶段代码
                                2.reducer =》 reduce阶段的代码
                                3.driver 定义如何启动map reduce
        
        (input) <k1, v1> -> map -> <k2, v2> ->  reduce -> <k3, v3> (output)

mapper阶段:
Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
KEYIN:输入数据的key的数据类型
VALUEIN:输入数据的value的数据类型

                    KEYOUT:输出数据的key的数据类型
                    VALUEOUT:输出数据的value的数据类型

                    setup 每个map task 开始会执行一次
                    cleanup  每个map task 结束会执行一次

reduce阶段:
Reduce<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
KEYIN:输入数据的key的数据类型
VALUEIN:输入数据的value的数据类型

                                KEYOUT:输出数据的key的数据类型
                                VALUEOUT:输出数据的value的数据类型

        mapreduce过程:
                                    input output
                                    map阶段的输出作为reduce阶段的输入

补充: 配置hadoop_home:

win:
hadoop :
执行里面winutils.exe

配置环境变量
path

csv文件=》:

1.excel 打开
2.默认文件每个字段之间 分割符是,

需求:
统计每个手机号的 上行总流量 下行总流量 总流量 ?
phone up down
sql :
select
sum(up) as sum_up,
sum(down) as sum_down,
sum(up)+sum(down) as all
from xx
group by phone

mr: k v
map:
1.读取每一行数据 拆分
phone up down
k v:up down
reduce:
phone
k values<(up down),(up down) >

    聚合:
        sum_up
        sum_down
        all
    k,sum_up sum_down all

作业:
1.统计emp 每个job的工作人数 => gitlab

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值