《数据密集型应用系统设计》笔记十:第十章 批处理系统

文章目录记录系统与派生数据系统1. 三种不同类型的系统2. 使用Unix工具进行批处理Unix进行日志分析和数据分析在本书的第一部分和第二部分,我们所有的讨论都假定应用程序只有一个数据库。实际生产中,数据系统往往更复杂。在大型应用程序中,通常需要以多种方式访问和处理数据,并且一个数据库往往无法同时满足所有不同的需求。在本书的最后一部分,我们将讨论如何将不同的数据系统(可能具有不同的数据模型,并...
摘要由CSDN通过智能技术生成


在本书的第一部分和第二部分,我们所有的讨论都假定应用程序只有一个数据库。实际生产中,数据系统往往更复杂。在大型应用程序中,通常需要以多种方式访问和处理数据,并且一个数据库往往无法同时满足所有不同的需求。

在本书的最后一部分,我们将讨论如何将不同的数据系统(可能具有不同的数据模型,并针对不同访问模式进行过优化)整合至一致的应用程序体系结构中。

记录系统与派生数据系统

存储和处理数据的系统按照层次分类可以分为两大类:

记录系统(原生):记录系统也被称为真实数据系统,拥有数据的权威版本。如果另一个系统与记录系统之间存在任何差异,以记录系统的数据为准。
派生数据系统:从另一个系统中获取已有数据并以某种方式进行转换或处理的结果。如果派生数据丢失,用户可以从原生的记录数据进行重建。

派生数据的意义:从技术上讲,派生数据是冗余的,它是对现有原生数据的复制再加工。派生数据对于获得良好的读取查询性能至关重要。可以从单一数据源派生出不同的数据集,使用户能够从不同的“视角”来审视数据。典型的例子:kylin的多维立方体预处理。

1. 三种不同类型的系统

(1)在线系统:服务等待客户请求或指令的到达。对于这种系统,响应时间通常是衡量性能的非常重要的指标,可用性也同样关键。
(2)批处理系统:接收大量的输入数据,运行一个作业来处理数据,并产生输出数据(而不是响应请求)。由于数据量很大,作业往往需要执行一段时间,用户不会盯着作业完成。批处理的主要性能衡量指标通常是吞吐量。
(3)流处理系统(近实时系统):流处理介于在线与批处理之间。流处理是在批处理的基础上进行的,与批处理系统类似,流处理系统处理输入并产生输出(而不是响应请求)。但是,流式作业在事件发生后不久即可对事件进行处理,从而具有更低的延迟。

2. 使用Unix工具进行批处理

标准日志格式
$ remote_addr - $ remote_user [$ time_local] “request” $ status $ body_bytes_sent “$ http_referer” “$http_user_agent”
参考:https://blog.51cto.com/13713878410/1543183

Unix进行日志分析和数据分析

Unix简单而强大,使用awk,sed,grep,sort,uniq和xargs的组合,可以很便捷有效地对日志进行分析。实际上,对于很多数据分析任务,我们单纯使用Unix就可以得到满意的结果。这其中借助的是Unix的两个设计:

(1)命令链。也被称为管道。
(2)排序和内存中聚合。如果作业的工作集大于可用内存,则排序方法的优点是可以高效地使用磁盘。Linux中的sort实用程序通过自动唤出到磁盘的方式支持处理大于内存的数据集,且排序可以自动并行化以充分利用多核CPU。这意味着之前简单的Unix命令链可以很容易地扩展到大数据集,而不会耗尽内存。

Unix设计哲学

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值