初识大数据架构——写给还没接触过大数据相关技术的程序员

本文深入浅出地解析了大数据技术的核心概念,包括Hadoop、HDFS、Hive、Hbase、Spark和Flink的作用与特点,阐述了它们如何解决海量数据的存储与处理问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在接触目前红红火火的大数据技术之前,对于整个基于大数据架构的名词,比如Hadoop、HDFS、Hive、Hbase、Spark、Flink这些只是识字而已,根本还不知所云,也不明白这些玩意儿究竟是做什么用的。在经历了约一个月的实际开发中一边学习一边理解,总算有了些大致的头绪,现在把这些个人理解以通俗易懂的文字记录下来,方便后人作为基础入门。
首先,何为“大数据”?既然叫做大数据,顾名思义就是很庞大很庞大的数据,这些数据并非一般的数据库譬如mysql、oracle甚至mongoDB能够搞定的存储量。那么,如何存储这种海量数据,并且如何方便我们需要用到的时候取出来的问题便是我们首当其冲的话题了。再简单粗暴一些说,我们的主题就是针对大数据如何存、如何取这样最基本的问题!!

首先要介绍的名词是“Hadoop”,Hadoop这个词语据说是由这个技术发明者的孩子说出来的,之后作者就用这个作为该项目的总称了。该项目主要包含了HDFS和一个叫做MapReduce的技术。

HDFS可以理解为用于存储海量数据的平台,这个平台号称能够支持成千上万台服务器的部署成为一个集群,有了如此强大的统合存储能力,相信存储再大的数据量也不在话下了吧!这样,存储的问题就能够解决了。

而MapReduce则是上边我提到的方便从HDFS中取出来使用这些数据的技术手段,解决了“取”的问题!当然要直接使用这个技术比较复杂,也需要一定的门槛,所以Hive和Hbase也就应运而生了。

关于Hive,简单的说,这是一个以HDFS为存储平台,并使用MapReduce这个技术手段开发出来的数据库,该数据库的特色是实现了类sql的查询,可以把存储在HDFS里的数据通过sql脚本给查询出来,也支持类sql脚本的对数据库表的增删改,虽然由于某些原因无法直接对表中的数据进行update、delete,但这对于熟悉mysql的大多数开发者来说已经是一个福音。关于Hive的实现,大致是将sql脚本编译成了MapReduce程序,去HDFS里执行这些程序。也因为这样的原理,基于大数据的MapReduce的执行效率不一定会特别快,某些情况下在Hive执行一句sql需要花很长时间才能返回查询结果。

接下来介绍Hbase,这是通过MapReduce实现的一个NoSql数据库。这个数据库很有特色,普通常见的数据库都是列(字段)固定,通过行来进行纵向扩展,而Hbase还可以通过列来进行横向扩展。简单的描述下:该数据库的每一行包含多个列族,每个列族包含多个列,并且列族和列以及行都可以自由添加。说得这么复杂,其实使用起来还是挺简单的,把其理解成由表名(table)、行(row_key)、列族(family)、列(qualifier)共同组成了键,一个value组成了值的键值对数据库即可!基于这种通过键来快速定位数据的方式,使得其比Hive查询效率上高出很多,但是相反没了sql,其使用起来就没那么方便了,正所谓有得必有失嘛~~
Hbase支持一些查询匹配的命令,支持更改(直接通过键put即添加、覆盖),也支持通过行(row_key)进行删除等操作,通过官方提供的api可以进行快速的理解开发。

以上便是本人对于Hadoop架构的基本理解,就像我开始说的那样,这玩意儿实质上就是解决了海量数据的“存”和“取”这样最基本的问题而已!这样看来这些技术其实也很容易理解了吧。接下来再来介绍一下耳熟能详的Spark、Flink这些是用来干嘛的。

对于大多数业务场景,数据可以分为历史数据和实时数据这两种。其中历史数据一般是已归档的,存储进数据库里就不会再更改的,只需要回顾历史查询;而实时数据是当前时间一直在生产的,并且可以通过界面实时运算及展现出来的,针对这两种数据,通常的处理方式可分为“批”处理和“流”处理。大致的描述则是:数据一直在生产,生产出来的数据通过流处理保存到库中,能够实时的查询展示;在经过了一整天的数据生产后,通常在第二天凌晨会启动批处理任务,将前一天生产出来的数据做归档处理成为历史数据,计算生成日报表之类的方式进行存储。
Spark和Flink就是做这种“批”和“流”操作的平台。本人目前还只用过Flink,暂时就不做比对了。
Flink是一个纯粹的流式处理引擎,其特色是以流来模拟批处理,若你感兴趣可以自行开发一下Flink程序,便可以知道其程序结构以及stream的处理思想还是非常有意思的,在这里就不再继续介绍了。

除此之外还有sqoop用于数据采集等技术,也都属于大数据技术之一。

总而言之,还没接触过大数据技术的程序员们大可不必对这些技术抱有太大的神秘感,其实它们用于解决的问题基本都是显而易见的,完全不需要对这些技术抱有畏惧心理,怕自己搞不懂而不敢踏入这个行业。

以上便是本人的拙见,希望对你能有所收获,其中观点有待改进之处还请多多指出~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值