可扩展机器学习——Spark分布式处理

注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的PPT可见参考文献的链接。这个只是自己的学习笔记,对原来教程中的内容进行了梳理,有些图也是引用的原来的教程,若内容上有任何错误,希望与我联系,若内容有侵权,同样也希望告知,我会尽快删除。

可扩展机器学习系列主要包括以下几个部分:

  • 概述
  • Spark分布式处理
  • 线性回归(linear Regression)
  • 梯度下降(Gradient Descent)
  • 分类——点击率预测(Click-through Rate Prediction)
  • 神经科学

二、Spark分布式处理

Spark图标:

1、大数据问题

在传统的数据处理问题中,通常是使用单机处理,随着时代的发展,信息技术也在不断发展,但是数据的增长速度已经远远超过了计算机计算速度。数据的增长如下图所示:

在这样的情况下,单机的环境就很难处理和存储如此庞大的数据,唯一的解决方法就是利用庞大的集群,分布式的存储和处理这些数据。

2、分布式处理概述

下面以统计一篇文章中出现的单词的次数为例,来介绍如何使用分布式的计算方法处理大数据。对于如下的一篇文章的单词统计:

其中,一种方法是使用Hash表,在Hash表中,key为每一个单词,Value为每个单词出现的次数,如:

在上述的方法中,若数据集较好,则可以在单机的条件下很容易的得到处理,但是当数据量变得很大的时候,单机环境下不能处理所有的数据,此时,可以使用不同的机器对不同的文章进行统计,使用的依旧是Hash表的存储形式,最后使用一台机器对最终的结果进行汇总,具体过程如下图所示:

在这样的情况下也会存在问题,即最终的结果需要在一台机器上完成,要是数据量很大,那么第一需要的计算量比较大,第二,存储空间会受到限制。为了解决第一个问题,可以在中间再增加一些计算层,如下图所示:

但是依旧在最后需要在一台机器上进行汇总,为了彻底解决上述的两个问题,可以使用下述的分布式的计算方法:

其中,第一阶段称为Map,第二阶段称为Reduce,如下图所示:

3、Map-Reduce的工作原理

上述的分布式计算便是Google的Map-Reduce的基本原理,这样的基于集群的计算模式需要解决两个问题:

  • 如何在不同的机器上划分工作。
  • 如何处理失败的问题。

对于第一个问题,通常考虑网络,数据所在的位置,因为在不同的机器之间移动数据是一个很昂贵的工作。对于第二个问题,通常是重启一个新的任务,如下图所示:

对于比较慢的工作,通常也是重启一个新的任务,如下图所示:

综上,可以看到分布式计算中的两阶段模式,即Map阶段和Reduce阶段,具体的处理流程如下图所示:

如果任务较为复杂或者是需要迭代的过程,可以通过组合多个Map和Reduce过程来处理,如下图:

但是Map-Reduce在处理数据的过程中时,需要大量的I/O操作,I/O操作需要占据大量的处理时间。

4、Spark工作原理

随着内存价格的下降,同时为了解决Map-Reduce在计算过程中的大量I/O操作,Spark的原则是将数据尽可能存储在内存中(in-memory),因为内存的操作速度要快于外存的I/O速度。

如在Map-Reduce过程中的操作为:

而在Spark中,操作的图为:

在过程中,将中间过程的数据存储在内存中,这样便会大大降低了I/O的时间。

5、RDD

RDD(Resilient Distributed Dataset)称为弹性分布式数据集,是Spark的核心概念。一个RDD代表一系列的“记录”。这些记录被分配或被分区到一个集群的多个节点上。Spark中的RDD具有容错性,即当某个节点或任务失败时,RDD会在余下的节点上自动重建,以便任务能最终完成。

6、Spark的工具

Spark的工具主要包括:

  • Spark SQL
  • Spark Streaming
  • MLlib
  • GraphX

7、Spark与MapReduce之间的差异

8、Spark实践

Spark的安装可见《Spark机器学习》,单机版的只需要下载与解压缩即可。在课程中,使用的是Python的接口:pyspark

对于Spark的使用,可以参见Spark编程指南——Python版

若需要PDF版本,请关注我的新浪博客@赵_志_勇,私信你的邮箱地址给我。

参考文献

scalable-machine-learning

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏加米谷大数据

什么是 Apache Spark?大数据分析平台详解

自从 Apache Spark 2009 年在 U.C. Berkeley 的 AMPLab 默默诞生以来,它已经成为这个世界上最重要的分布式大数据框架之一。S...

17130
来自专栏机器人网

机器人如何进行速度倍率的调节?

用户在示教机器人轨迹时,往往会不断的调节机器人的速度倍率。这时就需要不断地去按速度倍率调节键(速度倍率+%键和速度倍率-%键 )。如何进行速度倍率的调节,如何进...

9520
来自专栏Albert陈凯

Spark和MapReduce相比,都有哪些优势?

在实际应用中,由于MapReduce在大量数据处理时存在高延迟的问题,导致Hadoop无力处理很多对时间有要求的场景,越来越多的公司开始采用Spark作为与计算...

36450
来自专栏企鹅号快讯

什么是 Apache Spark?大数据分析平台详解

自从 Apache Spark 2009 年在 U.C. Berkeley 的 AMPLab 默默诞生以来,它已经成为这个世界上最重要的分布式大数据框架之一。S...

23760
来自专栏HappenLee的技术杂谈

流式计算与计算抽象化------《Designing Data-Intensive Applications》读书笔记15

MapReduce作业是独立于其他作业,输入与输出目录通过分布式存储系统串联。MapReduce作业的存在相互的依赖关系,前后相互依赖的作业需要将后面作业的输入...

10120
来自专栏挖掘大数据

Spark和RDD究竟该如何理解?

1.Spark的核心概念是RDD (resilient distributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分...

28700
来自专栏Albert陈凯

3.0Spark计算模型

Spark大数据处理:技术、应用与性能优化 第3章 Spark计算模型 创新都是站在巨人的肩膀上产生的,在大数据领域也不例外。微软的Dryad使用DAG执行模...

33670
来自专栏CSDN技术头条

Apache Spark 1.6发布

今天我们非常高兴能够发布Apache Spark 1.6,通过该版本,Spark在社区开发中达到一个重要的里程碑:Spark源码贡献者的数据已经超过1000人,...

21580
来自专栏用户画像

Spark RDD

弹性分布式数据集(RDD)不仅仅是一组不可变的JVM(Java虚拟机) 对象的分布集,可以让你执行高速运算,而且是Apark Spark的核心。

13430
来自专栏灯塔大数据

每周学点大数据 | No.70 适于迭代并行计算的平台——Spark初探

编者按:灯塔大数据将每周持续推出《从零开始学大数据算法》的连载,本书为哈尔滨工业大学著名教授王宏志老师的扛鼎力作,以对话的形式深入浅出的从何为大数据说到大数据算...

36760

扫码关注云+社区

领取腾讯云代金券