前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >可扩展机器学习——Spark分布式处理

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

作者头像
felixzhao
发布2018-03-19 17:00:40
8880
发布2018-03-19 17:00:40
举报
文章被收录于专栏:null的专栏null的专栏

注:这是一份学习笔记,记录的是参考文献中的可扩展机器学习的一些内容,英文的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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、Spark分布式处理
    • 1、大数据问题
      • 2、分布式处理概述
        • 3、Map-Reduce的工作原理
          • 4、Spark工作原理
            • 5、RDD
              • 6、Spark的工具
                • 7、Spark与MapReduce之间的差异
                  • 8、Spark实践
                  • 参考文献
                  相关产品与服务
                  数据保险箱
                  数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档