你好,游客 登录 注册 搜索
背景:
阅读新闻

最夯的大数据分析工具-Apache Spark

[日期:2015-02-11] 来源:中国大数据  作者:中国大数据 [字体: ]

大数据

  大家好!我是猫大,大家还记得我的好友咪咪(那位想要知道自己养的猫,会不会抓老鼠的那位爱猫人士)吗?在过去文章什么 ? SVM会赚钱 !中猫大介绍了SVM的概念,以及如何通过LIBSVM,帮助使用者解决分类问题。

  记忆体不足

  前几天咪咪致电猫大求助---在使用LIBSVM的时候出现了记忆体不足(out of memory)的错误讯息。猫大以往也碰过此错误讯息,塬因在于"当要用作建立模型的资料过于庞大时,电脑中的记忆体会无法一次容纳"导致于无法顺利建模。

  为了解决这个问题,猫大在前几週介绍过虚拟矩阵的概念,也就是「虚拟化地将所需要的资料以矩阵的方式切割」,当我们程式需要这些资料时,再每次从资料库取一部分的资料供程式分析使用。

  由于LIBSVM并没有实作虚拟矩阵,以致于没办法解决资料过于庞大时,会遇到记忆体不够的问题,而将LIBSVM的程式改写,成为可以使用虚拟矩阵的作法又会过于困难。于是猫大发现了一个好用的工具,那就是Spark中的MLlib。

  解决方法-MLlib

  Spark是近年来非常流行的一种分散式运算的系统,MLlib是它提供的套件之一。MLlib是机器学习的函式库,其中提供了许多演算法,如SVM、决策树、罗吉斯回归等。其使用起来非常简单,只需要短短几行指令,就可以完成建模的工作,最棒的是它可以容纳非常庞大的资料!这些优点归功于Spark中的RDD(Resilient Distributed Dataset)。

  什么是RDD

  RDD(Resilient Distributed Dataset),可将它视为一种虚拟矩阵的实作。RDD基本上存放于记忆体当中,使得整个运算速度快上许多,只有在记忆体放不下的时候,才会存放在硬碟上,不过整体上运算速度并不会影响太大。

  当资料有缺失时,以往的容错机制,是採取多复製几份副本,以免当错误发生时,找不到遗失的资料。然而RDD的容错机制是採取名为”lineage”的方式,它不需要多频宽去传输副本,以及额外的空间去储存副本,”lineage”只要透过RDD的资讯,便可以去推导出遗失的资料了,相较于前者更为有效率。

  我们都知道许多机器学习的演算法,像是SVM求解的方式都必须透过迭代法(也就是指下一次的运算,必须依赖上一次的运算结果),必须用到许多之前的计算结果。而RDD是存放在记忆体当中,可以减少I/O的存取时间,自然而然可以加快建模的速度,另外拥有良好的容错机制,使得Spark非常适合巨量资料分析。有兴趣的读者不妨可以浏览Spark官网,更进一步瞭解Spark,想要更深入了解RDD的读者们也可以参考 ResilientDistributed Datasets: A Fault-Tolerant Abstraction forIn-Memory Cluster Computing论文。

  在分析大数据的时候,LIBSVM无法顺利建立模型,而Spark的RDD解决了此问题,并且提供了MLlib,可在分散式的系统下快速建模。





收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款