ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

大数据领域技术演变史

2022-02-16 13:02:46  阅读:227  来源: 互联网

标签:离线 Hadoop Hive 领域 计算 Spark 数据 演变史


一、大数据技术划分

 

 

 二、流式计算历史演进

  目前主流的流式计算框架有Storm/Jstorm、Spark Streaming、Flink/Blink三种。

  Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架,具有最高的摄取率。在Storm中,需要先设计一个实时计算结构,我们称之为拓扑(topology)。之后,这个拓扑结构会被提交给集群,其中主节点(master node)负责给工作节点(worker node)分配代码,工作节点负责执行代码。在一个拓扑结构中,包含spout和bolt两种角色。数据在spouts之间传递,这些spouts将数据流以tuple元组的形式发送;而bolt则负责转换数据流。Jstorm则是阿里巴巴使用Java语言复刻的Apache Storm,号称性能四倍于Apache Storm,于2016年停止更新。

  Spark Streaming,即核心Spark API的扩展,不像Storm那样一次处理一个数据流。相反,它在处理数据流之前,会按照时间间隔对数据流进行分段切分。Spark针对连续数据流的抽象,我们称为DStream(Discretized Stream)。DStream是小批处理的RDD(弹性分布式数据集),RDD则是分布式数据集,可以通过任意函数和滑动数据窗口(窗口计算)进行转换,实现并行操作。

  Apache Flink(当前主流框架)是针对流数据+批数据的计算框架。把批数据看作流数据的一种特例,延迟性较低(毫秒级),且能够保证消息传输不丢失不重复。Flink创造性地统一了流处理和批处理,作为流处理看待时输入数据流是无界的,而批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。Flink程序由Stream和Transformation这两个基本构建块组成,其中Stream是一个中间结果数据,而Transformation是一个操作,它对一个或多个输入Stream进行计算处理,输出一个或多个结果Stream。

这三种计算框架的对比如下:

 

 

 三、离线计算历史演进

  离线计算就是在计算开始前已知所有输入数据,输入数据不会产生变化。离线计算领域主要有Hadoop MapReduce、Spark、Hive/ODPS等计算框架。

  使用Hadoop MapReduce进行数据处理,需要用java、python等语言进行开发调试,分别编写Map、Reduce函数,并需要开发者自己对于Map和Reduce过程做性能优化,开发门槛较高,计算框架提供给开发者的助益并不多。在性能优化方面,常见的有在做小表跟大表关联的时候,可以先把小表放到缓存中(通过调用MapReduce的api),另外可以通过重写Combine跟Partition的接口实现,压缩从Map到reduce中间数据处理量达到提高数据处理性能。

  Spark基于内存计算的准MapReduce,在离线数据处理中,一般使用Spark SQL进行数据清洗,目标文件一般是放在HDFS或者NFS上。

  Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析与管理。Hive在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样就使得数据开发和分析人员很方便的使用SQL来完成海量数据的统计和分析,而不必使用编程语言开发MapReduce,从而降低了数据开发的门槛。

  目前业内离线数据处理,阿里的Odps平台(阿里内部的离线处理平台)底层利用自己的一套Hadoop集群每天提供PB级的数据处理,华为目前还是在基于Hadoop集群云化ETL处理数据,而字节跳动的数据平台在离线计算方向也主要运用Hive。

  综合来看,Hive的学习成本最低,各大公司应用最广泛。

四、列式存储NOSQL数据库历史演进

  NOSQL的概念博大精深,有键值(Key-Value)数据库、面向文档(Document-Oriented)数据库、列存储(Wide Column Store/Column-Family)数据库、图(Graph-Oriented)数据库等,本章节主要讲述列存储数据库中最流行的HBase及其替代品Lindorm。

  HBase是一个基于HDFS的、分布式的、面向列(列族)的非关系型数据库(NOSQL)。HBase巧妙地将大而稀疏的表放在商用的服务器集群上,单表可以有十亿行百万列,而且可以通过线性方式从下到上增加节点来进行横向扩展,读写性能优秀,支持批量导入,无需分库分表,存储计算分离,成本低,弹性好。

  Lindorm是新一代面向在线海量数据处理的分布式数据库,适用于任何规模、多种模型的云原生数据库服务,其基于存储计算分离、多模共享融合的云原生架构设计,具备弹性、低成本、稳定可靠、简单易用、开放、生态友好等优势。

  总体来说,Lindorm是HBase的升级版本,性能和稳定性等等通通优于HBase,如果需要使用海量数据提供在线服务,可以考虑Lindorm。

五、大数据开发语言历史演进

  Scala语言曾是大数据开发的宠儿,行业内热度最高的消息中间件kafka就是使用Scala写就的,而大数据领域杀手级框架Spark也是由Scala编写的。另外,Scala语言函数式编程风格、天然适合处理大规模数据的Lambda表达式、简洁优雅的语法糖、陡峭的学习曲线也深受对代码美感有极致追求的程序员所喜爱。

  曾经,Kafka + Scala + Spark + Spark Streaming的技术体系可以通吃批处理和流处理,直到一统批流、学习曲线也更平缓的Flink/Blink出现,彻底打破了这个局面,SQL语言在大数据处理中的占比大大提高。

  当前,大数据开发语言可谓百花齐放、各领风骚。其中,SQL语言(编写Flink/Blink、Hive任务)在数据仓库建设和数据分析领域应用广泛,JVM语系(Java、Scala为主)在Hadoop生态中举足轻重并且是数据平台开发的首选,Python在人工智能方向极为受宠,R语言则是数据建模和数据可视化的利器。每种语言都有自己的适用场景,建议根据自身的工种和兴趣来做选择。

六、大数据学习建议

基于上述大数据技术栈演进史的分析,建议对数据开发感兴趣的同学学习以下大数据组件:

1)流式、实时计算:Flink

2)离线计算:Hive

3)列式存储NOSQL数据库:Lindorm

原文来自:大数据技术漫谈 ——从Hadoop、Storm、Spark、HBase到Hive、Flink、Lindorm - 知乎 (zhihu.com)

标签:离线,Hadoop,Hive,领域,计算,Spark,数据,演变史
来源: https://www.cnblogs.com/Ao0216/p/15899958.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有