大数据

作者: 陈子晞CZX | 来源:发表于2019-03-08 23:09 被阅读0次

一、大数据的特点

数据量大;数据生成快;数据形式多样;数据价值大。

二、HDFS

hadoop分布式文件系统。

特点

1、建立在大量廉价的机器上,所以硬件错误是常态,但是提供容错机制。

2、简单一致性模型:只允许追加写,不能修改,保证了数据的一致性。

3、批量读而不能随机读,关注的是吞吐量而不是效率。

优点

高容错:数据多副本,副本丢失自动恢复。

高可用:NameNode的HA(主备切换,元数据高可用,AN的选举)和安全模式机制。

高扩展:10K节点规模。

适合大规模离线批处理。

缺点

不适合低延迟的数据访问;不适合大量小文件的存储;不支持并发写;不支持随机修改。

HDFS中的角色

Active NameNode(AN)

集群中唯一的活动的管理节点(Master)。负责管理命名空间和元数据,处理客户端的读写请求,为DataNode分配任务。

Standby NameNode(SN)

AN的热备节点。当AN宕机时,升级为新的AN。

负责周期性同步edits日志,合并edits和fsimage到本地磁盘。

NameNode元数据

包括edits(编辑日志文件,记录了自上一个检查点以来所有的文件更新操作)和fsimage(元数据检查点镜像文件,保存了文件系统所有的目录和文件信息)。

DataNode

执行客户端的读写请求;储存block数据和校验和,通过心跳机制定期向NameNode反馈运行状态和block列表信息。

Block数据块

HDFS最小的存储单元,默认128M一个块,三副本。

edits和fsimage的合并

hadoop1.x:将edits和fsimage从AN复制到SN中,在SN中进行合并,然后把结果再复制回AN。

hadoop2.x:通过将edits保存到QJM共享存储系统中,每次SN只要从QJM中拿到edits,然后和保存在自己这的fsimage合并,再将结果复制给AN即可。

安全模式

概念:安全模式是HDFS的一种保护机制,此模式下只允许读请求,不接受写等更新请求。

触发的条件

1、NameNode重启。2、NameNode磁盘空间不足。3、block上报率低于阈值。4、DataNode无法正常启动。

三、MapReduce

面向批处理的分布式计算

核心思想

分而治之,并行计算;移动计算,而非移动数据。

执行过程

Map-Reduce程序执行过程

split:将输入数据分成大小相等的数据片;一个切片对应一个map任务,切片数决定map任务数;注意split只是逻辑概念,只包含元数据信息。

map阶段:任务数由切片数决定,输出的是中间结果(如key-value形式)。

reduce阶段:由若干reduce任务组成,输出的是最终结果。

shuffle阶段:是Map-Reduce的中间环节,负责分区(partition),排序(sort),溢写(spill),合并(merge),抓取(fetch)等操作。

shuffle过程详解

map部分的shuffle:map任务将中间结果写入缓存中,同时对数据进行分区排序;当缓存到达阈值,便会溢写到磁盘的临时文件中,临时文件也会分区排序;当map任务结束时,将多个临时文件合并成一个文件,文件也会分区排序。

reduce部分的shuffle:reduce任务抓取自己需要的分区数据,保存在缓存中,到达阈值再溢写到磁盘的一个临时文件中;当抓取结束时,将多个临时文件合并为一个reduce的输入文件,文件中的值按key排序。

局限性

只有map和reduce两种操作;执行效率低,时间开销大;不适合迭代计算、交互式计算、流式计算。

四、Spark

spark由spark core、spark SQL、spark Streaming、spark MLib、spark GraphX组成。

由于spark的计算是基于RDD实现的。所以主要介绍一下RDD。

RDD

RDD(弹性分布式数据集),分布在集群中的只读对象,由多个partition组成,失效后可以自动重构(弹性)。

RDD操作

transformation:通过已有的RDD产生新的RDD,但是不触发计算。

action:通过RDD计算得到一个或一组值,真正触发计算。

RDD依赖

窄依赖:父RDD的一个分区只能被一个子RDD的一个分区使用。

宽依赖:子RDD的一个分区使用所有父RDD的所有分区。

宽依赖会触发shaffle阶段,所以开销大,应尽量避免宽依赖。

Spark的master/slave架构

Master:负责集群的管理。

Worker:工作节点,其中可有多个Executor,每个Executor用来执行多个task。

Zookeeper负责Master的HA,避免单点故障。

五、Storm

分布式实时计算流式处理系统。

核心概念

Nimbus:集群的主节点,负责任务的分配

Supervisor:集群的从节点,负责其上的worker进程的管理。一个worker进程可以有多个线程,每个线程可以执行多个任务。

Zookeeper:负责Supervisor的心跳机制和状态管理。从而帮助Nimbus进行任务分配。

Topology:真正的storm程序,其由一个Spout和多个Bolt构成。

Spout:负责从数据源获取数据,然后形成Tuple(Storm的数据格式,支持所有类型的有序元组)分发给Bolt。

Bolt:真正执行task的单元,在execute方法中具体实现操作。

Storm、Spark Streaming和Map-Reduce的对比

计算模型:纯实时,来一条数据处理一条。准实时,一次处理一个时间段的数据。非实时,适合离线大批量数据处理。

计算延迟:低。较低。高。

计算吞吐量:低。中。高。

动态调整并行度:支持。不支持。不支持。

六、Kafka

基于发布/订阅的分布式消息系统

基本概念

Broker:Kafka的一个节点,多个Broker组成Kafka集群。

Topic:一个topic是一类数据的集合。topic是逻辑概念,用户只需知道数据属于哪个topic,而不必关心它的实际存储位置。

Partition:有序、不可修改的消息队列(FIFO)。一个topic可以分成多个分区,一个分区有多个Replication(副本),分别存放在不同的broker上。partition是物理概念,一个分区对应一个文件,文件中保存着数据和索引信息。

Offset:数据在Partition中的偏移量,由Zookeeper进行维护。

Producer:向Kafka发送数据的客户端。

Consumer:从Kafka消费数据的客户端。

Consumer Group:不同消费者组可以同时消费一个topic,但是一个topic只能被同组里的一个consumer消费。

Zookeeper:保存着Kafka的元数据。负责Kafka的管理,包括配置管理,动态扩展,broker负载均衡,Kafka Controller Leader选举等。

工作机制

Kafka高可用

多分区多副本:一个topic被分成多个分区,每个分区有多个副本,其中一个是partition leader,负责数据的读写,其余的副本作为follower定期从leader同步数据。

Kafka Controller Leader:每个broker启动时都会创建一个kafka controller。而leader是由zookeeper负责选举,leader负责集群分区和副本的管理。

Kafka Partition Leader:在zookeeper中维护着一个保存有分区副本信息的ISR列表。当Partition Leader宕机时,Controller Leader会从ISR中选择一个副本作为新的Partition Leader。ISR列表则是由Partition Leader负责追踪和维护。

七、Redis

所有数据以key-value存储的数据服务器。

支持的value类型有String、List、Set、Sorted Set、Hash。

Redis持久化

方法一:快照。将内存中的数据以快照的形式存入二进制文件中。

方法二:AOF(Append of File),此方法通过记录在数据集上的操作来进行数据持久化。

主从复制

Redis的Master将数据复制到Slave的时候,不会阻塞Master,Master还是可以继续处理客户端的数据请求。

Redis事务

简单的事务机制,保证单个客户端发起的事务的原子性。

发布/订阅

和Kafka类似但是,没有消费者分组机制。

八、Redis、Kafka和RabittMQ的对比

Redis基于内存来存储数据,所以速度很快,但是吞吐量小,要是作为消息队列还得自己实现消息队列的具体细节。

Kafka对消息进行分区存储、分组消费,具备高吞吐、高容量的特点,能很好的做到负载均衡,且可以给数据设置过期时间。

RabittMQ是典型的消息队列形式,数据在队列中排队,然后发送给客户端,具有良好的路由和负载均衡。

九、Kubernetes

相关文章

  • 大型网站java中间件,总的来说就是cobar,roketmq,

    关键词记录 请求数据包小,返回数据大 ,差别不大 请求数据包大,返回数据小,差别大 代理 ----》热备 服务自治...

  • 数据大屏

    一、是什么 “可视化+实时+足够大” 将数据通过可视化形式实时显示在足够大的屏幕上。如图1所示: 二、为什么(作用...

  • 数据大屏 - guandata智能数据可视化分析

    数据大屏可视化可更直观更智能的决策场景体验,通过数据大屏实时监测企业数据,洞悉运营增长,助力智能高效决策。 数据大...

  • 海量数据找前k大

    海量数据找前k大 参考1 海量数据找前k大

  • 大数据是什么

    一、大数据概念 "大数据"是一个体量特别大,数据类别特别大的数据集,并且这样的数据集无法用传统数据库工具对...

  • hadoop框架学习笔记一 2020-04-01

    1.1大数据概论 主要解决海量数据存储和海量数据的分析计算问题 1.2大数据的特点 * volume(大量) *v...

  • 报告总统(下)

    一、大数据时代的数据收集、分析 大数据之所以为”大“,有两个层面:其一、数据量大,海量数据;其二、分析规模大:由于...

  • 数据分析-003-数据指标

    数据指标 "对当前业务有参考价值的统计数据。" 三大数据 我们大致可以把数据分成三大类: 用户数据、行为数据、业务...

  • 一篇文章,让你对大数据有全新的掌握

    一、大数据概念 "大数据"是一个体量特别大,数据类别特别大的数据集,并且这样的数据集无法用传统数据库工具对其内容进...

  • java

    数据类型分为:8大基础数据类型和3大引用数据类型。 基础数据类型和引用数据类型的区别: 1,基本数据类型变量声明之...

网友评论

    本文标题:大数据

    本文链接:https://www.haomeiwen.com/subject/ehktpqtx.html