分享

Spark 高级分析:第一章大数据分析序言

feilong 2017-8-25 08:27:05 发表于 推荐型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 7206
问题导读

1.数据科学是怎么来的?
2.数据科学能做哪些事情?
3.什么是HPC?







  • 数以千计的功能和数十亿的交易建立一个模型来检测信用卡欺诈。
  • 向数百万用户智能推荐数以百万计的产品。
  • 通过包括百万计的投资组合的模拟来估计财务风险。
  • 容易地操纵来自数千个人类基因组的数据,以检测与疾病的遗传关联。

        但是,就像凿子和石头块不能构成雕像一样,在获得这些工具和所有这些数据之间,以及用它做一些有用的东西之间还有一段距离。这就是“数据科学”来源。由于雕塑是把工具和原材料转变成与非雕塑家相关的东西的实践,数据科学就是把工具和原始数据转换成非数据科学家可能关心的东西的实践。

       有时候,“做有用的事”,需要一点额外的东西。SQL可能依然是该方法的核心,但解析数据的特性或进行复杂的分析,都需要一个更灵活一点的、更接地气的编程范式,并且具有更丰富的功能,如机器学习和统计。这些都是我们在这本书将要讨论的。

长期以来,开源框架如R,PyData栈,和Octave基于小数据集已经能够进行快速分析和建立可行性模型。少于10行的代码即可利用一个在半集的机器学习模型来预测另一半的标签。再有一点点的努力,就可以填补缺失数据,以一些典型实验找到最佳,或使用一个模型的结果作为另一个输入匹配。一个等价的效果该是什么样子的,是可以利用计算机集群基于大数据集实现相同的结果吗?

       正确的方法应该是将这些框架简单地扩展到多台机器上运行,以保留它们的编程模型,并重写他们的核心代码,以便在分布式环境中发挥作用。然而,分布式计算的挑战要求我们重新考虑我们在单节点系统中所依赖的许多基本假设。例如,由于数据必须在集群中的多个节点上进行分区,因此具有广泛数据依赖性的算法会受到网络传输速率比内存访问慢几个数量级的事实的影响。更多的机器会引发更多的问题,失败的概率也会增加。这些事实需要一种对底层系统的特性敏感的编程范式:它阻止了糟糕的选择,并使编写易于并行执行的代码变得容易。

       当然,单机工具如pydata和R都在开发社区最近都很突出,但他们并不是用于数据分析的唯一工具。几十年来,研究大型数据集的基因组学的科学领域一直在利用并行计算框架。在这些领域处理数据的大多数人都熟悉一个集群计算环境称为HPC(高性能计算)。pydata和R的难点在于他们无法扩大规模,以其相对较低的抽象层次和难度使用HPC。例如,以处理大文件的完整DNA测序并行读取,必须手动分割成较小的文件和提交作业的每一个文件到集群调度器。如果这些操作失败,用户必须检测故障和手动重新提交他们。如果分析要求所有作业排序整个数据集,大数据集必须从单个节点,或科学家必须诉诸下层分布式框架如MPI,没有C和分布式/网络系统的广泛知识这很难编程实现。为HPC编写的工具环境常常无法将内存数据模型与较低级别的存储模型解耦。例如,许多工具只知道如何从POSIX文件系统的单一的数据流读取数据,这使得它很难让其并行化,或者使用其他存储后端,如数据库。Hadoop生态系统提供抽象,允许用户对计算机集群像单机一样自动分割文件和分布在多台机器上存储,自动把工作分成更小的任务和自动以分布式的方式执行在一个,并自动从故障中恢复。Hadoop生态系统可以自动化处理大量数据集,而且比HPC要便宜得多。

已有(2)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条