• 云时代架构读后感


    原文地址:

    https://mp.weixin.qq.com/s?__biz=MzAwNTQ4MTQ4NQ==&mid=306076506&idx=1&sn=75e68dcc2efcd0c50589e3983b6b6adc&chksm=0cd10e383ba6872e234d49b1b30fdf0236046893afd86b221dae243e734e89b1569b380dd70a&mpshare=1&scene=23&srcid=0619vldqxhu5uslv3Reh2a8s#rd

     

    Spark Streaming 无法找到数据块问题

    最近一个Spark Streaming项目停止了几个小时,发现后设置为自动重启。结果,Spark Streaming频繁重启,平均十分钟左右就要重启一次。

     

    异常信息为:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException): No lease on /user/ypdata/checkpoint/temp (inode 120825098): File does not exist. [Lease.Holder: DFSClient_NONMAPREDUCE_1085161746_1, pendingcreates: 1]

     问题定位:

    这个项目采用的Spark Streaming + kafka的模式,spark streaming实时从kafka拉取数据。

    频繁重启,间隔很确定的话,就怀疑是OOM导致的,因为数据在kafka端堆积,启动spark streaming后,会不停去kafka取数据(采用了high level的模式,没有控制速率),spark采用的模式是MEMROY_ONLY_SER模式,超过了driver-memory和executor-memory后,spark会自动丢弃放不下的数据,那么当需要计算该数据时自然报错说找不到数据块。

    直到堆积的数据都在kafka消费完毕。 后来的现象也证实了这一点,重启了十几次,过了两个小时后,恢复正常。

     解决方案:

    但是随着数据量的越来越多,这种情况还是会出现,而且无法解决。 

    1. 采用kafka low-level的api,控制消费速率,保护spark。 牺牲了实时性。 

    2.加大spark的driver-memory和executor-memory,同时支持序列化到磁盘。

  • 相关阅读:
    DateTime的精度小问题
    使用For XML PATH 会影响Cross Apply 返回
    一个update的小故事
    行大小计算测试
    Sql Server 2008R2 遇到了BCP导入各种中文乱码的问题
    php-fpm 启动不了 libiconv.so.2找不到
    Git使用教程
    支付宝接口使用文档说明 支付宝异步通知
    Linux(CentOs6.4)安装Git
    NGINX防御CC攻击教程
  • 原文地址:https://www.cnblogs.com/bangandwolf/p/11050453.html
Copyright © 2020-2023  润新知