方寸之间 logo

方寸之间

Pro


  • Blog
  • Projects
  • Github
  • RSS
  • Email
  1. Spark SparkOutOfMemoryError Unable to acquire异常

    异常信息如下Caused by: org.apache.spark.memory.SparkOutOfMemoryError: Unable to acquire 28 bytes of memory, got 0 at org.apache.spark.memory.MemoryConsumer.throwOom(MemoryConsumer.java:157) at org.apache.spark.memory.MemoryConsumer.allocatePage(MemoryCo...…

    2018-11-16 • 继续阅读

  2. Alluxio异常排查二

    Alluxio异常排查二接着上篇,保险客户的问题。问题分析负责这个客户的研发,突然有一天找我说,客户卡死的问题需要看一下。好在客户可以 dump 线程状态出来的。从客户那边 dump 了5个线程快照,每个间隔2秒。可是从 dump 的线程状态上,并没有发现有卡死的线程存在,每个线程做的事情在下一个 dump 文件都会变化。无从下手,于是我再次尝试还原问题,可是这次没有成功。尝试多次都以失败告终。但是,有一点可以确定的,肯定还是线程锁定问题,因为从 dump 中看到快照中多数线程在等待锁。因...…

    2018-10-29 • 继续阅读

  3. Alluxio异常排查一

    Alluxio异常排查一了解 Alluxio 的朋友应该都清楚,加速是 Alluxio 特点中异常重要的一个特性。因此我们整个工程中都非常依赖和信任 Alluxio 的 MEM 所带来的性能提升。正是这种天真无知,让我经历了将近一个月的痛苦折磨。事情发生在二个月之前。我们的软件,在那个月出现了两个比较极端的客户。保险行业的客户 A 和 税务部门的客户 B。保修行业客户 A 数据量一般,但是业务频繁。税务部门客户 B 访问不多,但是数据量巨大。这两个客户都在那个月中,接连出现了问题。产品刚刚...…

    2018-10-29 • 继续阅读

  4. Flink笔记--容错数据流

    Flink学习笔记-容错数据流有状态的函数和操作需要存储关于计算的数据,这使得状态成为复杂计算的关键。在 Flink 中的每一种函数和操作都可以成为有状态的。为了达到很好的容错,Flink 的容错机制持续的记录分布式的数据流的快照。这些快照是非常轻量化的,因此高频的记录快照并不会影响性能。当程序由于机器,网络甚至是软件异常而失败的时候,Flink 会停止数据流。系统重启操作同时将他们恢复到最近的快照点。输入流也会被设置到记录快照点那个时间点。系统可以确保任何一条新于快照点的记录都不会记录在...…

    2018-10-25 • 继续阅读

  5. Flink笔记--窗口

    Flink学习笔记窗口WindowsWindows是处理无限数据流的核心。Windows将数据流切割成为有限大小的”数据块”,并在”数据块”上执行相应的计算。窗口的生命周期属于窗口的第一个元素到达时窗口会被创建,而到达加上指定延迟的最后期限时窗口被移除。每个窗口会有一个 Tigger 触发器和一个处理数据的函数。触发器决定着什么时候可以调用处理数据的函数。除此以外还有一个移除器,决定将哪些数据移除。分组与无分组窗口使用keyBy(…) 会将流逻辑分成多个流。多个流之间是可以并行计算的。同一...…

    2018-10-07 • 继续阅读

  6. 多版本并发控制MVCC

    多版本控制MVCC调度冲突串行化在中 ACID 的 C ,指的是数据库中记录或映射的数据与真实世界中要一致,通俗一点说就是准确。事务的原子性,隔离性和持久性最终的目的都是为了数据的准确。串行化是保证数据库一致性的最高级别。但是为了获得更好的数据库性能,多个事务需要同时执行。这时数据库的调度显得尤为重要,也就是数据库的并发控制。串行化是指同一个事务的操作被同时调度,同一时间内只执行同一事务内的操作。 如果两个事务间存在对同一数据项的写操作(write),那么认为这俩事务是冲突的,那么不同的...…

    2018-10-07 • 继续阅读

  7. Spark 整体感知

    为了能够深入使用 Spark ,那么必须对 Spark 有更为深入的理解。整体的结构的把握会显得非常重要。整体结构在脑海中成型后,别如同脑海中有了一个 Spark 的地图,后续深入了解的每个模块都能在整体上找到对应的位置,开发对应功能也会更加了然于胸。网上的结构图非常丰富,但是我觉得都太过抽象,缺少一些细节。我这里尝试做的就是帮助 Spark 新手读者能构建一个 Spark 的直观感受,同时也是我自己知识的一个整理。小Demo下面是一段简单的 demo 程序。首先从数据源中取数,这里是从文...…

    2018-09-06 • 继续阅读

  8. Spark 窗口函数内存溢出

    [流水]Spark 窗口函数内存溢出场景系统的 ETL 中有步操作,是给原表增加一列排序内容。利用spark rank 函数。实际计算过程发现,数据量大的情况,稳定会出现内存溢出。根据上面溢出位置可以发现一下代码其中Utils.copyStream(input, out) 的注释也明确说明这里有内存溢出的风险。下面我们分析一下这里为什么会内存溢出。问题分析这里不去深究窗口函数的算法细节(详见:窗口函数计算)。这里我们将重点放在对于内存溢出的内部原因和如何快速定位问题。分析溢出处逻辑从上图中...…

    2018-09-06 • 继续阅读

  9. Spark的 Shuffle 计算

    Spark的 Shuffle 计算概述由于分布式计算是数据分块,多机器同时计算的架构。但是当一个计算依赖的数据不是某一块数据,而是全局数据的时候。这类计算变难以分块计算,例如 join 操作。为了充分发挥集群机器的算力,能够并行计算。我们就会在这些依赖全局数据的计算前,增加一个 shuffle 操作。目的是按照某种逻辑将同一类数据汇集到一块中,这样变将原有无法并行计算的结构,转为可以并行计算的逻辑了。Spark 中同样如此。所有需要进行 shuffle 操作的算子,都会加入到一个叫Shuf...…

    2018-09-04 • 继续阅读

  10. Spark driver 调用 toLocalIterator 方法导致 OOM分析

    Spark driver 调用 toLocalIterator 方法导致 OOM分析目前由于计算结构的问题,导致 spark 的计算结果需要返回 driver 进行落盘,导致数据量一大,很容易导致 OOM。下面分析一下问题的原因和处理办法。首先看一下toLocalIterator 的代码实现。 /** * Return an iterator that contains all of the elements in this RDD. * * The iterator will...…

    2018-09-02 • 继续阅读


← 最近 2 / 3 更早 →
本站点采用知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议