zoukankan      html  css  js  c++  java
  • 云时代架构读后感

    原文地址:

    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,同时支持序列化到磁盘。

  • 相关阅读:
    1002. A+B for Polynomials
    1010. 一元多项式求导
    BZOJ3569
    BZOJ3224
    loj2291. 「THUSC 2016」补退选
    平衡树入门
    高斯消元入门
    写手vector
    矩阵乘法入门
    母函数入门
  • 原文地址:https://www.cnblogs.com/bangandwolf/p/11050453.html
Copyright © 2011-2022 走看看