Hadoop知识点回顾

HDFS的读流程和写流程

写流程:

  • 1)客户端通过dfs向namenode发送请求上传文件,namenode检查目标文件和父目录是否存在
  • 2)namenode返回能否上传信息给客户端
  • 3)客户端请求第一个block上传到哪些datenode
  • 4)namenode返回几个datenode节点(与文件的replication副本个数有关)
  • 5)客户端通过输出流请求第一个dn上传数据,第一个dn收到请求会调用第二个dn,第二个调用第三个…。建立串行通信管道。
  • 6)从第一个dn到最后一个dn依次应答客户端
  • 7)客户端往第一个dn上传第一个block,以packet包为单位,第一个dn收到一个packet会通过信道传输传给第二个dn,第二个dn传给第三个…每次传输packet会放入应答队列等待应答
  • 8)每个block上传完成,客户端再次传输下一个block重复执行3)-7)

读流程:

  • 1)客户端通过dfs请求namenode下载文件,namenode查询源数据,找到文件所在的datanode
  • 2)就近选择服务器,请求读取数据(串行,一个block接一个block)
  • 3)datanode以packet为单位使用输入流传输数据
  • 4)客户端以packet为单位缓存数据,依次写入目标文件

Hadoop的shuffle流程

  • 1)mapTask将map()处理后的kv对放入缓冲区
  • 2)内存溢写入本地磁盘
  • 3)溢写文件合并成大的溢出文件
  • 4)溢写和合并阶段会调用partitioner进行分区和对key的归并排序
  • 5)reduceTask根据分区号去结果分区取数据
  • 6)reduceTask获取同一个分区的不同mapTask结果文件进行归并排序
  • 7)合并成大文件提供数据给reduceTask的reduce()使用

Hadoop的shuffle优化方式有哪些

  • 1)io密集型的任务多使用压缩
  • 2)使用combiner提前在map阶段就执行合并减小reduce的压力

Yarn的工作机制

  • 1)mapreduce程序提交到客户端所在节点
  • 2)yarnRunner从resourceManager申请一个application
  • 3)resourceManager返回application的资源路径返回给yarnRunner
  • 4)将所运行的资源如job的配置切片以及依赖执行jar包提交到hdfs上
  • 5)资源提交完成后,申请运行mrAppMaster
  • 6)resourceManager将用户的请求初始化为一个task
  • 7)空闲nodeManager接到task
  • 8)nodeManager创建容器container,产生mrAppMaster
  • 9)container从hdfs上拷贝资源到本地
  • 10)mrAppMaster从resourceManager申请运行mapTask资源
  • 11)resourceManager将运行mapTask分配给其他的nodeManager,其他的nodeManager接到任务并创建容器
  • 12)mrAppMaster向接到任务的nodeManager发送程序启动脚本,各自启动mapTask对数据分区排序
  • 13)mrAppMaster等待所有的mapTask执行完毕,向resourceManager申请容器,执行reduceTask
  • 14)reduceTask从mapTask中获取相应的数据
  • 15)程序执行完毕后,mrAppMaster向resourceManager申请注销自己

Zookeeper的选举机制

服务器id:myid === 事务id:tid === leader任期id:lid

三台服务器为准:1)数据全部一致;2)半数存活;3)选举要半数以上的票

第一次启动
  • 依次启动

    • 1)myid1启动,投自己一票<1.5,myid1保持looking状态
    • 2)myid2启动,触发选举,分别投自己一票并交换选票信息,比较myid的大小myid2要大,更改选票推举myid2,此时myid2两票>1.5,选举完成myid2为leader,结束looking状态
    • 3)myid3启动,发现无looking状态(此时不会更改选票信息),投自己一票交换选票信息,少数服从多数,myid2为leader,自己成为小弟
  • 并行启动

    • 比较myid的大小,最大的选举为leader
非第一次启动
  • 1)选举触发条件
    • 服务器初始化启动
    • 服务器和leader断开连接
  • 2)进入选举流程
    • 已经存在leader,触发选举时被告知当前服务器的leader信息,不在竞争,与leader机器连接,并同步状态
    • 不存在leader,触发选举,重新选票,遵循以下原则:
      • 优先级:lid>tid>myid
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

black.kk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值