スパーク
4つのプロパティの1スパーク
- 速いです
二つの理由が速いのMapReduceよりもスパーク
-
- メモリベース
1. mapreduce任务后期在计算的是时候,每一个job的输出结果都会落地到磁盘,后续有其他的job要依赖于前面job的输出结果,这个时候就需要进行大量的磁盘io操作,性能较低 2. spark任务后期在进行计算的时候,job的结果是可以保存在内存中的,后面有其他的job需要以言语前面job的输出结果,这个时候可以直接从内存中读取,避免了磁盘io操作,性能比较高 spark程序和mapreduce程序都会产生shuffle阶段,在shuffle阶段中他们产生的数据都会保留在磁盘中
-
- プロセスとスレッド
1 mapreduce任务以进程的方式运行在yarn集群中,比如说有100个mapTask,一个task就需要一个进程,这些task要运行就需要开启100个进程 2 spark任务以线程的方式运行在进程中,比如说有100个task,则一个task就对应一个线程
- 使いやすさ
- あなたはすぐに書き込みスパークプログラムになど異なる言語のJava、Scalaの、パイソン、Rを、使用することができます
- 通用性
- 互換性
- スパークプログラムは、動作モードの様々なています
- スタンドアロン
- スパークはマスタースパーククラスタによる資源配分の全体のタスクが担当する、スタンドアローンモードが付属しています
- 糸
- 糸に提出されたプログラムを実行することができ、スパークは、ミッション全体にリソース割り当てがResourceManagerに糸の責任であります
- ヶ月
- Apacheのオープンソースリソーススケジューリングプラットフォームの同様の糸
- スタンドアロン
- スパークプログラムは、動作モードの様々なています
-
2.スパーククラスタアーキテクチャ
- 運転者
- 彼は(すべてのスパーク入力プログラムを実行することである)SparkContextオブジェクトを構築するために、クライアント書かれたのmainメソッドを実行します
- 応用
- これは、コードリソース情報とクライアントを実行中のタスクを含め、アプリケーションの火花であります
- ClusterManagerの
- 外部サービスプログラムに、コンピューティングリソースを提供
- スタンドアロン
- スパークは、クラスタモデル、ミッション全体にリソース割り当てがマスタースパーククラスタの責任です来ます
- 糸
- ミッション全体の糸の実行に提出スパークプログラム、リソース割り当てがResourceManagerに糸の責任であります
- ヶ月
- Apacheのオープンソースリソーススケジューリングプラットフォームの同様の糸
- スタンドアロン
- 外部サービスプログラムに、コンピューティングリソースを提供
- 主人
- タスクを担当するスパーク分布マスターノードクラスタ、リソース
- ワーカー
- スパーククラスタからノードは、計算ノードの作業を担当して
- エグゼキュータ
- これは、ワーカーノードのプロセスでスタートです
- 仕事
- 方法タスクスレッドでエグゼキュータ・プロセスワーカーノードを実行する火花タスク
3. RDDとは何か
- RDD(弾性分散データセット)は、柔軟な分散データ・セットと呼ばれる最も基本的な抽象化単位スパークあります。これは、データのセット不変、パーティション、並列計算要素を表します。
- 弾力性の両方のRDDデータで表現さ弾性は、メモリに保存することができ、ディスク上に格納することができます
- 分散形分散、RDDは、分散コンピューティングに格納されたデータのポストの様々な促進を示し
- データセットのデータセット、大量のデータを記憶することができます
4. RDD 5つの属性
- パーティションのリスト
- パーティションのリスト、データ収集の基本単位
- ここではRDDの表現は、複数のパーティションを持つことで、RDDの、スパークタスクに格納されたデータの一部となる各パーティションは、タスク上のパーティションに対応する、タスク・スレッドを実行することです
- パーティションのリスト、データ収集の基本単位
- 各スプリットを計算する関数
- パーティションごとに計算する関数
- スパークはRDDパーティション単位の計算に基づいています
- パーティションごとに計算する関数
他のRDDSの依存関係のリスト
RDDは、他のRDDの数に依存するであろう
这里是说RDD和RDD之间是有依赖关系的,spark任务的容错机制就是根据这个特性(血统)而来
キーと値のRDDSのため必要に応じて、パーティション分割(例えばRDDは、ハッシュ・パーティションであると言うこと)
A Patitioner、すなわちRDDパーティション機能(オプション)
spark中实现了两种类型的分区函数 1 基于哈希的HashPartitioner,(key.hashcode % 分区数 = 分区号) 2 基于范围的RangePartitioner 只有对于key-value的RDD,并且产生shuffle,才会有Partitioner 非key-value的RDD的Partitioner的值是None
必要に応じて、好適な場所のリストは、(HDFSファイルの例えばブロック位置)における各分割を計算します
優先順位のリスト各パーティションを保存する(オプション)
spark任务在调度的时候会优先考虑存有数据的节点开启计算任务,以减少数据的网络传输,提成计算效率
5. RDDカテゴリ演算子
- 変換(変換)
- RDD既存の変換器はさらに、それが遅延読み込みに従って新しいRDDを生成し、即座に実行されません
- として
- マップ、flatMap、reduceByKey
- アクション(行動)
- 実行タスクがトリガされます
- 計算結果データRDDドライバ側にバックや外部記憶媒体に保存し(ディスク、メモリ、HDFS)
- として
- 収集、saveAsTextFile
- 実行タスクがトリガされます
6. RDD共通算術演算子
6.1変換演算子
変更 | 意味 |
---|---|
マップ(FUNC) | 戻り値新しいRDD、変換関数func後の各入力要素の組成物によるRDD |
フィルタ(FUNC) | 戻り値新しいRDD、関数func関数を算出して復帰した後、真のinput要素の値は、で構成されてい |
flatMap(FUNC) | (それはむしろ、単一の要素よりも、配列を返すべき機能)を同様のマップが、各入力要素は、ゼロ以上の出力要素にマッピングすることができます |
mapPartitions(FUNC) | 同様のマップが、RDDの各スライス上で独立して実行、FUNC関数型はイテレータ[T] =>イテレータ[U]でなければならない場合、このようRDD型Tを実行します |
mapPartitionsWithIndex(FUNC) | 類似mapPartitionsが、RDD Tは、関数func型イテレータ[T] =>イテレータ[U]でなければならないときにFUNC整数パラメータインデックス値は、従って、操作の種類をスライスを示すと |
労働組合(otherDataset) | シークとソースRDDとRDDのパラメータを設定して、新しいRDDを返します。 |
交差点(otherDataset) | ソースパラメータRDDとRDDの交差点、およびリターン新しいRDD |
異なる([numTasks])) | これは、デ再後に新しいソースRDD RDDを返します。 |
groupByKey([numTasks]) | (K、V)RDDコールタイプで、RDDの(K、V)を返します |
reduceByKey(FUNC、[numTasks]) | (K、V)RDDコールタイプで、RDDの(V kは、)、特定の機能を低下させる返し、同じキー値が同様groupByKeyと共に重合される、タスクの数は、によって調製することができる減らしますセットには2つのパラメータ |
sortByKey([昇順]、[numTasks]) | (K、V)RDDを呼び出し、kは鍵(K、V)RDDに従ってソート順序インタフェース戻るを実装しなければなりませんで |
sortBy(func,[ascending], [numTasks]) | 与sortByKey类似,但是更灵活,可以自定义排序func |
join(otherDataset, [numTasks]) | 在类型为(k,v)和(k,w)的RDD上调用,返回一个相同 key对应的所有元素对在一起的(k,(v,w))的RDD |
cogroup(otherDataset, [numTasks]) | 在类型为(K,V)和(K,W)的RDD上调用,返回一个(K,(Iterable
|
coalesce(numPartitions) | 减少RDD的分区数到指定值 |
repartition(numPartitions) | 重新给RDD分区 |
repartitionAndSortWithinPartitions(partitioner) | 重新给RDD分区,并且每个分区内以记录的key排序 |
6.2 action算子
动作 | 含义 |
---|---|
reduce(func) | reduce将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素(第三个元素)组成两个元素,再被传给输入函数,直到最后只有一个值为止。 |
collect() | 在驱动程序中,以数组的形式返回数据集的所有元素 |
count() | 返回RDD的元素个数 |
first() | 返回RDD的第一个元素(类似于take(1)) |
take(n) | 返回一个由数据集的前n个元素组成的数组 |
takeOrdered(n, [ordering]) | 返回自然顺序或者自定义顺序的前 n 个元素 |
saveAsTextFile(path) | 将数据集中的元素以textFile的形式保存到HDFS文件系统或者其他支持的文件系统,对于每个元素,Spark将会调用toString方法,将它装换为文件中的文本 |
saveAsSequenceFile(path) | 指定されたディレクトリへのHadoop sequenceFile形式で格納されたデータセット要素は、HadoopのHDFSまたは他のサポートされているファイルシステムとすることができます |
saveAsObjectFile(パス) | Javaの直列モードに設定されたデータの要素は、特別なディレクトリに保存されています |
countByKey() | (K、V)RDDの種類、マップの(K、int)を返し、各キーに対応する要素の数を表すため |
foreachの(FUNC) | データセット、動作関数funcの各要素 |
foreachPartition(FUNC) | データセットの各パーティションに、動作関数func |