スパークシリーズ-動作モード(1)ローカルモード構成(詳細)

スパーク----ローカルモード

1.内容を理解する
1.Sparkの公式ウェブサイトアドレス
http://spark.apache.org/2
ドキュメント表示アドレス
https://spark.apache.org/docs/2.4.0/3
ダウンロードアドレス
https://spark.apache.org/downloads.html

2.重要な役割
2.1ドライバー
Sparkのドライバーは、開発プログラムでmainメソッドを実行するプロセスです。開発者がSparkContextを作成し、RDDを作成し、RDD変換操作とアクション操作を実行するために作成したコードの実行を担当します。Sparkシェルを使用している場合、Sparkシェルを起動すると、Sparkドライバープログラムがシステムのバックグラウンドで自動的に起動されます。これは、Sparkシェルにプリロードされたscと呼ばれるSparkContextオブジェクトです。ドライバプログラムが終了すると、Sparkアプリケーションも終了します。主な責任:
1)ユーザープログラムをジョブに変換する(JOB)
2)Executorの実行ステータスを追跡する
3)Executorノードのタスクをスケジュールする
4)UI表示アプリケーションの実行ステータス
2.2 Executor
Spark Executorは、責任のあるワークプロセスです。 Sparkジョブでタスクを実行すると、タスクは互いに独立しています。Sparkアプリケーションが起動すると、Executorノードも同時に起動し、Sparkアプリケーション全体のライフサイクルとともに常に存在します。Executorノードに障害が発生したりクラッシュしたりした場合、Sparkアプリケーションは実行を継続でき、障害のあるノードのタスクは他のExecutorノードにスケジュールされて実行を継続します。主な責任:
1)Sparkアプリケーションを構成するタスクを実行し、結果をドライバープロセス
に返す責任があります。2)独自のブロックマネージャー(ブロックマネージャー)を介してユーザープログラムにキャッシュする必要があるRDDにメモリストレージを提供します。RDDはExecutorプロセスに直接キャッシュされるため、タスクはキャッシュされたデータを最大限に活用して、実行時の計算を高速化できます。

3.インストールと使用

ローカルモードは、コンピューターで実行されるモードであり、通常、このマシンでのトレーニングとテストに使用されます。

3.1。sparkインストールパッケージをアップロードして解凍し、名前をspark-localに変更します

tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz 
mv spark-2.4.0-bin-hadoop2.7 spark-local

3.2、例、PIの公式リクエスト

(1)基本语法
bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
(2)参数说明:
--master 指定Master的地址,默认为Local
--class: 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)
--deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*
--conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value” 
application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar
application-arguments: 传给main()方法的参数
--executor-memory 1G 指定每个executor可用内存为1G
--total-executor-cores 2 指定每个executor使用的cup核数为2个
例子:
[root@node1 spark-local]# bin/spark-submit \
> --master local[2] \
> --class org.apache.spark.examples.SparkPi \
> ./examples/jars/spark-examples_2.11-2.4.0.jar 100

3.3、ローカルシェルモードでwordcountを実行する

(1)ファイルの準備:
最初にspark-localの下に入力ディレクトリを作成し、次にファイルtest1を作成し、何かを入力してからコピーします
(2)spark-shellを開始します

bin/spark-shell --master local[2]

ここに写真の説明を挿入
Webアクセス192.168.223.100:4040

ここに写真の説明を挿入
シェルに次のように記述します。

scala> sc.textFile("./input")
res0: org.apache.spark.rdd.RDD[String] = ./input MapPartitionsRDD[1] at textFile at <console>:25

scala> sc.textFile("./input").flatMap(_.split(""))
res1: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[4] at flatMap at <console>:25

scala> sc.textFile("./input").flatMap(_.split("")).map((_,1))
res2: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[8] at map at <console>:25
                                                        
scala> sc.textFile("./input").flatMap(_.split("")).map((_,1)).reduceByKey(_ + _)
res4: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[13] at reduceByKey at <console>:25

scala> sc.textFile("./input").flatMap(_.split("")).map((_,1)).reduceByKey(_ + _).collect 
res5: Array[(String, Int)] = Array((d,2), (p,2), (h,6), (" ",4), ("",2), (r,4), (l,14), (w,2), (s,2), (e,6), (a,2), (k,2), (o,8))

scala> :quit
#退出

あなたは統計結果を見ることができます!
3.4。データフロー分析:
textFile( "input"):ローカルファイル入力フォルダーデータを読み取ります;
flatMap(.split( "")):平坦化操作、スペースセパレーターに従ってデータの行を単語に
マップします; map ((
、1)):各要素を操作し、単語をタプルにマップします;
reduceByKey(+):キーに従って値を集計して追加します;
収集:表示のためにドライバー側にデータを収集します。

おすすめ

転載: blog.csdn.net/qq_46009608/article/details/108888682