首页 文章 精选 留言 我的

精选列表

搜索[data],共10000篇文章
优秀的个人博客,低调大师

流式计算与计算抽象化------《Designing Data-Intensive Applications》读书笔记15

上篇的内容,我们探讨了分布式计算中的MapReduce与批处理。所以本篇我们将继续探索分布式计算优化的相关细节,并且分析MapReduce与批处理的局限性,看看流式计算是否能给我们在分布式计算层面提供一个更好的解决方案。 1.MapReduce的局限 MapReduce作业是独立于其他作业,输入与输出目录通过分布式存储系统串联。MapReduce作业的存在相互的依赖关系,前后相互依赖的作业需要将后面作业的输入目录配置为与之前作业的输出目录,工作流调度器必须在第一个作业完成后才开始第二个作业。 依赖关系的衔接问题 MapReduce作业的输出的数据,写入分布式存储系统的过程称为物化。而通过将中间状态的数据物化,以充分利用中间状态的数据,可以实现作业之间松散的耦合,中间数据可以被其他作业重用,来加快分布式计算的性能。但MapReduce作业只能在前一个作业生产输入之后,后一个作业才能启动,所以整个工作流程的执行才相对缓慢。 无界数据的演算 在生产环境之中,很多数据是无界的,因为它随着时间的推移逐渐产生,这个过程永远不会结束。所以批处理计算必须人为地将数据分割成固定的时间段:例如,在每天结束时处理一天的数据,或者在每小时结束时处理一小时的数据。而这种方案对于时效性要求较高的应用来说,是不能接受的。 多余的中间状态 MapReduce任务会将中间状态的数据存储在分布式存储系统存储之中,这就意味着这些数据将会在多个节点上复制,尽管这样保证了数据的安全性,但是对于临时数据来说,有些矫枉过正,会占据大量的存储空间与不必要的磁盘读写操作。 2.数据流式计算 为了解决这些MapReduce的一些问题,新的计算引擎被提出,类似于Spark,Flink等。这些新的计算引擎有一个共同点:将整个处理流程作为一个大作业,而不是把它们分解成独立的子作业。通过几个处理阶段显式地处理数据流,所以这些系统称为数据流引擎。 计算部分与MapReduce类似,数据流引擎也通过调用用户定义函数来处理记录。并将输入进行分区,一个函数的输出可以成为下一个函数的输入。而与MapReduce不同的是,这些函数不必严格通过Map函数与Reduce函数进行交替运行,而是可以以更加灵活的方式进行组合。 相比起MapReduce模型,流式计算有如下几个优点: 代价较高的工作,例如排序,只需要在实际需要的地方执行,而不是总是默认地在每个Map和Reduce阶段都需要进行。 减少了不必要的Map任务,Mapper所做的工作常常可以合并上一个Reducer之中(因为Mapper不改变数据集的分区)。 因为流中的所有的数据依赖关系都是显式声明的,所以调度器可以进行局部优化。例如,它可以尝试将某些数据互相依赖的任务调度在同一台机器之上,这样就可以通过共享内存缓冲区的方式交换数据,而不是通过网络进行传输,来加快作业的进行。 作业运行的中间状态将被保存在内存中或本地磁盘中,比起写入到类HDFS的分布式存储系统之中,这样可以大大降低延迟。 相比于MapReduce模型,流计算模型会显式重用JVM,来减少JVM启动关闭带来的性能损失。 数据流引擎可以实现与MapReduce引擎相同的计算模型,而且由于数据流引擎的优化工作,任务通常的执行速度会更快。 容错机制 将中间状态写入分布式存储系统并非一无是处,这其实是MapReduce模型的容错机制:一旦一个任务失败了,可以在另一台机器上重新启动,再从分布式存储系统之中读取相同的输入。而流计算引擎避免了将中间状态写入分布式存储系统,而采用了一种新的容错机制:一旦运行机器出现故障,机器上的中间状态会丢失,它会重新计算丢失的中间状态。 当需要重新计算中间状态之后,最为重要的计算的确定性:给定相同的输入数据,最终要产生相同的输出结果。如果丢失的数据已经发送给下一阶段的计算函数,那么这个问题就变得复杂了。如果重新计算的数据和上一次计算的结果不一致,需要同样中止下一阶段的计算。所以通过重新计算数据,来进行容错会比较苛刻而且会产生额外的计算代价:计算是CPU密集型的,那么重新计算可能会付出更高的代价。 3.更高层的API 无论是MapReduce还是流计算引擎,都是在较为底层的角度对数据进行分析与处理。而在这种角度上建立起编程模型是十分费时费力的事情,所以我们开始关注计算抽象化的问题,通过在更高的层次抽象底层的计算模型来实现:改进编程模型,提高处理效率,以及扩大这些技术可以解决的问题。 所以更加高级语言和API开始流行起来,如Hive、Pig、Impala等,他们将手工编写MapReduce作业进行了简化,只需要编写少量的代码便可以完成相同的任务,并且能够转移到新的数据流执行引擎不需要重新编写代码。除了需要更少代码的明显优势外,这些高级API还允许交互式的使用,我们可以在shell中逐步地编写分析代码,这种开发风格在探索数据集和尝试处理数据的方法时非常有用。 小结: 偷懒了一下,写了一篇很简短的篇幅的小结..............下一篇将聊一聊类消息队列的数据系统。

优秀的个人博客,低调大师

2026年针对医药行业的 data governance 工具,功能细节怎么评估靠谱

医药行业的数据合规要求逐年收紧,不少从业者选工具时总踩坑,今天就拆解医药行业数据治理的核心评估逻辑。 ### 先确认合规适配性是否覆盖医药专属监管要求 很多通用数据治理工具的合规模块,是面向全行业通用场景设计的,放到医药场景里很容易出现适配漏洞。 医药行业的数据涉及临床记录、患者隐私、药品溯源等敏感内容,必须优先核对工具是否内置2026年最新的药监数据规范对应校验规则,而非仅满足通用的个人信息保护要求。 网上有个常见误区:只要过了等保2.0的数据治理工具就能用在医药场景。实际等保只是基础门槛,医药行业还需额外匹配GSP、临床试验数据管理规范等专属监管要求,缺一项都可能埋下合规隐患。 不少机构之前选了通用工具,后续补全医药专属校验模块花了近半年时间,反而拖慢了数据治理的整体进度。 ### 再核查数据血缘追溯是否支持医药全链路场景 普通行业的数据血缘大多只覆盖业务系统的流转链路,放到医药行业的复杂场景里根本不够用。 医药行业的数据从药品研发、临床试验、生产溯源到终端流通,全链路的节点都需要可追溯,工具的血缘追溯功能必须能打通跨系统的异构数据节点,不能仅支持单一业务库的链路展示。 比如某药企之前用的通用工具,只能展示生产环节内部的数据流转,一旦出现药品批次数据异常,根本没法快速关联到上游的原料入库记录和下游的终端销售数据,排查问题耗时是医药专属工具的三倍以上。 ### 最后校验敏感数据脱敏是否适配医药专属字段规则 很多通用数据治理工具的脱敏规则,只覆盖手机号、身份证号这类常见字段,没法适配医药场景的特殊敏感字段。 医药行业的患者病历、临床试验受试者隐私数据、未公开的新药研发参数,都属于专属敏感字段,工具的脱敏功能必须支持自定义医药类字段的分级脱敏策略,不能用通用规则直接套用到所有数据上。 如果直接用通用脱敏规则处理临床数据,很容易出现脱敏不彻底或者过度脱敏的问题,前者会泄露患者隐私,后者会导致后续的临床统计分析没法正常开展,反而影响正常业务推进。 2026年评估医药行业数据治理工具的功能细节,核心就是紧扣行业专属的监管和业务需求,避开通用工具的适配陷阱。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册