小白入门大数据,这一篇就够了

来源:弄潮大数据 今日头条 日期:2021-05-19

大数据的存储解决方案就是第二种,选择更加廉价、高效、可扩展的横向扩展方式来满足数据存储。既然选择堆数量的方式来存储大数量级的数据,那就还要解决一个问题,那就是查询问题。数据可以分批放入不同的硬盘中,我获取的时候如何准确快速的找到想要的那一条数据,放在哪个盘、哪个文件的第几行呢?这就需要专业的大数据存储工具来解决这些问题,实现分布式存储情况下每台节点数据量的平衡、数据冗余备份防止数据丢失、数据建立索引实现快速查询等。目前大数据中用到的主流存储系统有哪些呢?比如:HDFS、HBase、Alluxio...

HDFS是Hadoop三大组件之一(另外两个组件分别是:资源管理组件——YARN,并行计算组件——MapReduce),是一个分布式的文件存储系统,在大数据存储系统中具有不可替代的作用。从各种数据源采集的数据一般都是存储在HDFS,HDFS支持数据的增删改查,类似于传统数据库,不过在大数据系统中,我们称之为“数据仓库”。

HBase是一个分布式的NoSql数据库,分布式的特点以及面向列的存储特性,使得HBase在大数据存储领域应用广泛,主要用于存储一些半结构化数据和非结构化数据,并且可以结合phoenix(感兴趣的朋友可以自行百度了解)来实现二级索引。

Alluxio原本叫做Tachyon,是一个基于内存的分布式文件系统。它是架构在底层分布式文件系统(比如:HDFS、Amazon S3等)和上层分布式计算框架之间(比如后面会提到的MR、Spark、Flink等)的一个中间件,主要职责是以文件形式在内存或其它存储介质中提供数据的存取服务,减少数据IO性能消耗,加快计算引擎加载数据的速度。

如果数据采集之后,只是存储在数据仓库之中,那么这些数据没有任何价值,也无法推动、促进我们的业务。所以,数据存储之后,就是要考虑数据计算的问题了。数据如何计算呢?传统的软件分析软件Excel、Mysql等无法承载海量数据的分析,因为设计之初,考虑到的数据上线就远远达不到大数据的入门门槛标准。我们就要寻求一些专业的大数据量的分析计算软件来应对不同特点数据集的数据计算。数据计算从处理效率来分,可以分为:离线批处理、实时处理。如果从处理方式来分,可以分为:数据分析、数据挖掘。

我们先以离线批处理和实时处理两个角度来了解数据计算处理工具。

大数据兴起之初,人们对数据处理的时效性没有现在要求那么高,更加注重时间和成本的平衡,基本只是面向“天”为粒度的离线计算场景,就是在第二天才开始处理前一天的数据。在这种场景下就诞生了MapReduce,Hadoop三大组件中的并行计算组件。MapReduce计算主要是利用磁盘来进行中间结果数据的暂存,这样就造成数据的计算过程,数据不断在内存和磁盘间IO,影响了计算效率,在一些数据量比较大的情况下,一个MR(MapReduce的简称)任务就能跑一天。MR计算不止慢,MR框架使用还有一定的开发入门门槛,所以后来又出现了一个数据计算工具——Hive,Hive对复杂的MR程序开发say no!开发人员只需要懂SQL语言就能够进行数据的增删改查,Hive会将你的SQL语句在计算机实际计算前转换为MR计算任务,虽然速度还是一样的慢,但是降低了程序员的开发门槛。

随着数据应用的不断深入,大数据体系的不断完善,数据的价值越来越随着时效而凸显,所以越来越多的人对数据的时效性提出了更高的要求。在这种情况下,人们开始需求更快速的数据计算工具,这就诞生了后来的Impala、Presto等一系列基于纯内存或以内存为主的计算引擎,大大缩短了数据的处理时间,提高了数据信息提取的效率,使数据产生了更多的商业附加价值。

人们在一些特定场景下,对于数据处理的效率要求是没有上限的。比如,电商系统的实时推荐、双十一天猫的监控大屏等,最深入人心的就是12306车票实时统计。于是,实时流计算的场景就逐渐产生了,这也催生了后来的Spark、Flink这一类实时计算引擎的发光发彩。流计算是指对持续流入的数据立即进行处理,但是谁也不能保证我上游数据一定是匀速写入,这就需要引入一个叫消息中间件的消息缓冲组件,比如:Kafka、RocketMQ、RabbitMQ等,主要作用就是起到一个限流削峰的作用,就好像一个蓄水池,对于某一时间涌入的大量数据进行暂存,然后以一个匀速的速率传递将消息分批传送到实时计算引擎进行数据实时计算。

Spark是一个基于内存的计算引擎。Spark的功能组件可以细分为SparkCore、SparkSql、SparkStreaming、GraphX、MLlib。SparkCore、SparkSql主要是用来做离线数据批处理,SparkStreaming则是用来做实时流计算,GraphX是用来做图计算,MLlib是一个机器学习库。Spark Streaming 支持从多种数据源获取数据,包括 Kafka、Flume、Twitter... ,从数据源获取数据之后,可以使用诸如 map、reduce、join 和 window 等高级函数进行复杂算法的处理,最后再将计算结果存储到文件系统、数据库...中。

Flink认为有界数据集是无界数据流的一种特例,所以说有界数据集也是一种数据流,事件流也是一种数据流。Everything is streams,即Flink可以用来处理任何的数据,可以支持批处理、流处理、AI、MachineLearning等等。

    A+
声明:本文转载自其它媒体,转载目的在于传递更多信息,并不代表赞同其观点和对其真实性负责。