• [Spark on Angel] KMeans
    • 1 KMeans原理
    • 2 KMeans的Spark on Angel实现

    [Spark on Angel] KMeans

    1 KMeans原理

    Spark on Angel中的KMeans算法是基于Spark mllib的KMeans算法升级成Angel PS的方式实现。

    Spark mllib KMeans的原理部分可以参考Spark MLlib

    2 KMeans的Spark on Angel实现

    KMeans算法在每轮迭代过程中,需要不断更新聚类中心。Spark的实现方式是每轮迭代时,将聚类中心broadcast到每个Executor,计算得到新的聚类中心后,Driver将新的聚类中心collect到回来;再broadcast出去,重复下一轮迭代。当数据维度高、聚类中心数据多时,这些聚类中心数据量会非常大,Driver单点broadcast和collect的效率会很低下。

    Spark on Angel将频繁更新的聚类中心分布式地保存在Angel PS上,通过Push、Pull的方式更新和获取聚类中心。

    下图是KMeans在Spark on Angel上的实现框架

    [Spark on Angel] KMeans - 图1