大数据处理

1.大数据处理: 
    (1)input 
    (2)处理
    (3)output
 
eg:hdfsapi 完成词频统计 
    (1)input:  一个文件或者 一批文件 
    (2)处理: 
        1)读取文件内容 ,一行一行的 ,按照某个指定分割符 进行拆分 =》 一堆单词 
            a,a,a,a,b,b  => ,  => a,a,a,a,b,b
        2)给每个单词记录次数 
            a,a,a,a,b,b => 
            (a,1)(a,1)(a,1)(b,1)
        3)将相同的单词 出现的次数 进行聚合
            (a,1)(a,1)(a,1)(b,1) =》 
                a,3
                b,1
        进行聚合=> 缓存 集合 Map kv
            key:word 
            value:cnt 

             集合中单词存在: 
                 word,1+cnt
             集合中单词不存在:
                 word,1
    (3)output: 
        1.打印控制台
        2.输出到文件系统
        3.写mysql     

2.hadoop: 
    hdfs 
    yarn
    mapreduce 

    (1)hdfs: 主要负责数据的存储 
    hdfs架构设计: 
        1)HDFS has a master/slave architecture.【主从架构】
            master:a single NameNode 
            slave: number of DataNodes 
        2)NameNode: 【就是负责指挥的】
            manages the file system namespace 【管理hdfs上文件的元数据】
            regulates access to files by clients.【对外提供服务】
            determines the mapping of blocks to DataNodes【负责块映射到 datanode上】
            注意: 
                元数据:文件
                文件的名称、权限、副本、路径、块信息
        3)DataNode: 
            one per node in the cluster,【每个节点 都是有这个进程】
            these blocks are stored in a set of DataNodes【负责数据块的存储】
            DataNodes are responsible for serving read and write requests from the file system’s clients【负责文件的读写】
            a file is split into one or more blocks and these blocks are stored in a set of DataNodes
         4)块: 
            file is split into one or more blocks  【文件拆分来的】 =》 根据块大小进行拆分成块
            属性: 
                块大小128m
                块的副本数 3

思考:1.文件上传到hdfs 如何存储?
        170m文件 =》 hdfs 
        (1)拆分成几个块 【不考虑副本数】 170 = 128+42 1 1 
        (2)实际存储是多少【考虑副本数 2个】
            170*2 = 340
    2.hdfs block 丢了 坏了 该如何恢复?
        (1)手动恢复
        (2)自动恢复
            1)删除一个副本
                [hadoop@bigdata22 subdir0]$ rm -rf ./blk_1073741840*
            2)重启hdfs 
                hdfs fsck /
            3)手动恢复 
                hdfs debug 
                hdfs debug recoverLease -path /hadoop-3.3.2.tar.gz -retries 1

    (2)主从架构: 
    namenode : 
        1)接收client的rpc请求 处理
        2)接收 DN 的block report 、block loction update 、hearbeat
        3)管理文件的元数据 =》 mem(内存)
    datanode:
        1)存储数据 和 数据块的校验
        2)每个3秒发送心跳给nn 告诉它 我还活着 【hdfs-site.xml】
            dfs.heartbeat.interval 
        3)每隔一定时间发送给nn block report: 
            dfs.blockreport.intervalMsec 21600000  6小时
            dfs.datanode.directoryscan.interval 21600 6小时
    
    (3)hdfs读写流程: 
        写流程: 
            1)hadoop fs -put 
            2)api  fs.open 

        a.client fs.crete 方法 去和nn进行rpc通讯 
        b.nncheck 这个路径是否存在、是否有权限创建这个文件
        c.ok 就创建这个文件 
        d.nn 根据你上传的 文件的大小 块大小 副本数 =》 计算 要上传多少个块 存储到dn 
            =》 信息 返回给客户端 fscoutputStream 对象 


        a.client 调用fscoutputStream 对象 write 
        b.将第一个块的第一个副本 写到 dn 写完去写 第二个副本 写到dn2 写第三个 dn3 
        c.写完返回一个ack 给dn2 知道 dn1 ack fscoutputStream 对象  
        说明第一个块 的三个副本 都写完了 其他块 以此类推。

        a.所有块都写完了 client     fscoutputStream 对象 close  把流关闭 
        b.再次调用 fs.compele 告诉nn 我的文件写成功

        读流程: 
            hadoop  fs -cat xx 

        a.client fs。open 和 nn 进行rpc通讯 
        b.ok 返回inputstream对象【文件块的dn列表】

        client inputstream对象 read 
            先去读第一个块 【就近原则】
            加入ok 关闭通讯 
        假如 不ok 会记录 dn+block 信息 下次就不从这个节点读取 去别的节点读取文件块 

        client inputstream对象 close 关闭流

    (4)安全模式: 
        1)命令:hdfs dfsadmin 
            [-safemode <enter | leave | get | wait | forceExit>]

        2)安全模式对业务有什么影响?
        a.是否能写数据
        b.是否能读取数据 
            hdfs dfsadmin -safemode get 【获取状态】
            hdfs dfsadmin -safemode enter
            hdfs dfsadmin -safemode leave
        读数据 是没有问题 
        写数据 不行的 

3.yarn 
    (1)主从架构 
        resoucemanager: 
            负责资源的分配 
        nodemanager: 
            1)负责资源的供给和隔离
            2)cpu mem =》 container 
 
    (2)资源的调度:
        RM 将NM 资源分配给task 
        资源的隔离 
        NM给task 分配资源 保证 提供的资源具有独占性

    (3)yarn架构设计 :资源和作业的调度
        1)resoucemanager: 
            applications manager  应用管理器 =》 负责jobs调度
            ResouceScheduler 资源调度器 
        2)nodemanager:
            container 【一定比例的cpu和mem】

mr job =》 yarn =》  执行流程 
1.jar (mr spark flink) => client =>yarn 
    client => RM apps 发送请求 jar 
2.apps 分配一个container 运行 jar (mr/spark/flink app master)
3.app master => apps 注册(在yarn web ui 可以看到job运行情况 )
4.app master =》RM 资源管理器 申请资源 运行 我的代码 
5.NM 会开启资源 container 去运行 map task reduce task 
6.task =》app master  汇报 代码的运行情况 
7.app master =》 apps  通知我的代码运行完了 =》 RM =》nm 释放资源(container)
8.apps =》client 代码已经完成

4.调度器 =》 jobs 调度
    (1)调度器的种类 
        FIFO、Capacity 、Fair 
    (2)区别: 
        FIFO: 先进先出 单队列
        Capacity: 多队列、先进先出
        Fair :按需进行分配
    (3)默认调度器是谁?
        Capacity
需求: 
    让你监控 yarn 每个时间点的资源申请情况 

5.Mapreduce : 
    数据分析: 
        1.mr =》java  
        2.sql on hadoop => hive  sql => mr 

    (1)概述:process vast amounts of data 【数据计算框架】 
        1)easily writing applications
        2) in-parallel on large clusters 
         单核 和多核 
        (thousands of nodes) of commodity hardware in a reliable,【可靠的】 
        fault-tolerant manner.【容错的】

    (2)mapreudce : 
        1)工作中用的不多 ,思想非常重要
        【历史的产物】
        2)写起来不简单?
            a.接口
            b.数据查询需求=》 mr 代码方式 =》 
            提交yarn =》 
                是分布式应用计算的程序 
    (3)适用于 离线计算 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值