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/

  • 相关阅读:
    CS229 6.4 Neurons Networks Autoencoders and Sparsity
    CS229 6.3 Neurons Networks Gradient Checking
    【Leetcode】【Easy】Min Stack
    【Leetcode】【Easy】Merge Sorted Array
    【Leetcode】【Easy】ZigZag Conversion
    【Leetcode】【Easy】Valid Palindrome
    【Leetcode】【Easy】Reverse Integer
    【Leetcode】【Easy】Palindrome Number
    【Leetcode】【Easy】Length of Last Word
    【Leetcode】【Easy】Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/davidwang456/p/4747953.html
Copyright © 2011-2022 走看看