分享

假如spark streaming异常退出,该如何去做容错?

liuzhixin137 发表于 2016-8-25 10:26:13 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 15626
回帖奖励 48 云币      回复本帖可获得 12 云币奖励! 每人限 1 次
大家好。

我现在的应用场景是    kafka+ spark streaming

近实时处理数据。  spark streaming处理的数据是近两个小时的数据,超过两个小时的数据直接丢弃。

那么现在spark streaming 假如出现异常,导致我的数据过期,后面的指标计算出现偏差,应该如何去做容错呢?

已有(4)人评论

跳转到指定楼层
liuzhixin137 发表于 2016-8-25 10:26:46
回复

使用道具 举报

liuzhixin137 发表于 2016-8-25 10:36:07
还有一个问题,spark sql 会产生大量的小文件,应该如何去避免这种情况,

如果用hive的话,hive可以自动去合并这些小文件,但是spark sql 并不会
回复

使用道具 举报

langke93 发表于 2016-8-25 12:40:04

回帖奖励 +12 云币

liuzhixin137 发表于 2016-8-25 10:36
还有一个问题,spark sql 会产生大量的小文件,应该如何去避免这种情况,

如果用hive的话,hive可以自动 ...

楼主只要处理好自己的程序就好了。剩下的交给框架来做。
比如你的程序异常了,你只需要捕获异常,输出到日志,查找到问题即可。

推荐参考
Spark Streaming容错的改进和零数据丢失
http://www.aboutyun.com/forum.php?mod=viewthread&tid=11814


回复

使用道具 举报

langke93 发表于 2016-8-25 15:14:13
启用预写日志后应该不会丢失


当启用了预写日志以后,所有收到的数据同时还保存到了容错文件系统的日志文件中。因此即使Spark Streaming失败,这些接收到的数据也不会丢失。另外,接收数据的正确性只在数据被预写到日志以后接收器才会确认,已经缓存但还没有保存的数据可以在driver重新启动之后由数据源再发送一次。这两个机制确保了零数据丢失,即所有的数据或者从日志中恢复,或者由数据源重发。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条