zoukankan      html  css  js  c++  java
  • spark初识

    spark特性

      提供了java scala python 和R的api支持。

      在生产环境上扩展超过8000个节点。

      可以在内存中缓存交互中间数据的能力:提炼一个工作集合,缓存它,反复查询。

      低级别的水平伸缩的数据检索可以通过scala或者python 命令行进行交互。

      高级别的流处理库spark streaming可以处理流数据。

      通过spark sql支持结构化的关系查询处理(sql)。

      机器学习和图形处理的高级别库。

    spark工程构成

    1. spark核心及RRDs(Resilient Distributed Datasets)

      spark核心是整个工程的基础,它提供了分布式任务的分发、调度和基本的IO功能。最基本的抽象就是RRDs,一个跨机器的分区数据的逻辑集合。RDDs可以由引用的外部存储系统创建,或者在已存在的RDDs上应用粗粒度变换(如map,filter,reduce,join等)。

      RDDs抽象接口由特定语言java、python、scala 的api接口暴露,如在本地数据集合一样。这简化了编程的复杂性,因为应用操作RDDs的方式和操作本地数据集合类似。

    2. spark sql

      spark sql组件位于spark核心之上,它引入了名称为SchemaRDD的新的数据抽象。SchemaRDD支持结构化和半结构化数据。spark sql 提供了基于特定语言scala,java,python操作schemaRDDs。它也提供了通过命令行和odbc/jdbc服务器来操作sql语句的支持。从Spark 1.3开始,SchemaRDD命名为DataFrame。

    3. spark streaming

      spark streaming利用spark核心的快速调度能力来执行流分析。它小批量采集数据并且对这些小批量数据执行RDD转换。这种设计使在一台引擎中,批量分析的应用程序代码也可以用在流分析的批量分析中。

    4. MLLIb机器学习库

      MLLib是一个位于spark之上的分布式系统学习框架,因其基于分布式内存的spark架构,它的速度达到相同版本的基于磁盘的apache Mahout的9倍,扩展性甚至优于Vowpal Wabbit。它实现了很多通用机器学习和分析算法来简化大规模机器学习管道,包括:

    summary statistics, correlations, stratified sampling, hypothesis testing, random data generation;
    classification and regression: SVMs, logistic regression, linear regression, decision trees, naive Bayes;
    collaborative filtering: alternating least squares (ALS);
    clustering: k-means, Latent Dirichlet Allocation (LDA);
    dimensionality reduction: singular value decomposition (SVD), principal component analysis (PCA);
    feature extraction and transformation;
    optimization primitives: stochastic gradient descent, limited-memory BFGS (L-BFGS);

    5. GraphX

      GraphX是一个位于spark之上的分布式图形处理框架。

    spark源码结构

    整体上Spark分为以下几个主要的子模块:

    • deploydeply模块包括MasterWorkClient,参见architecture图的最上 部分。deploy主要负责启动和调度用户实现的Spark application并且分配资源给用户 application,类似于Hadoop YARN框架。
    • schedulerscheduler主要负责调度用户application内的tasks,根据部署方式的不 同Spark实现了多种不同的scheduler,包括LocalSchedulerClusterScheduler等 。
    • rddrdd类似于一个分布式的数据集,用户可以根据rdd所提供的api进行数据集的 操作,rdd模块是用户交互的主要模块。
    • storagestorage模块主要负责数据集,也就是rdd的存取。根据设定的不同,数 据可以保存在内存、磁盘或是两者。Spark与Hadoop MapReduce最大的不同在于MapReduce 将数据保存在HDFS上,而Spark则由自己的存储系统。

    参考文献

    【1】https://en.wikipedia.org/wiki/Apache_Spark

    【2】http://jerryshao.me/architecture/2013/03/29/spark-overview/

  • 相关阅读:
    Node.js Path 模块
    Node.js OS 模块
    Node.js 工具模块
    【翻译】热门支持小提示:2013年12月
    【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之二
    俺的新书《Sencha Touch实战》终于出版了
    【翻译】热门支持技巧
    【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之一
    不错的东西: AutoMapper
    一个很不错的支持Ext JS 4的上传按钮
  • 原文地址:https://www.cnblogs.com/davidwang456/p/4747953.html
Copyright © 2011-2022 走看看