大数据技术生态全景一览

news2024/9/28 15:19:20

大数据技术生态全景一览

    • 大数据平台ETL数据接入
    • 大数据平台海量数据存储
    • 大数据平台通用计算
    • 大数据平台各场景的分析运算
    • 分布式协调服务
    • 任务流调度引擎

大数据平台ETL数据接入

大数据有很多的产品,琳琅满目。从架构图上就能看出产品很多。这些产品它们各自的功能是什么,它们又是怎么样相互配合来完成一整套的数据存储,包括分析计算任务。这里要给大家进行一个讲解与分析。

我们按照数据处理的流程,从下往上给大家进行依次的讲解。

大数据生态

首先我们看数据源,数据有结构化数据,存在关系型数据库里的数据,它以二维表的形式进行存储;还有一些非结构化、半结构化数据,比如日志 json属于半结构化数据,图片视频音频属于非结构化数据。

对于结构化数据来说,一般通过sqoop组件进行抽取,把数据抽取到大数据存储平台。

大数据存储平台主流的选型是HDFS,因为它已经非常成熟了,并且经过很多年的一个打磨。

Sqoop会通过jdbc的方式,连接到数据库,对数据库进行直接抽取后做一个导出。将数据导出到HDFS中。

Sqoop在抽取的时,一般是T+1的。什么叫T+1?就是今天产生的数据,可能明天才能导入到大数据平台,它的时效性比较低一些。

像数据仓库,它其实是每天凌晨0点才会把昨天新生成的数据统一进行一个导入。

对于这种非结构化半结构化数据,它们其实就是文件,例如图片、视频、日志、json。这种文件一般来说,它们会实时产生。比如监控的摄像头,它会实时产生图片或者视频;日志会实时在服务器端生成。

实时产生的数据要进行实时抽取,这个时候肯定就不能用sqoop了,这些数据会通过flume或者logstash进行实时的监控。一旦这些非结构化半结构化数据产生,它们就会立即被抽取到大数据的存储平台。

但是按照我们前面讲过的一个知识点,实时产生的数据在架构设计上来说,我们要先给它推送到一个消息队列中进行缓冲,起到一个抗压的作用。

这个消息队列,常用的选型就是Kafka,它能扛住数据源的并发压力。扛住压力以后,实时产生的数据一定是要先经过大数据平台的处理,处理完以后再把结果存到大数据存储平台。这样才能发挥实时数据的一个价值。

所以这种实时数据,它不是直接往大数据平台存,而是先经过消息队列缓存抗压后,再由大数据平台处理,最终将计算结果保存起来。

有的同学这个时候想了,那结构化的数据,如果它也想进行实时的一个抽取,可不可以实现?当然可以,这个时候它要用到另外一种方式,目前有CDC和Ogg。Ogg是Oracle特有的,CDC是开源的。

它们可以监控,数据库里的结构化数据,当数据一旦发生变化,它们就会监控到变动的数据,并将数据抽到Kafka或其它消息队列中。再交给大数据平台进行一个处理。

它们为什么能够进行实时的一个监控?其实它们监控的是数据库的日志,比如说Mysql会有binlog,其他的数据库也有它们特有的日志文件,当我们在对数据库做一些数据新增、修改删除的操作的时候,数据库会先把这样的一个操作记录在日志中,以保证容灾。之后再往数据库里面进行一个持久化写入。

我们直接监控数据库的日志,数据的实时的变更就可以立马获取到,而且不影响数据库的性能,因为日志本身就是一个文件。这是CDC和Ogg,它做的一个事情。

所以在数据源这里,结构化数据可以使用T+1的方式,隔一段时间抽一次,导入到大数据平台。非结构化半结构化数据,当然也可以通过flume和logstach定时(T+1)把它们抽到大数据平台。

但非结构化与半结构化数据的应用场景,更多的是实时去抽取,并传送到消息队列kafka中。结构化数据通过cdc、ogg,也实时抽取到kafka。

这样的话我们不管是结构化数据,还是非结构化半结构化数据,都可以满足t+1与实时抽取方式的需要。

大数据平台海量数据存储

那数据最终会存储到我们的hdfs中,但hdfs它本质上是一个文件系统,生产上使用起来并不能适合所有场景。生产中没有见过,我们直接把数据存到文件系统里面。

我们一般会选择把数据存到数据库里,hbase就是一个分布式的nosql数据库。它是基于hdfs建立的,虽然数据最终它也是存在hdfs中,但是它上层搭建了一个数据库,这个数据库用起来易用性会更好。

这样的话你抽取过来的数据,可以直接存到hdfs里,也可以存到hbase中,就看具体的应用场景来具体对待。

大数据平台通用计算

那数据存储起来以后,我们要基于这个数据做一些运算。运算的时候,可以用mapreduce也可以用spark。

Mapreduce它计算起来要慢一些,Spark相对快一些。不管使用哪种计算框架,它们的计算任务要移动到数据节点进行一个运算。

怎么能够把计算任务分发到数据节点,要通过中间资源管理层的一些框架来完成。这里最常用的是分布式资源调度框架YARN。

YARN这个框架,它在部署的时候是和数据存储的框架部署在一起的。比如说我们底层的hdfs,它是用来做存储的有三个节点,于是YARN它也装在这三个节点上,并且管理的这三个节点的计算资源。计算资源一般包含CPU、内存,还有一些环境变量。

MapReduce和Spark计算任务,要移动到数据节点进行运算,这个时候Yarn就可以直接在数据节点上分配给这些计算任务一些计算资源;它们就可以顺利的紧贴数据运算。

运算完成之后,Yarn又可以把资源进行一个回收。所以大数据的移动计算这一块的实现,就是通过资源管理层它来完成的。

大数据平台各场景的分析运算

虽然我们在做计算的时候,有了MapReduce有了Spark,但是用起来还是不够好用,易用性还是不够好。

因为我们在开发的时候,针对于这种结构化数据,一般我们习惯用什么?用SQL。一些非结构化半结构化数据,我们习惯用一些API。

但是现在你把数据抽取到大数据平台以后,这些SQL API都不能用了。你只能用它提供的MapReduce和spark去进行一个数据处理,对于我们来说就很难用。

而且之前我们的业务系统用的SQL,用的一些API,你是不是都要进行一个迁移。迁移的时候这个工作量就很大了。

为了让我们的数据开发,或者数据分析这样的一个过程更加易用。大数据这里其实提供了很多的一些易用框架,比方说Hive,它其实完成的就是帮你把SQL转换成底层的mapreduce。

当然Hive也可以转换成Spark,计算的效率会更高。

这样的话你原来的结构化数据,存到大数据平台后,之前是用SQL进行开发的,现在依然可以用SQL。由Hive帮你把SQL转换成通用计算,转化完成之后通用计算的mapreduce或者spark再通过资源管理调度到我们的数据节点,紧贴数据完成整个计算任务。

Pig也是相同的情况,Pig有它的一些API,你使用它的API进行开发。它会把这些API转换成MapReduce任务,当然Pig比较早就停止维护了。

还有malhot,它是做机器学习的,用它提供的机器学习的API,然后它帮你转换成MapReduce。

所以数据分析这一层,它们完全是用于提高我们易用性而诞生的一些框架。

而根据它们转换的计算任务的不同,如果默认是转换mapreduce的,它们就属于hadoop生态圈。

因为hadoop包含三个组件,除了hdfs、mapreduce之外,在hadoop 2.x的时候增加了一个YARN。

默认兼容hadoop的,就属于hadoop生态圈。当然有一些框架其实刚开始诞生的时候是兼容hadoop的,后面因为spark它的性能更高,用的公司更多一些;所以hadoop生态圈有一些框架,比如说hive它也可以运行在spark上面。

当然spark也有它的一些生态,spark sql帮你把sql转换成spark任务;Mllib是做机器学习的;GraphX是作图计算的。

spark streaming是做流计算的,就是实时处理,我们一般称为实时流处理或者实时流计算,它计算得到的结果我们会给它存到hdfs里或者hbase里,当然我们一般会存储在hbase里。

因为实时的结果,如果存到hdfs里的话它会产生一些小文件问题。hdfs对于小文件来说是很敏感的,它很容易把管理节点的内存给占满,而且也会导致后续计算的一个效率下降。所以实时计算完得到的结果会存到hbase中。

hbase虽然说数据最终也存到hdfs,但是它是一个数据库,它解决了小文件问题。它并没有小文件问题带来的这些隐患。

这一部分是spark生态圈,我们之后在做开发的时候,大部分同学可能直接用spark或者mapreduce进行编程相对会比较少一些。我们可能更多的是用上层的,易用性比较高的组件来进行一些相关的开发。

还有一些是独立开发的组件(非Hadoop、Spark生态圈),比如说elasticsearch它是做搜索与检索的,数据存到elasticsearch里面以后可以进行一些模糊查询、精确匹配、语义匹配等一些操作。

为什么说它是独立的?因为elasticsearch有它自己的通用计算,也有它自己的资源管理,包括数据存储层。所以它并不依赖hadoop,它也不依赖spark。这个产品里面,它本身就包含这几层。所以它属于一个独立的产品。

分布式协调服务

最左边有一个zookeeper,zookeeper对大数据的各个产品其实是非常重要的。很多产品比如说hdfs、hbase都要依赖zookeeper。

它是干嘛的?它是一个分布式的协调服务。

因为大数据的产品它都是分布式,也就是运行在多个节点上的。比方说我们某一个大数据组件,它突然新增的一个节点上来,zookeeper就会识别到,然后通知我们之前的3个节点说,你现在的集群规模变成了4。

突然这个节点挂掉了,zookeeper也会通知另外三个节点说,好,你现在有一个节点挂掉了,节点数现在变成了3。

包括说我们的集群里面,有多个管理节点,但是这些管理节点它只有一个能够管理当前集群,其他的都是备用节点。这样的话究竟由谁来进行管理?谁来做备份?zookeeper可以进行一个选举。

比如说选第一个,作为当前的管理节点,另外两个做备份。管理节点挂掉以后,zookeeper又可以从剩下的两个备用节点里面再选出一个来,让它来进行集群的一个接管。

所以zookeeper的作用其实是很大的,我们用到的这些大数据产品,只要想要在分布式环境下进行协调,都可以依赖zookeeper来完成这样的一个诉求。

而且像一些组件是必须依赖zookeeper的,比如说kafka它在搭建之前,zookeeper必须要进行安装。

任务流调度引擎

最右边有两个任务的调度组件,一个叫oozie一个叫azkaban。azkaban相对比较新一些,它俩是用来调度我们的计算任务的,比如说我们在大数据集群里面的任务,它如果有一个先后顺序,比如说任务1完成以后,我们任务2才可以执行,任务2执行完成以后再任务3。

如果有一个严格的先后顺序,可以由oozie和azkaban来进行一个限定。再比如计算任务,如果我们要进行定时,比如说让它每天凌晨0点的时候定时执行,就可以由oozie或azkaban来完成。

所以它们主要是来完成这种任务流的管理和调度的。

OK,那大数据的整个产品就先介绍到这里,当然大数据的产品不止这些,大家要慢慢归纳,整体的架构是一致的,可以定位到它所属的分层后基本就明白它的职责。那我们下期再会!B站配套视频传送:大数据技术生态全景一览

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/375668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

乐友商城学习笔记(十六)

购物车功能分析 新增 判断用户是否登陆(页面) 未登录,添加到页面的localstrorage中 登陆,添加到redis中 已经存在该商品的购物车记录,更新数量,否则新增一条商品的购物车记录 查询 ly.store.get(“LY_C…

【打卡】图分析与节点嵌入

背景介绍 图(Graphs)是一种对物体(objects)和他们之间的关系(relationships)建模的数据结构,物体以结点(nodes)表示,关系以边(edges)…

Uncaught ReferenceError: jQuery is not defined

今天在拉取项目部署到本地的时候遇到了一个问题特此记录一下 (以后闭坑) 我和同事同时拉取了一样的代码,结果同事的页面加载正常而我的页面像被狗啃了一样,知道是js的问题但是不知道问题出在哪里?后来还是同事帮我解决…

Python - DIY - 使用dump取json某些键值对合成新的json文件

Python - Json处理前言:应用场景:基本工具:文件操作:打开文件:写文件:读文件:关闭文件并刷新缓冲区:Json字符串和字典转换:json.loads():json.dumps():Json文…

高端电器新十年,求解「竞速突围」

竞争激烈的高端电器品牌们,平时王不见王,但也有例外。海尔、博西、海信、创维、方太、老板等等近乎中国电器行业所有一线品牌副总裁级别以上高层,2月22日都现身于上海,来参加一场由红星美凯龙攒起来的高端电器局,2023中…

gogs代码仓库迁移至gitlab仓库上

将gogs仓库的所有分支都迁移到GitLab上 GitHub新建一个空项目 这个我就不教了: 不会的请点击这里 自查本地是否已有SSH公钥 我自身win11举例:C:\Users\PC.ssh\XXXXXX.pub 找“.pub”结尾的文件,用文本打开就是你本地的公钥了 直接复制公钥&#xff0…

比Redis更强,性能直接飙升一倍!

# 什么是KeyDB?KeyDB是Redis的高性能分支,专注于多线程,内存效率和高吞吐量。除了多线程之外,KeyDB还具有仅在Redis Enterprise中可用的功能,例如Active Replication,FLASH存储支持以及一些根本不可用的功能…

Java异常Throwable的分类

1. Exception:程序本身可以捕获并且可以处理的异常 编译时异常:编译期就会检查的异常,若调用的方法中throw了此类异常,则必须进行显式处理处理(用try…catch捕获或者throws向上抛出),否则无法通…

react源码解析10.commit阶段

在render阶段的末尾会调用commitRoot(root);进入commit阶段,这里的root指的就是fiberRoot,然后会遍历render阶段生成的effectList,effectList上的Fiber节点保存着对应的props变化。之后会遍历effectList进行对应的dom操作和生命周期、hooks回…

Materials - DistanceField Nodes

以前的相关笔记,归档发布;距离场相关节点:DistanceToNearestSurface节点:求出传入的Position位置到最近的面的距离并输出,在没有Position输入的时候,默认值会直接使用World Position:Position的…

部门来了个测试工程师,听说是00后,实在是太卷了.....

都说00后躺平了,但是有一说一,该卷的还是卷。 这不,前段时间我们部门来了个00后,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。…

喜讯!华秋电子荣获第六届“蓝点奖”十佳分销商奖

2 月 25 日,由深圳市电子商会主办的2023 中国电子信息产业创新发展交流大会暨第六届蓝点奖颁奖盛典在深圳隆重举行。 图:华秋商城渠道总监杨阳(右三) 深圳市电子商会连续六年举办“蓝点奖”评选活动,旨在表彰对电子信…

公众号运营思路是怎样的?建议收藏

问大家一个直击灵魂的问题: 你真的知道你的公众号该怎么运营吗? 先不要草率回答我,你先说说你的公众号运营思路是怎样的? 如果你连基本的运营思路都讲不出来,可想而知,你的公众号运营也好不到哪里去。 …

3.一一对应—简单工厂模式

什么是简单工厂模式? 简单工厂模式(Simple Factory),解决的是在多个基类的继承类中如何选择对应的类实例化。 到底要实例化哪一个继承类?——这就是简单工厂模式整天思考的问题。而之所以会出现这个问题是由于软件架…

java虚拟机中对象创建过程

java虚拟机中对象创建过程 我们平常创建一个对象,仅仅只是使用new关键字new一个对象,这样一个对象就被创建了,但是在我们使用new关键字创建对象的时候,在java虚拟机中一个对象是如何从无到有被创建的呢,我们接下来就来…

强化学习RL 02: Value-based Reinforcement Learning

DQN和TD更新算法。 目录 Review 1. Deep Q-Network(DQN) 1.1 Approximate the Q*(s,a) Function 1.2 Apply DQN to Play Game 1.3 Temporal Difference(TD) Learning 1.4 TD Learning for DQN 1.4.1 TD使用条件 condition 1.4.2 Train DQN using TD learning 1.5 summ…

【项目精选】基于java出租车计价器设计与实现(源码+论文+视频)

关于java出租车计价器设计与实现 点击下载源码 总共4个模块 (1)出租车计价系统可以实现出租车信息的管理。 1.1出租车信息的查询:通过数据库查询出租车的车型,车号,以及是否可用 1.2出租车信息的增加:向数据…

如何将BI 工具与业务系统进行单点登录对接,实现用户权限通用

首先来看下两套系统的用户体系功能,左边是BI 工具,右边是业务系统,需要实现用户权限对接和打通: 单点登录体系及用户场景 • 场景1. 用户登录Wyn BI页面使用第三方业务系统账号 • 场景2. 用户使用第三方账号登录wyn BI以后需要获…

栈与队列小结

一、理论基础1.队列是先进先出,栈是先进后出2.栈和队列是STL(C标准库)里面的两个数据结构。栈提供push和pop等等接口,所有元素必须符合先进后出规则,所以栈不提供走访功能,也不提供迭代器。3.栈是以底层容器…

求职陷阱:Lazarus组织以日本瑞穗銀行等招聘信息为诱饵的攻击活动分析

概述 Lazarus组织是疑似具有东北亚背景的APT组织,奇安信威胁情报中心内部追踪编号为APT-Q-1,因2014年攻击索尼影业开始受到广泛关注,其攻击活动最早可追溯到2007年。该组织早期主要针对其他国家政府机构,以窃取敏感情报为目的&am…