> 文章列表 > Hadoop课程笔记

Hadoop课程笔记

Hadoop课程笔记

Hadoop笔记

  • nn和sn的区别
    • nn有inprogress,sn没有,隔一段时间sn会拉取nn上的fsi和edits进行合并然后返回给nn
  • nn和dn
    •  

85d0d271ccb644a89ba1287e67d51951.jpeg

  • 序列化和反序列化
    • 当需要将内存中对象从一个服务器传输到另一个服务器的时候,将内存中的对象写进磁盘(序列化)并传输到目标服务器磁盘后再写入内存(反序列化)的过程
  • mr任务的代码步骤
    • 新建job对象,传入conf
    • job联系三个类:mapper,reducer,driver(套路化的设置,如导包,配参数,使用的集群等)
    • 指定mapper类
    • 指定reducer类
    • driver
      • 指定mapper阶段结构的输出类型
      • 指定最终结果的输出类型
      • 指定输入输出路径,输出路径不能存在结果文件
    • 执行
    • mapper阶段会遍历文件,用每一行的偏移量作为key,内容作为value传入,输出key为内容和,value为1的中间结果,然后根据reduce阶段给每个key分配的reduce节点上进行聚合操作计算所有结果再汇总所有节点的结果
    • 序列化和反序列化一定要按队列来
    • 并行度由maptask的切片数决定
      • 切片大小与block块大小一致,效率最佳,避免跨节点执行任务
      • 切片是按照单个文件来的,与数据集无关
  • mr数据倾斜
    • 空值过多,删除
      • 自定义分区,在null后面拼接随机数打散二次聚合
    • 增加reduce个数
    • 提前combiner做聚合在map端,mapjoin
  • 小文件
    • archive,存储方向
    • 切片用combinetextinputformat将多个小文件放在一起当作单个文件进行,计算方向
    • jvm重用,uber模式,同一个job得多个task共用jvm,减少初始化和关闭的操作