美文网首页
面试常问: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

    二、Hadoop 1、入门 1)常用端口号Hadoop3.x HDFS 历史服务器 MapRed...

  • 面试常问

    跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的...

  • 面试常问

    PV于UV的区别 如果web页面访问慢怎么办?如何解决? 在三次握手中出现大量time_wait状态,如何解决?查...

  • 集合深浅拷贝以及经常遇到的坑(面试常问)

    集合深浅拷贝以及经常遇到的坑(面试常问) 集合深浅拷贝以及经常遇到的坑(面试常问)

  • 面试常问:Flume

    四、Flume(三件事) 1、组成(source、channel、sink) 1)taildir source(1...

  • 面试常问:Hive

    六、Hive 1、Hive组成 元数据默认存储在derby数据库,但只支持单客户端,修改mysql数据库,支持多客...

  • 面试题汇总:Hadoop

    1.《Hadoop常见面试题》 2.《Hadoop面试45个题目及答案》 3.《一些Hadoop面试题及答案》 4...

  • linux面试常问命令

    1. 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 绝对路径:如...

  • linux面试常问命令

    1. 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 绝对路径:如...

  • Redis常问的面试

    1.Memcache与Redis的区别 首先Memcache:代码类似于Hash; 只支持简单的数据类型 Stri...

网友评论

      本文标题:面试常问:Hadoop

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