大数据生态圈中相关原理(1)

MapReduce 原理

客户端任务到jobTracker, jobTracker分发任务到map和reduce。

map从datasplit 中获取数据区,根据客户端的相关业务逻辑生成(K,V)对,数据先缓存到环形缓冲区,直到达到设定上限(默认为80%),然后会写入到磁盘上。写入磁盘之前,会进行分区排序。

reduce 会根据各自分区copy自己所需要的数据,先进行合并,排序,然后执行reduce的逻辑,接着会将结果输出的HDFS上part-...-00000

 

shuffle相关原理,以及参数相关优化

shuffle 在hadoop中表示从map到reduce之间的网络传输数据操作

首先map将得到的(k,v)键值对存储到一个环形缓存区,该缓冲区在达到80%时,会将数据写到磁盘上(spill to disk),写入到磁盘上之前会对先执行分组(partitoner)和排序(fast sort)。

这边有几个参数可以调整修改以提高性能,缓冲区大小设置(如果能够估算出map输出的大小可以直接设置防止缓冲区溢出),缓冲区门限设置,partitioner分区设置(分区方式最好能够防止数据倾斜现象)

上面说到,数据存到磁盘上面,reduce分别从map端溢出的文件,copy自己分区所需要的数据,如果数据超过10个(默认)会进行combine操作(类似reduce的操作,为了降低输入reduce的数据量),同样,这边还会进行一个合并和排序,然后输入reduce。

优化参数包括,默认最大合并文件数可以设定的大一些等等,如果有combiner可以将最小combine的数量设定为3,如果数据量很大的话可以使用压缩编码,编码方式可以不用默认的zip编码采用lzo方式

 

 

HDFS相关原理

主要包括两种角色,namenode,secondarynamenode,datanode

namenode主要负责数据,记录数据的上传下载修改,保存数据块的位置信息。

secondarynamenode,主要负责日志的合并

datanode实际上的数据存储位置,会通过heartbeat和namenode进行,并汇报block信息

 

补充: 之前的有一个项目弹幕采集,在接收端使用朴素贝叶斯算法,通过分词器可以分析弹幕中的情绪。

 

posted on 2018-08-03 21:24  叶子不要闹  阅读(215)  评论(0编辑  收藏  举报