Hadoop 的一些思维导图 方便回顾 (1)

概要

在学习hadoop的过程中对一些概念需要了解,例如hdfs分布式文件系统的运作流程,namenode和secondarynamenode的工作原理等概念了解之后有助于理解hadoop的各部分机制。

Hadoop读写流程

上图就是hdfs写入数据的过程,无论是使用linux环境下hadoop集群进行处理文件的命令操作还是在本地idea里调用api连接集群/本地模式处理数据都是基于客户端和namenode进行交互。

需要注意的一点是 无论是读取数据还是写入数据 hdfs都是串行的 并不是并行,在这里即为:fs的输出流连接到就近的一个datanode尝试建立传输通道,如果成功建立则该输出流不会同时和分配的所有datanode进行传输,而是只和该就近的datanode进行传输,然后该就近的datanode在将数据同步传输到其他分配的datanode。

在写入数据时,对于分配datanode考虑的距离计算以及对于存储副本节点的选择:以下图解释了如何选择

接下来是hdfs读取数据的流程 和写入类似 读取数据也是由客户端发起请求 namenode授权后返回数据存储的信息,然后客户端的输入流尝试与datanode建立传输,这里读取数据是分块读取的,因为数据在存储时分块存在了不通datanode上,这里也是串行读取,然后拼接成完整的数据。

NameNode和SecondaryNameNode工作机制

对于nn和2nn的工作机制见上图,需要注意的是fsimage镜像文件里存储的是namenode里的文件目录等信息,而edits操作日志记录的是对目标文件进行增删改查的操作记录,仅记录不执行,只有当namenode启动的时候将edits操作日志和fsimage镜像文件共同加载到内存,保证内存里生成最新的文件目录信息(经edits操作后的文件信息)

另一个需要注意的点即是2nn拷贝nn信息的checkpoint设定:check周期&edits存储命令数量check周期为1小时 edits命令数量为1百万条,达到条件触发拷贝。

datanode工作机制顺带提一嘴,这个没啥特殊的。

MapReduce工作机制

首先要了解mapreduce是干啥的,他这个层在hdfs里起到什么作用:我个人理解为它是干活的,类似javaweb里的service层,就是创建好后在里面自定义方法,就像第一个例子wrodcount统计词频,使用的命令就是hadoop jar xxxx.jar 里面的wrodcount方法,同时自定义的mapreduce计算方法可以在本地idea创建好后打包传到hadoop服务器上以jar包形式运行。

再就是mapreduce的优缺点了解一下即可。

上图是wordcount这个mapreduce计算方法具体的执行流程,从获取数据开始,有一个切片的动作,橙色数据被分成两部分128M和72M,灰色数据就是100M所以不需要切片了再。

(这里补充一下切片的概念,是逻辑上的划分数据 并不是物理意义上将存储在磁盘里的数据切分,相当于maptask的分工而已,切片越多 启动的maptask数量就越多 因为mapreduce是一个分布式的计算方法处理数据)

要注意的是,处理的数据如果是txt 或者 csv xlsx等文本表格类文件 通常都是按行处理数据,mapreduce里需要我们自己动手的就是mapper 和 reducer两个执行处理类 mapper类里重写map方法 按行处理数据 并在每行对数据进行一些操作 例如遍历 split切分 等,最后处理好的数据以键值对类型写入context对象

紧接着context对象将mapper处理好的数据传给reducer 由reducer进行进一步操作。有个小注意的是 hadoop里的数据类型和java有区别 除了string 叫成text 其余均在后面加上writable即可。

MapReduce的序列化概念,当我们需要处理多维度数据时,单一的mapper 和 reducer就显得能力有限 因为一对map+reduce方法能操作的数据是有限的。这里就需要一个中间层概念 将多维度数据套一个bean对象 变成一个对象数据 这样就更方便map+reduce处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值