大数据BackgroundKnowledge

目录

端到端

Hive表

Airflow dag

etl

数据分层

何为数仓DW

数据分层的好处:

ROC AUC

OSS&BSS

CI/CD

CI 持续集成(Continuous Integration)

CD 持续交付(Continuous Delivery)

CD 持续部署(Continuous Deployment)

CI 和 CD 有什么区别?

devops

软件开发分工

瀑布模型

敏捷开发

DevOps


端到端

端到端流程是从客户需求端出发,到满足客户需求端去,提供端到端服务,端到端的输入端是市场,输出端也是市场。

端到端的流程是跨度比较大的一些节点之间的流程,可能还包含很多部门级的流程。

Hive

产生原因

  • 对存在HDFS上的文件或Hbase中的表进行查询时,是要手写一堆MapReducec代码;
  • 对于统计任务,只能由懂MapReduce的程序员才能完成;
  • 耗时耗力,更多精力没有有效的释放出来;

Hive基于一个统一的查询分析层通过sql语句的方式对HDFS上的数据进行查询、统计和分析。

Hive的本质就是一个SQL解析引擎,将SQL语句转换成MR job

Hive的定位是Hadoop大数据仓库,而SQL是其最常用的分析工具。

Hive的表都是纯逻辑表,就只是表的定义等,即表的元数据。

其本质就是hdfs路径/文件,以达到元数据与数据存储分离的目的。其元数据(表、表结构等信息)一般存放在mysql,不使用自带的derby,主要是其不支持并发操作,是单线程操作,整体执行效率性能偏低。

Airflow dag

Airflow是一个任务调度平台,用于以编程方式创建、调度和监控工作流。

DAGdirected acyclic graph有向无环图)是定义工作流的一种方式

DAG描述任务间的顺序和依赖关系,由python代码定义

etl

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换transform)、加载(load)至目的端的过程,是数据仓库的生命线

数据分层

详解数仓中的数据分层:ODS、DWD、DWM、DWS、ADS - 简书 (jianshu.com)

何为数仓DW

Data warehouse(可简写为DW或者DWH)数据仓库,是在数据库已经大量存在的情况下,它是一整套包括了etl抽取(extract)、转换transform)、加载(load、调度、建模在内的完整的理论体系

数据仓库的方案建设的目的,是为前端查询和分析作为基础,主要应用于OLAP(on-line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。目前行业比较流行的有:AWS Redshift,Greenplum,Hive等。

数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备,这些准备包含:清洗、转义、分类、重组、合并、拆分、统计等

数据分层的好处:

  • 清晰数据结构:让每个数据层都有自己的作用和职责,在使用和维护的时候能够更方便和理解
  • 复杂问题简化:将一个复杂的任务拆解成多个步骤来分步骤完成,每个层只解决特定的问题
  • 统一数据口径:通过数据分层,提供统一的数据出口,统一输出口径
  • 减少重复开发:规范数据分层,开发通用的中间层,可以极大地减少重复计算的工作

ROC AUC

ROCReceiver Operating Characteristic曲线是一种用于表示分类模型性能的图形工具。它通过将真阳性率(True Positive Rate,TPR)和假阳性率(False Positive Rate,FPR)作为横纵坐标来描绘分类器在不同阈值下的性能。

真阳性率可以理解为所有阳性群体中被检测出来的比率(1-漏诊率),因此TPR越接近1越好。

假阳性率可以理解为所有阴性群体中被检测出来阳性的比率(误诊率),因此FPR越接近0越好。

AUC(Area Under the Curve)ROC曲线下的面积,用于衡量分类器性能。AUC值越接近1,表示分类器性能越好;

OSS&BSS

OSS 代表运营支持系统,是指一组计算机程序,旨在帮助提供商监控、分析和管理电信网络。顾名思义,OSS 是指在电信网络的运营端使用的硬件和软件工具,包括计算机、服务器、路由器和其他核心组件。OSS 由实际的网络基础结构和用于控制网络的软件组成

BSS 业务支持系统的缩写,指代一类软件程序,用于帮助电信组织管理和简化面向客户的所有活动。这些系统涵盖电信的业务端而不是技术端。BSS 有时称为业务接口,支持电信提供商与客户之间轻松互动,包括从订购服务、解决计费问题到升级订阅等。

OSS支持电信组织监督各种运营职能,例如:

网络库存、故障管理、服务预配、配置、服务保证、网络规划

BSS支持电信公司监督和简化各种业务和客户相关活动,包括:

计费、客户订单、订阅、客户通知、服务履行、收入管理、产品营销、客户关系管理 (CRM)

CI/CD

什么是 CI/CD ? - 知乎 (zhihu.com)

CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。

CI/CD 的核心概念是持续集成、持续交付和持续部署。它是作为一个面向开发和运营团队的解决方案,主要针对在集成新代码时所引发的问题(也称为:“集成地狱”)。

CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。

这些关联的事务通常被统称为CI/CD管道,由开发和运维团队以敏捷方式协同支持。

CI 持续集成(Continuous Integration

协同开发是目前主流的开发方式,也就是多位开发人员可以同时处理同一个应用的不同模块或者功能。

但是,如果企业计划在同一天,将所有开发分支代码集成在一起,最终可能会花费很多时间和进行很多重复劳动,费事费力。因为代码冲突是难以避免的。

如果开发人员本地的环境和线上不一致的话,那么这个问题就更加复杂了。

持续集成(CI)可以帮助开发者更加方便地将代码更改合并到主分支

一旦开发人员将改动的代码合并到主分支,系统就会通过自动构建应用,并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。

如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以更加轻松地快速修复这些错误。

CD 持续交付(Continuous Delivery

CI 在完成了构建、单元测试和集成测试这些自动化流程后,持续交付可以自动把已验证的代码发布到企业自己的存储库。

持续交付旨在建立一个可随时将开发环境的功能部署到生产环境的代码库

在持续交付过程中,每个步骤都涉及到了测试自动化和代码发布自动化。

在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。

CD 持续部署(Continuous Deployment

对于一个完整、成熟的 CI/CD 管道来说,最后的阶段是持续部署。

它是作为持续交付的延伸,持续部署可以自动将应用发布到生产环境

实际上,持续部署意味着开发人员对应用的改动,在编写完成后的几分钟内就能及时生效(前提是它通过了自动化测试)。这更加便于运营团队持续接收和整合用户反馈。

总而言之,所有这些 CI/CD 的关联步骤,都极大地降低了应用的部署风险。

不过,由于还需要编写自动化测试以适应 CI/CD 管道中的各种测试和发布阶段,因此前期工作量还是很大的。

CI 和 CD 有什么区别?

CI/CD 中的“CI”始终指持续集成,它属于开发人员的自动化流程。

成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。

该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。

CI/CD 中的“CD”指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。

持续交付(第一种CD)通常是指开发人员对应用的更改会自动进行错误测试并上传到存储[DXCT11] 库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中。

这旨在解决开发和运维团队之间可见性及沟通较差的问题。

因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。

持续部署(另一种“CD”)指的是自动将开发人员的更改从存储库发布到生产环境[DXCT12] ,以供客户使用。

它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。


 [DXCT11]这里是更改后的会自动被存到存储库,然后运维团队部署到生产环境

 [DXCT12]这里是直接自动部署到生产环境

devops

DevOps到底是什么意思? - 知乎 (zhihu.com)

软件开发分工

一个软件从零开始到最终交付,大概包括以下几个阶段:规划、编码、构建、测试、发布、部署和维

随着软件产业的日益发展壮大,软件的规模也在逐渐变得庞大。软件的复杂度不断攀升。一个人已经hold不住了,就开始出现了精细化分工

码农的队伍扩大,工种增加。除了软件开发工程师之外,又有了软件测试工程师软件运维工程

瀑布模型

早期所采用的软件交付模型,称之为瀑布(Waterfall)模型就是等一个阶段所有工作完成之后,再进入下一个阶段

这种模型适合条件比较理想化(用户需求非常明确、开发时间非常充足)的项目。大家按部就班,轮流执行自己的职责即可

但是,项目不可能是单向运作的。客户也是有需求的。产品也是会有问题的,需要改进的

随着时间推移,用户对系统的需求不断增加,与此同时,用户给的时间周期却越来越少。在这个情况下,大家发现,笨重迟缓的瀑布式开发已经不合时宜了

于是,软件开发团队引入了一个新的概念,那就是大名鼎鼎的——“敏捷开发Agile Development

敏捷开发

敏捷开发在2000年左右开始被世人所关注,是一种能应对快速变化需求软件开发能力.把大项目变成小项目,把大时间点变成小时间点

有两个词经常会伴随着DevOps出现,那就是CICDCIContinuous Integration(持续集成),而CD对应多个英文,Continuous Delivery(持续交付)或Continuous Deployment(持续部署)

虽然敏捷开发大幅提升了软件开发的效率和版本更新的速度,但是它的效果仅限于开发环节。研发们发现,运维那边,依旧是铁板一块,成为了新的瓶颈

这个时候,我们的DevOps,隆重登场了

DevOps

DevOps这个词,其实就是DevelopmentOperations两个词的组合

从目标来看,DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠

根据DevOps思想重新梳理全流程的规范和标准

在DevOps的流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。而开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。

DevOps的实施,促进开发和运维人员的沟通,增进彼此的理(gan)解(qing)。

在思维和流程改变的同时,想要充分落地DevOps,当然离不开软件和平台的支持

上述这些关键要素里面,技术(工具和平台)是最容易实现的,流程次之,思维转变反而最困难。

换言之,DevOps考验的不仅是一家企业的技术,更是管理水平和企业文化。

向量数据库

一文带您了解向量数据库:大模型场景下知识管理新方式 - 知乎 (zhihu.com)

将企业知识库文档和数据通过向量特征提取(embedding)然后存储到向量数据库(vector database),应用LLM大语言模型与向量化的知识库检索和比对知识,构建智能服务。

向量数据库的主要作用是存储和处理向量数据,并提供高效的向量检索功能。最核心是相似度搜索,通过计算一个向量与其他所有向量之间的距离来找到最相似的向量(最相似的知识或内容)。

这是基本索引(flat indexes)的朴素原理,在大型向量数据库中,这可能需要很长时间。

为了提高搜索性能,可以尝试仅计算一部分向量的距离。这种方法称为近似最近邻(approximate nearest neighbors:ANN),它提高了速度,但牺牲了结果的质量。。

向量数据库在大模型应用中的核心工作流程

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值