美文网首页
面试常问:Hadoop

面试常问:Hadoop

作者: 那就这样吧丶xx | 来源:发表于2022-03-28 11:16 被阅读0次

    二、Hadoop

    1、入门

    1)常用端口号
    Hadoop3.x
         HDFS      历史服务器      MapReduce          客户端
         9870           19888               8088                9000/8020
    Hadoop2.x
         HDFS     
         50070
    2)安装配置文件
    Hadoop3.x
         core-site.xml      hdfs-site.xml     mapred-site.xml        workers
    Hadoop2.x
         core-site.xml      yarn-site.xml     mapred-site.xml        slaves

    2、HDFS

    1)读写流程
    2)小文件问题

    • 危害

    (1)占namenode元数据内存
              (不管文件多小,都要占用150字节)
              128g内存的namenode能存储多少个文件块
              128g * 1024M * 1024 KB * 1024 字节 /150 字节 = 约等于9亿
    (2)增加切片,进而影响增加MapTask个数(默认1g),增加计算内存

    • 优化手段

    (1)har归档
    (2)CombineTextInputformat     改变切片
    (3)jvm重用

    3)HDFS有几个副本

    3个

    4)HDFS块大小

        2.x 3.x 默认块 128M
        本地模式 32M
        1.x 块多大 64M
        hive的块大小:256M
        在大厂企业块大小:256M
        块大小,取决于服务器之间的传输速度

    3、MapReduce

    shuffle及其优化: map方法之后,reduce方法之前,混洗的过程

    • Shuffleg过程及三次排序
      Map方法出来,会进入getPartition()方法进行分区,然后会进入环形缓冲区(默认100M)一侧存数据,一侧存索引,到了80%后会溢写
      第一次排序在环形缓冲区,对溢写文件按key的索引进行快速排序,按照字典顺序排序。
      第二次排序在环形缓存区溢写进磁盘后,对所有在磁盘的文件按分区内部进行归并排序,按照分区写入进磁盘,然后将磁盘的文件合并成一个最终文件。
      第三次Reduce Task拉取数据存储到内存,如果存不下,则放进磁盘,然后将内存和磁盘的数据进行归并排序,则还可以进行(第四次排序)分组。最后进入reduce方法

    优化方案

    自定义分区
    调整环形缓冲区大小100M->200M
    增大环形缓冲区溢写比列80%->90%或95% (从减少溢写文件个数角度)
    溢写文件提前进行Combiner 只要不影响最终业务逻辑
    在磁盘对溢写文件进行归并时默认归并10个,可改成20个
    Map端输出为了减少磁盘IO采用压缩(快,Snappy,LZO)
    Reduce端输出看需求:下一个MapReduce输入,数据量大小,切片
    Reduce端默认一次拉取5个,可以多拉一些10-20,增大reduce内存

    默认内存及内存优化大小


    MapReduce内存大小及调优.png

    4、Yarn

    1)FIFO、容量调度器、公平调度器
    2)默认哪个调度器:
            Apache 默认容量
            CDH 默认公平
    3)FIFO调度器:
            支持单队列、先进先出、同一时间只有一个任务执行。
            并发度非常低、在企业里面不会使用。
    4)容量调度器:
            支持多队列,由多个FIFO调度器组成,优先满足,先进入的任务,并发度一般
    5)公平调度器:
            支持多队列,每个任务都公平享有资源,并发度最高
    6)在企业里面怎么选择
            如果电脑服务器性能比较好,对并发度要求比较搞,选择公平调度器(上市公司、大厂)
            如果电脑服务器性能比较差,对并发度要求不是特别搞,选择容量调度器(中小型公司)
    7)在企业开发时,如何创建队列
            容量调度器默认就一个default队列;
            按照执行任务的框架创建:hive、spark、flink
            按照业务模块创建(较多):登录注册模块、订单、物流
    618降级使用 登录注册模块、订单、物流(x) 优先保障前两个任务
    8)YARN工作机制

    5、Hadoop解决数据倾斜方法

    1)提前在map进行combine,减少传输的数据量
    2)导致数据倾斜的key大量分布在不同的mapper
    (1)局部聚合加全局聚合
    (2)增加Reducer,提升并行度
    (3)实现自定义分区

    相关文章

      网友评论

          本文标题:面试常问:Hadoop

          本文链接:https://www.haomeiwen.com/subject/tszyjrtx.html