Sparkの概要
Sparkとは
Sparkは、高速でユニバーサル、スケーラブルなビッグデータ分析エンジンです。2009年にカリフォルニア大学バークレー校のAMPLabで誕生しました。2010年にオープンソースになり、2013年6月にApacheインキュベーションプロジェクトになりました。2014年2月にApacheトップレベルプロジェクトになりました。プロジェクトはScalaで書かれています。
Spark組み込みモジュール
- Spark Core:タスクスケジューリング、メモリ管理、エラーリカバリ、ストレージシステムとの相互作用などのモジュールを含む、Sparkの基本機能を実装します。Spark Core
には、Resilient Distributed DataSet(RDD)のAPI定義も含まれています。 - Spark SQL:構造化データを操作するためにSparkが使用するパッケージです。Spark SQLを使用すると、SQLまたはApache HiveバージョンのSQLダイアレクト(HQL)を使用してデータをクエリできます。Spark SQLは、Hiveテーブル、Parquet、JSONなどの複数のデータソースをサポートします。
- Spark Streaming:リアルタイムデータをストリーミングするためにSparkが提供するコンポーネントです。データストリームを操作するためのAPIを提供し、SparkCoreのRDDAPIに高度に対応します。
- Spark MLlib:一般的な機械学習(ML)機能を提供するライブラリ。分類、回帰、クラスタリング、協調フィルタリングなどを含み、モデル評価やデータインポートなどの追加のサポート機能も提供します。
- Cluster Manager:Sparkは、コンピューティングを1つのコンピューティングノードから数千のコンピューティングノードに効率的に拡張するように設計されています。この要件を達成し、最大限の柔軟性を実現するために、Sparkは、Hadoop YARN、Apache Mesos、およびSparkに付属する独立スケジューラと呼ばれる単純なスケジューラを含むさまざまなクラスタマネージャ(ClusterManager)での実行をサポートします。
Sparkの機能
速い
HadoopのMapReduceと比較して、Sparkメモリベースの操作は100倍以上高速であり、ハードディスクベースの操作も10倍以上高速です。Sparkは、メモリに基づいてデータストリームを効率的に処理できる効率的なDAG実行エンジンを実装しています。計算の中間結果はメモリに存在します。
使いやすい
SparkはJava、Python、Scala APIをサポートし、80を超える高度なアルゴリズムもサポートしているため、ユーザーはさまざまなアプリケーションをすばやく構築できます。さらに、SparkはインタラクティブなPythonシェルとScalaシェルをサポートしています。これらのシェルでSparkクラスターを使用して、問題の解決策を確認すると非常に便利です。
ユニバーサル
Sparkは統合ソリューションを提供します。Sparkは、バッチ処理、インタラクティブクエリ(Spark SQL)、リアルタイムストリーム処理(Spark Streaming)、機械学習(Spark MLlib)、およびグラフコンピューティング(GraphX)に使用できます。
これらのさまざまなタイプの処理はすべて、同じアプリケーションでシームレスに使用できます。Sparkの統合ソリューションは非常に魅力的です。結局のところ、どの企業も、発生した問題に対処するために統合プラットフォームを使用して、開発と保守の人件費とプラットフォームの展開にかかる材料費を削減したいと考えています。
互換性
Sparkは他のオープンソース製品と簡単に統合できます。たとえば、SparkはHadoopのYARNとApache Mesosをリソース管理とスケジューラとして使用でき、HDFS、HBase、Cassandraなど、Hadoopでサポートされているすべてのデータを処理できます。これは、Hadoopクラスターを展開しているユーザーにとって特に重要です。これは、データを移行せず
にSparkの強力な処理機能を使用できるためです。Sparkは、サードパーティのリソース管理とスケジューラに依存することもできません。組み込みのリソース管理およびスケジューリングフレームワークとしてスタンドアロンを実装しているため、Sparkを使用するためのしきい値がさらに低くなり、誰もがSparkを簡単に展開して使用できるようになります。 。さらに、Sparkは、EC2にスタンドアロンSparkクラスターを展開するためのツールも提供します。
Spark動作モード
Sparkのインストールアドレス
1.1。公式サイトアドレス
http://spark.apache.org/2
。ドキュメント表示アドレス
https://spark.apache.org/docs/2.1.1/3
。ダウンロードアドレス
https://spark.apache.org/downloads.html
ローカルモード
概要概要
- ローカルモードはコンピューター上で実行されるモードであり、通常、このマシンでのトレーニングとテストに使用されます。次の集中的な方法でマスターをセットアップできます。
- ローカル:すべての計算は1つのスレッドで実行され、並列計算はありません。通常、マシンでテストコードを実行するか、手を練習します。このモードを使用します。
- Local [K]は、計算を実行するために複数のスレッドを使用することを指定します。たとえば、local [4]は4つのワーカースレッドを実行することです。通常、Cpuには複数のコアがあり、Cpuのコンピューティング能力を最大限に活用するには、いくつかのスレッドを指定するだけです。
- Loca [*]このモードは、CPUのコアの最大数に応じてスレッド数を設定するのに直接役立ちます。
インストールして使用する
1)sparkインストールパッケージをアップロードして解凍します
[root@bigdata111 sorfware]$ tar -zxvf
spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/
[root@bigdata111 module]$ mv spark-2.1.1-bin-hadoop2.7 spark
2)PIケースの公式リクエスト
[root@bigdata111 spark]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--executor-memory 1G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.11-2.1.1.jar \
100
基本的な文法
bin/spark-submit \
--class <main-class>
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
パラメータの説明:
- -マスターはマスターのアドレスを指定します。デフォルトはローカルです。
- -クラス:アプリケーションのスタートアップクラス(org.apache.spark.examples.SparkPi)
-deploy-mode:ドライバーをワーカーノード(クラスター)に公開するか、ローカルクライアント(クライアント)として公開するか(デフォルト:クライアント) * - –conf:任意のSpark構成属性、形式key = value。値にスペースが含まれている場合は、引用符「key = value」を追加できます。
- application-jar:依存関係を含むパッケージ化されたアプリケーションjar。このURLは、クラスター内でグローバルに表示されます。たとえば、hdfs://共有ストレージシステムの
場合、file:// pathの場合、すべてのノードのパスに同じjar application-argumentsが含まれます:main()メソッドに渡されるパラメーター - --Executor-memory 1Gは、各executorの使用可能なメモリが1Gであることを指定します
- --Total-executor-cores 2各executorが使用するカップコアの数を2に指定します
。3)
結果の表示この結果は、モンテカルロアルゴリズムを使用したPIの結果です
。4)ファイルを準備します。
[root@bigdata111 spark]$ mkdir input
入力の下に3つのファイル1.txtと2.txtを作成し、次のように入力します
hello root
hello spark
5)スパークシェルを起動し
て別のCRDウィンドウを開きます
ip nameにログインできます:4040プログラム操作の表示
6)WordCountプログラムを実行します
scala>sc.textFile("input").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
res0: Array[(String, Int)] = Array((hello,2), (root,1), (spark,1))
scala>
ip nameにログインできます:4040プログラム操作の表示
提出プロセス
1)タスク分析の送信:
重要な役割:
ドライバー(ドライバー)
Sparkのドライバーは、開発プログラムでmainメソッドを実行するプロセスです。開発者が
SparkContextを作成し、RDDを作成し、RDD変換操作とアクション操作を実行するために作成したコードの実行を担当します。Sparkシェルを使用している場合、Sparkシェルを起動すると、Sparkドライバープログラムがシステムのバックグラウンドで自動的に起動されます。これは、Sparkシェルにプリロードされたscと呼ばれるSparkContextオブジェクトです。ドライバプログラムが終了すると、Sparkアプリケーションも終了します。主な責任:
1)ユーザープログラムをタスクに変換する
2)エグゼ
キュータの実行ステータスを追跡する3)エグゼキュータノードのタスクをスケジュールする
4)UI表示アプリケーションの実行ステータス
Executor(executor)
Spark Executorは、Sparkジョブでタスクを実行する作業者プロセスであり、タスクは互いに独立しています。Sparkアプリケーションが起動すると、Executorノードも同時に起動し、Sparkアプリケーションのライフサイクル全体で常に存在します。Executorノードに障害が発生したりクラッシュしたりした場合でも、Sparkアプリケーションは実行を継続でき、エラーノードのタスクは他のExecutorノードにスケジュールされて実行を継続します。主な責任:
1)Sparkアプリケーションを構成するタスクを実行し、結果をドライバープロセス
に返す責任があります。2)独自のブロックマネージャー(ブロックマネージャー)を介してユーザープログラムにキャッシュする必要があるRDDにメモリ
ストレージを提供します。RDDはExecutorプロセスに直接キャッシュされるため、タスクはキャッシュされたデータを最大限に活用して、実行時の操作を高速化できます。
データフロー
textFile( "input"):ローカルファイルの入力フォルダーデータを読み取ります;
flatMap(.split( "")):平坦化操作、スペースセパレーターに従ってデータの行を単語に
マップします; map((、1)) :各要素を操作し、単語をタプルにマップします;
reduceByKey(+):キーに従って値を集計して追加します;
収集:表示のためにドライバー側にデータを収集します。
スタンドアロンモード
概要概要
Master + Slaveで構成されるSparkクラスターを構築すると、Sparkがクラスター内で実行されます。
インストールして使用する
1)sparkインストールディレクトリの下にあるconfフォルダに入ります
[root@bigdata111 module]$ cd spark/conf/
2)構成ファイル名を変更します
[root@bigdata111 conf]$ mv slaves.template slaves
[root@bigdata111 conf]$ mv spark-env.sh.template spark-env.sh
3)スレーブファイルを変更し、作業ノードを追加します。
[root@bigdata111 conf]$ vi slaves
bigdata111 //三台机器的名称
bigdata112
bigdata113
4)spark-env.shファイルを変更し、次の構成を追加します。
[root@bigdata111 conf]$ vim spark-env.sh
SPARK_MASTER_HOST=bigdata111
SPARK_MASTER_PORT=7077
5)スパークパッケージを配布する
[root@bigdata111 module]$ xsync spark/
ここで構成した後、配布にscp送信を使用するか、上記のように使用するスクリプトを作成できます
6)開始
[root@bigdata111 spark]$ sbin/start-all.sh
Webページビュー:bigdata111(ipアドレス):8080
注:「JAVA_HOMEが設定されていません」という例外が発生した場合は、sbinディレクトリのspark-config.shファイルに次の構成を追加できます。exportJAVA_HOME
= XXXX
7)PIケースの公式リクエスト
[root@bigdata111 spark]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://bigdata111:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.11-2.1.1.jar \
100
8)スパークシェルを開始します
/opt/module/spark/bin/spark-shell \
--master spark://bigdata111:7077 \
--executor-memory 1g \
--total-executor-cores 2
パラメータ:–master spark:// bigdata111:7077は、接続するクラスタのマスターを指定します
JobHistoryServerの構成
1)spark-default.conf.template名を変更します
[root@bigdata111 conf]$ mv spark-defaults.conf.template
spark-defaults.conf
2)spark-default.confファイルを変更し、ログを有効にします。
[root@bigdata111 conf]$ vi spark-defaults.conf
spark.eventLog.enabled true
spark.eventLog.dir hdfs://bigdata111:9000/directory
注:HDFSのディレクトリは事前に存在している必要があります。
3)spark-env.shファイルを変更し、次の構成を追加します。
[root@bigdata111 conf]$ vi spark-env.sh
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080
-Dspark.history.retainedApplications=30
-Dspark.history.fs.logDirectory=hdfs://bigdata111:9000/directory"
パラメータの説明:
spark.eventLog.dir:アプリケーションの実行プロセス中のすべての情報は、このプロパティで指定されたパスに記録されます
spark.history.ui.port = 18080WEBUIによってアクセスされるポート番号は18080
ですspark.history.fs.logDirectory = hdfs:// bigdata111:9000 / directoryをこのプロパティで構成した後、starting-history-server.shの
ときにパスを明示的に指定する必要はありません
。SparkHistoryServerページには、指定されたパスの下の情報のみが表示されますspark.history.retainedApplications = 30保存するアプリケーション履歴レコードの数を指定します。この値を超えると、古いアプリケーション情報が削除されます。これは、ページに表示されるアプリケーションの数ではなく、メモリ内のアプリケーションの数です。
4)配布構成ファイル
[root@bigdata111 conf]$ xsync spark-defaults.conf
[root@bigdata111 conf]$ xsync spark-env.sh
5)履歴サービスを開始します
[root@bigdata111 spark]$ sbin/start-history-server.sh
6)タスクを再度実行します
[root@bigdata111 spark]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://bigdata111:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.11-2.1.1.jar \
100
7)履歴サービスを表示する
bigdata111:18080
HA構成
1)Zookeeperがインストールされ、正常に起動します
。2)spark-env.shファイルを変更し、次の構成を追加します。
[root@bigdata111 conf]$ vi spark-env.sh
注释掉如下内容:
#SPARK_MASTER_HOST=bigdata111
#SPARK_MASTER_PORT=7077
次のコンテンツを追加します。
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=bigdata111,bigdata112 ,bigdata113
-Dspark.deploy.zookeeper.dir=/spark"
3)構成ファイルの配布
[root@bigdata111 conf]$ xsync spark-env.sh
4)bigdata111のすべてのノードを起動します
[root@bigdata111 spark]$ sbin/start-all.sh
5)bigdata112でマスターノードを個別に起動します
[root@bigdata112 spark]$ sbin/start-master.sh
6)SparkHAクラスターアクセス
/opt/module/spark/bin/spark-shell \
--master spark://bigdata111:7077,bigdata112 :7077 \
--executor-memory 2g \
--total-executor-cores 2
糸モード
概要概要
Sparkクライアントは、Sparkクラスターを構築することなく、Yarnに直接接続します。ヤーンクライアントとヤーンクラスターには
2つのモードがあります。主な違いは、ドライバープログラムの実行中のノードにあります。
ヤーン
クラスター:ドライバープログラムはクライアント上で実行され、対話とデバッグに適しています。アプリの出力をすぐに確認したいです。ヤーンクラスター:ドライバープログラムはRM(ResourceManager)によって開始されたAM(APPMaster)で実行され
、実稼働環境に適しています。
インストールして使用する
1)hadoop構成ファイルyarn-site.xmlを変更し、次のコンテンツを追加します。
[root@bigdata111 hadoop]$ vi yarn-site.xml
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,
则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,
则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
2)spark-env.shを変更し、次の構成を追加します。
[root@bigdata111 conf]$ vi spark-env.sh
YARN_CONF_DIR=/opt/module/hadoop-2.8.4/etc/hadoop
3)構成ファイルの配布
[root@bigdata111 conf]$ xsync
/opt/module/hadoop-2.8.4/etc/hadoop/yarn-site.xml
4)プログラムを実行する
[root@bigdata111 spark]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.11-2.1.1.jar \
100
注:タスクを送信する前に、HDFSおよびYARNクラスターを開始する必要があります。
ログビュー
1)構成ファイルspark-defaults.confを変更し
、次のコンテンツを追加します。
spark.yarn.historyServer.address=bigdata111:18080
spark.history.ui.port=18080
2)スパーク履歴サービスを再起動します
[root@bigdata111 spark]$ sbin/stop-history-server.sh
stopping org.apache.spark.deploy.history.HistoryServer
[root@bigdata111 spark]$ sbin/start-history-server.sh
starting org.apache.spark.deploy.history.HistoryServer, logging to
/opt/module/spark/logs/spark-itstar-org.apache.spark.deploy.histo
ry.HistoryServer-1-bigdata111.out
3)タスクをYarnに送信して実行します
[root@bigdata111 spark]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.11-2.1.1.jar \
100
4)Webページビューログ
bigdata111:8088ビュー
いくつかのモードの比較
モード | Sparkにインストールされたマシンの数 |
---|---|
地元 | 1 |
スタンドアロン | 3 |
糸 | 1 |
開始するプロセス | 所属者 |
---|---|
番号 | スパーク |
マスター及労働者 | スパーク |
糸とHDFS | Hadoop |