Spark的事务处理

一、什么是事务:

1.1 情形描述:

task处理到一半,失败了。可是数据 已经在输出存储在数据库了。如果第二次继续重试task,数据是不是就重复输出了?

Spark Streaming 的任务失败,讲会自动进行重试, 数据会被多次写入到存储程序中。

1.2 事务的要求:

1.能够处理且处理一次。
2.能够输出且只输出一次。

Exactly one

举例:A 给B转账,A一定会被扣除,且被扣除一次。B能接受到A转账的数据,且只接受到一次。

问:会不会完全失败呢?
答:可能性不大,一般会被处理。 除非硬件 全 部崩溃。

数据不断流进Executor。Receiver。
Executor 中只有 具体该怎么算 这个事情。

WAL: Write-Ahead Logging[1] 预写日志系统
数据库中一种高效的日志算法,对于非内存数据库而言,磁盘I/O操作是数据库效率的一大瓶颈。在相同的数据量下,采用WAL日志的数据库系统在事务提交时,磁盘写操作只有传统的回滚日志的一半左右,大大提高了数据库磁盘I/O操作的效率,从而提高了数据库的性能。

二、怎么实现事务

一、Exactly Once 的事务处理:

1.数据零丢失:必须有可靠的数据来源和可靠的Receiver,且整个应用程序的metadata必须进行checkpoint,且通过WAL来保证数据安全。
2.Spark Streaming 1.3 的时候 为了避免WAL的性能 损失和实现Exactly Once而提供了Kafka Direct API,把Kafka作为文件存储系统!!!(兼具了流的优势和文件系统的优势。Kafka消耗磁盘和HDFS消耗磁盘是一样的。直接操作它的offset)
至此,Spark Streaming + Kafka 就构建了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值