技术分享 大数据知识体系

用工匠精神打造精彩文章,分享最新科技资讯,从不同角度剖析资讯内容,剑走偏锋是我的态度,茶余饭后聊百味!各位读者们老爷们好吖,我是文艺与气质于一身实力派小编——小宸,这里可以让您看到最新最有趣的资讯内容,让您感到不同凡响的科技资讯内容,会给大家带来意外惊喜,好了不跟大家逗乐了,给大家呈现今天的精彩内容:

j整个大数据处理的体系,按我的理解可以分为两个部分,一个是分布式存储系统、另一个是分布式计算框架。分布式存储系统主流是HadoopDFS,其他还有Ceph和Swift。分布式计算框架主流是MapReduce,Storm和Spark。

首先说分布式存储系统HadoopDFS。它是一种本地文件系统之上的更高的抽象,把跨节点的组成的文件系统看成一个逻辑上的整体。它存储的思路是,把文件分成一个个block,每个block都有一定量的副本存储在不同的节点上,默认数量是3个,这保证了分布式存储的数据的稳定性。

HDFS的架构有NameNode、SecondaryNameNode、DataNode。NameNode节点主要负责客户端传来的读写请求,保存文件的metadata。SecondaryNameNode负责帮助NameNode合并editlog。DataNode负责储存Block,向NameNode汇报block信息、发送heartbeat。

HDFS写入文件的时候:客户端通过RPC向NN调用create()方法,NN检查文件是否存在,不存在并且有权限的话就会创建一个新文件,向客户端返回一个FSDataOutputStream,用于写数据。

HDFS读文件的时候,客户端通过RPC向NN调用open()方法,NN获得每个数据块的位置信息,返回客户端FSDataInputstream,客户端调用其read()方法读取数据块。

分布式计算框架中最流行的是MapReduce。它把并行计算、容错等细节问题封装到库里,程序员只需要编写map和reduce函数就可以了。这种模型的灵感来自函数式编程中的map和reduce原语。Map函数接受KV值,输出KV值,reduce函数接收KEY和相同key构成的value的集合的迭代器,再输出KV值。

整个执行过程是:用户提交job给调度系统,每个job包含一系列task,调度系统将这些任务调度到集群中多台可用的机器上。

开始执行后,数据被分割成M个数据片段集合,再调用map函数,之后被分区函数将结果分成R个不同分区,之后执行Reduce函数。具体就是:

1、输入文件分成M个数据片段,每个片段大小是HDFS的block size,程序副本也被创建到集群中。

2、这些程序的副本有一个master,master负责分配任务给其他空闲的worker。

3、分配了map任务的worker程序读取数据片段,解析成KV对,然后传递给自定义的map函数,再解析出中间KV对,缓存在内存中。

4、分区函数把内存中的KV对分成R个区域,周期性写入文件系统,缓存的KV对在本地磁盘位置传给master,master再把位置传给reduce worker。

5、reduceworker收到位置信息,通过RPC从map worker所在主机磁盘读取缓存数据。读取后,通过对key排序使得具有相同key的数据聚合在一起,

6、排序过后,每个key对应的value集合传给自定义reduce函数,处理之后,结果追加到所属分区的输出文件中。

7、map和reduce任务都完成后,master唤醒用户程序,返回结果。

Spark这个计算框架的两个优势是内存计算和DAG。它的五大特性:

1、 RDD都是由partition组成的

2、 每个split都会有相同的计算函数

3、 有一系列的依赖关系

4、 对键值对类型的RDD可以为他分区,但我暂时没用过

5、 移动计算,而不移动数据。他会把计算发到相应数据集所在节点。

整个spark的核心就是RDD,一个RDD中的数据可以做partition分区,对于RDD的操作也只有transformation和action两种。

一个Spark作业就是对RDD的一系列操作(transformation和一个action)。作业又可以分为多个stage,stage的划分有出现了宽依赖和窄依赖的概念。窄依赖就是父RDD的每个分区最多被一个子RDD的分区所用,宽依赖就是子RDD的每个分区依赖于父RDD的多个分区或所有分区。当一个作业的lineage过长,可以用到缓存管理,persis或者cache一下,加快整个处理速度。

今天资讯内容到此为止,大家积极探讨资讯内容,给小编提更多宝贵意见,留下您的关注,小编将持续为大家更新更多的劲爆科技资讯内容,让大家生活充满乐趣。拜拜...

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181023A1O49100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券