スパーク分析および使用

スパーク分析および使用

A、スパーク(大規模なデータ処理エンジン)機能

0は、スパークがある利点は何ですか?どのようなデータ構造スパークフレームワークはありますか?異なる状況のために、データ構造を変更する方法をスパーク?転送火花データストリームがどのようにでしょうか?そのデータを確保する方法のセキュリティ火花?

1、スピード:スパーク中間データアプリケーションは、記憶スパーク高速のHadoopのMapReduceよりも、メモリ内のデータは、10倍高速ディスクに格納されている100倍です

2、使用の容易な:スパークアプリケーションは、Java、Scalaの、パイソン、R、および他のプログラミング言語を使用することができます

図3に示すように、汎用性:スパーク強力、SparkSQL、ストリーミング、MLlib、GraphX機能モジュールを提供します

図-1スパークエコシステム

図4に示すように、どこでも実行:Hadoopの糸上で実行している、とMesos自身のスタンドアロン、処理システムは、ファイルHDFS、カサンドラ、HBaseの、S3、ハイブと他のデータソースを含みます。

注:上記のセクションは公式サイトから取得されます:http://spark.apache.org/

第二に、スパークの原則の設計と実装

図1に示すように、基本データ型のスパーク:RDD(resilientdistributedデータセット)、データフレーム、データセット

1.1、スパークのコアの基本データ型RDD:RDDは、分散オブジェクトのコレクションを分割することができますRDD異なるパーティションは、クラスタ内の異なるコンピューティングノード上で並列に実行することができ、クラスタ内の異なるノード上に格納されてもよいです。すべての親パーティションについて計算パイプライン方式(パイプライン)のクラスタノード上のNarrowDependency。

1.2、RDD 高いフォールト・トレランス、2つの永続メモリに中間結果、3件のデータの中に格納することができるJavaオブジェクト不要回避、オブジェクトのシリアライゼーションおよびデシリアライゼーションを

1.3、RDD依存関係:(NarrowDependency)狭い依存は、各サブパーティションRDDは依存する定数(即ち、関係なく、データサイズの)親パーティション(マップ、フィルタ、組合、結合); サブ、幅依存性(ShuffleDependency)RDD各パーティションは、に依存しているすべての親パーティションのRDD(GROUPBY;参加します)

2、ステージ部門

2.1、分割ステージの原則:まず、RDDの依存:ワイド依存が切断され遭遇、狭い面がステージに追加依存電流RDDを入れ、同じ狭い段階に分割可能に応じ。第二、依存チェーンが破壊され、各ステージの内部をすることができ、並列に実行します

2.2は、ジョブによれば、ステージジョブの複数から構成され終え順次ステージシーケンス実行、ジョブ

2.3、DAGScheduler ステージ分割アルゴリズム:だろうからアクションをトリガー操作することをRDDを始めた分析を逆転、最後になります最初のRDDは、彼が現在の狭い信頼を置く会ったとき、ステージ、逆解析を作成RDDがステージに追加し、遭遇頼る広いの幅に依存し、オープンにRDD作成新たな段階にRDDは、この新たなステージの最後でRDDように、すべてのRDDによる。

図の例示的なパーティショニング-2ステージ

図3に示すように、モデルは、MapReduceのスパークも属して算出するが、地図限定されるものではなく、操作を減らし、また、操作データセットを複数種類設けられていてもよい、プログラミングモデルは、HadoopのMapReduceのより柔軟です。

スパーク対图-2のMapReduce

4、生態スパークの様々な構成要素の適用。

図-3シナリオ

5、スパーク・オペレーティング・フレームワーク

まず、基本的な考え方:

4.1は、RDD(弾性分散データセットは):分散メモリである抽象化が提供され、高度に限定さ共有メモリモデル。

4.2、DAG(有向非巡回グラフ):RDDの間で反射依存性、タスク実行のスケジューリング機構

4.3、Executor(是运行在工作节点的一个进程):,负责运行Task

4.4、Application:用户编写Spark应用程序,一个Application由一个Driver(DriverApplication)和若干个Job构成

4.5、Task:运行在Executor上的工作单元,Task分为ShuffleMapTaskResultTask两种,Task是运行Application的基本单位。Task的调度和管理等是由TaskScheduler负责。

4.6、Job:一个application里面每遇到一个action的操作就会生成一个job,一个Job由多个Stage构成,一个job包含多个Rdd及作用于相应RDD上的各种操作,。

4.7、Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者被称为TaskSet,代表了一组关联的、相互之间没有Shuffle依赖关系(宽依赖)任务组成的任务集。

二、Spark 运行框架的组成

1、Spark 运行框架的组成:集群资源管理器(Cluster Manager) + 任务控制节点(Driver) + 工作节点(Worker Node) + 执行进行(Executor)

2、集群资源管理器(Cluster Manager)主要负责资源的分配与管理。集群管理器分配的资源属于一级分配,它将各个Worker Node上的内存、CPU等资源分配给应用程序,但是并不负责对Execoutor的资源分配。

3、Driver Program:运行Application的main()函数,用于将任务程序转换为RDD和DAG,并与Cluster Manager进行通信与调度

4、Worker Node:控制计算节点,创建并启动Executor,将资源和任务进一步分配给Executor,同步资源信息给Cluster Manager

5、Executor:某个Appliation运行在Worker node上的一个进程。主要负责任务的执行以及与Worker、Driver App的信息同步

6、Executor的优点:1、采用多线程来执行具体的任务,减少任务的启动开销;2、BlockManager存储模块将内存和磁盘共同作为存储设备,有效减少IO开销

图-4 Spark运行框架

三、Spark 运行框架的运行

1、概述:当执行一个Application时,Driver会向集群管理器申请资源,启动Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行Task,运行结束后,执行结果会返回给Driver,或者写到HDFS(分布式文件系统)或者其他数据库

2、具体的执行步骤:

2.1、Driver会向集群管理器申请资源任务发分配和监控:Driver创建一个SparkContext

2.2、资源管理器为Executor分配资源,并启动Executor进程:

2.3、SparkContext根据RDD的依赖关系构建DAG图(有向无环图)DAG图提交给DAGScheduler解析成Stage(TaskSet)

2.4、TaskSet提交给底层调度器Taskscheduler处理

2.5、ExecutorSparkContext申请Task发给Executor运行,并提供应用程序代码

2.6、TaskExecutor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler

图-5 Spark运行过程

 

三、Spark编译和源码解析

1、Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

 

四、Spark编程模型

Spark应用程序从编写到提交、执行、输出的整个过程:

1、用户使用SparkContext提供的API(常用的有textFile、sequenceFile、runJob、stop等)编写Driver application程序。此外SQLContext、HiveContext及StreamingContext对SparkContext进行封装,并提供了SQL、Hive及流式计算相关的 API

2、使用SparkContext提交的用户应用程序,首先会使用BlockManagerBroadcaseManager将任务的Hadoop配置进行广播。然后由DAGScheduler将任务转换为RDD并组织成DAG,DAG还将被划分为不同的Stage,一个Stage会由多个Task组成,多个Task将会被存放在TaskSet集合里,TaskSet即为Stage。最后由TaskScheduler将Task借助Netty通信框架将任务提交给集群管理器(Cluster Manager)

3、集群管理器(Cluster Manager)给任务分配资源,即将具体任务分配到Worker上,Worker创建Executor来处理任务的运行。Standalone、YARN、Mesos、Kubernetes、EC2等都可以作为Spark的集群管理器

图-5 Spark编程模型

 

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/yinminbo/p/11830591.html