Cheng Chao

java 多任务并行框架之 Fork-Join

Fork/Join 框架是 Java7 中新增的一项特性,也是 Java7 平台的其中一项主要改进。 在实际情况中,很多时候我们都需要面对经典的“分治”问题。要解决这类问题,主要任务通常被分解为多个任务块(分解阶段),其后每一小块任务被独立并行计算。一旦计算任务完成,每一快的结果会被合并或者解决(解决阶段)。 “分治”问题可以很容易地通过 Callable 线程的 Executor 接口...

Spark 学习笔记03-运行

Spark 运行时架构 在分布式环境下,Spark 集群采用的是主/从结构。在一个 Spark 集群中,有一个节点负责中央协调,调度各个分布式工作节点。这个中央协调节点被称为驱动器(Driver)节点,与之对应的工作节点被称为执行器(executor)节点。驱动器节点可以和大量的执行器节点进行通信,它们也都作为独立的 Java 进程运行。驱动器节点和所有的执行器节点一起被称为一个 Spar...

Spark 学习笔记02-共享变量

共享变量是一种可以在 Spark 任务中使用的特殊类型的变量。Spark 有两种类型的共享变量:累加器(accumulator) 和广播变量(broadcast variable)。 累加器用来对信息进行聚合,广播变量用来高效分发较大的对象。 当任务需要很长时间进行配置,譬如需要创建数据库连接或者随机数生成器时,在多个数据元素间共享一次配置就会比较有效率。由于需要用到远程呼号查询数据库,...

Spark 学习笔记01-数据分区

在分布式程序中,通信的代价是很大的,因此控制数据分布以获得最少的网络传输可以极大地提升整体性能。和单节点的程序需要为记录集合选择合适的数据结构一样,Spark 程序可以通过控制 RDD 分区方式来减少通信开销。分区并不是对所有应用都有好处的——比如,如果给定 RDD 只需要被扫描一次,我们完全没有必要对其预先进行分区处理。只有当数据集多次在诸如连接这种基于键的操作中使用时,分区才会有帮助。我...