基本1つの火花を学ぶ - スパーク概要と入門

スパーク要約
:スパーク概要
1.スパーク分散コンピューティングフレームメモリ
Apacheのスパークがディスクに格納されているHadoopのMapReduceの中間結果に対して、クラスタコンピューティングシステムの汎用性、高速であり、
スパークメモリは、中間結果を保持するために使用される、CANデータがまだメモリ操作でディスクに書き込まれていなかったとき。
1.スパークは、Apacheオープンソースのフレームワークです
。2.スパークの親会社がDatabricksと呼ばれる
スパークは、メモリ内の中間結果を保存することができませんので、MapReduceのコンピューティングシステムの問題を解決するために、過去の3.
4.スパークコアは、RDDS、フレームだけでなく、計算RDDSあるデータ構造であります

2:スパークが特長
1.高速
?速いのHadoopよりも、なぜ火花
計算1. MapReduceのは、第1のメモリに保存されているHDFSに保存され、データの火花を、十分なメモリ、ディスクに保存する前に、(メモリから読み出し)より速い速度/ HDFSよりもディスクからデータを取る
作業は、スレッドレベルで火花、2 MapReduceのタスクレベルのプロセスである。
2.使用
スパークは、Java、Scalaの、パイソン、R、サポート SQL および他の言語をAPI。
3.ユニバーサル
スパークは、SQLの実行を含む、完全なスタックを提供し、データセットのAPIコマンドタイプ、マシンはライブラリMLlibを学び、
図GraphXコンピューティングフレームワーク、フロー計算SparkStreamingのような
4互換性のある
Hadoopの糸は、Apache Mesos実行スパーク、Kubernetsこのようなクラスタとしてスタンドアロンスパーク
点火データベースの多様などのHBase、HDFS、ハイブ、カサンドラにアクセスすることができる
:概要
1.サポートするJava、Scalaの、PythonとR、API
8Kノード2よりスケーラブル
メモリにすることができる3.キャッシュ・データ・セット、インタラクティブなデータ分析を達成するために、
図4は、コマンドラインウィンドウを提供し、反応時間は、探索データ解析を減少させます

3:スパークアセンブリ
1スパークコアと弾性分散データ・セット(RDDS)
コア機能スパークパッケージスパークのコアであるパッケージ内RDDS、RDDSスパークコア存在する。
スパークコアであります全体のスパーク基礎は、分散タスクスケジューリングおよび基本的なI / O機能が提供される
プログラム抽象スパーク弾性分散データ・セット(RDDS)に基づくが、それは並列動作で、フォールト・トレラント・データセット
2 SPRK SQLの
火花をデータセットとデータフレームのデータの概念を引き出すために、火花コアベースでのSQLと呼ばれる抽象
スパークSQLは、データセットの上にSQLを実行する機能を提供し、データフレームの
スパークSQLはスカラ座やJava、Pythonが、DSLを提供他の言語とのDataSetのデータフレームを操作し
、それはまた、JDBC / ODBC SQLサーバオペレーティング言語サポート
3.スパークストリーミング
実行するための迅速な展開能力火花コア流解析のテイク利点ストリーミングスパーク
(それは少量のデータを傍受し、RDD変換上で実行することができますデータ)タイムスライシングに従って
4 MLlib
。MLlibスパークフレームが機械学習分配される波動より分散メモリアーキテクチャスパーク OP-ディスクのApache Mahoutの10倍の速さ、だけでなく、非常に優れたスケーラビリティ
MLlibは、多くの一般的な機械学習と統計アルゴリズム、学習の大規模な機械簡素化し使用することができ
、すぐに生成する要約統計量を、相関、層化抽出、仮説検証、データを
サポートベクターマシン、回帰、線形回帰、ロジスティック回帰、決定木、シンプルな貝をイエーツ
協調フィルタリング、ALS
K-手段
SVD特異値分解、PCA主成分分析
TF-IDF、Word2Vec、StandardScaler
SGD確率的勾配降下法、L-BFGS
Graphx 5
GraphX図は、セットを提供するフレームワークを表現することができるコンピューティング分散図は、この抽象化にも最適な動作を提供GraphX、APIを計算しました

4:スパーククラスタ構造
1.スパーククラスタ構造
1.マスターは、
クラスタ管理、リソース割り当てを担当して
2 Workder
タスク実行ノードの
プロセス、タスクの実行に使用されるプロセス:エグゼキュータ
タスク:タスクを実行する
3.ドライバ
1.実行mainメソッド
2 SparkContextオブジェクトを作成します。スケジューリングタスクとタスク分割のための責任SparkContext入場スパークプログラム、
スパークプログラムを実行するには、以下の手順を経た
1.ドライブ、SparkContext作成
クラスタドライブ、ドライブマネージャアプリケーションクラスタリソースに提出2.クライアントプログラム
3を。リソース要求が完了すると、エグゼキュータワーカーで開始
分散実行エグゼキュータ、タスクへ4.ドライバプログラムを
スパークには、次のいくつかのクラスタ管理ツールを使用することができます:
1.スタンドアロンスパーク
2. Hadoopの糸
3. ApacheのMesos
4. Kubernets
一般的に使用されます:2,3,4
2.ドライバーと労働者が活性化されたとき?
1.スタンドアロンモードのクラスタを、
クラスタ開始ワーカーが開始されます
スタートにドライバが二つのモードに分かれています。
次のクライアント・モードでは、ドライバは、活性化され、クライアント側を実行したとき、クライアントの開始
2のクラスタモード、ワーカーでドライバを実行すると、ジョブ投入時刻起動、タスク、ドライバーの終わりに消える
下糸モードスパーク2.
、全く同等の労働者が存在しない1キュータコンテナのノードマネージャで起動
2、ドライバは、タスクが送信されたときに開始します、ミッションの最後に、ドライバが消える
火花をクライアントとクラスタ内の糸の違い?
クライアント側、クライアント端末を閉じることができないクライアントモードでドライバー。運転者がタスクスパークの障害の原因となる、閉鎖、切断及びタスクスケジューリングを行うことができない消え
AppMasterに位置したときに位置ドライバクラスタモード、クライアント側は閉鎖することができます

ファイブ:(会社CDHを使用して構築された個々の構造、)クラスタセットアップ
の準備:リソースの良好な分布は
1ダウンロードし、解凍手順
ダウンロードスパークインストールパッケージを、(回避のバージョンの非互換性に)選択するHadoopの時間の対応バージョンをダウンロード
ダウンロードのhttps://アーカイブ.apache.org / DIST /火花/火花防止 2.2.0 /火花-2.2.0-binの-hadoop2.7.tgz
アップロード/解凍特定のディレクトリへ
のtar xzvf火花2.2.0-bin- hadoop2.7.tgz - C /エクスポート/サーバ

ステップ2変更プロファイルspark-env.sh
CD /エクスポート/サーバ/スパーク/ confに
Vimのspark-env.sh
(以下の追加)
#ホームJavaの指定
JAVA_HOME = /エクスポートエクスポート/サーバ/ jdk1.8.0
#は、Sparkマスタアドレスを指定します。
SPARK_MASTER_HOST = amdha01エクスポート
エクスポートSPARK_MASTER_PORT = 7077

クラスタは、ときsbinに/ start-all.shスタートを使用してから、ノードから日付を指定するには、ステップ3変更プロファイル奴隷、
すべての労働者全体のクラスタを起動するための鍵となることができ
、構成ディレクトリを入力して、新しいコンフィギュレーションファイルをコピーするために、この基礎のために変更される
CD /エクスポート/サーバ/スパーク/ confに
CPのslaves.template奴隷
VIスレーブ
、すべてのノードからの設定アドレスを
amdha02
node03の
...

ステップ4 HistoryServer
HistoryServerがですることでのデフォルトは、スパークプログラムが完成し稼働を持っている、あなたは、ウェブUIのログを見ることができない
私たちは、プログラムの最後に実行することができるようにログファイルを読み込むことで、サービスを提供することができ、まだ見ることができますプロセスの実行
変更1.コピー火花defaults.confに、
2.以下をコピーspark-defaults.conf最後に、この構成により、あなたはHDFSにスパークログ入力を指定することができます
trueにspark.eventLog.enabled
spark.eventLog.dir HDFS :// amdha01:8020 spark_log /
spark.eventLog.compress trueに
3に以下の内容をコピーしspark-env.sh、最後に、HistoryServer設定パラメータを開始し
、このようなHistoryServerは、Spark HDFSは、起動時に書き込まれたログ読んで
、指定動作パラメータスパーク歴史
輸出を= SPARK_HISTORY_OPTS " - Dspark.history.ui.port -Dspark.history.fs.logDirectory 3 = 4000 = = -Dspark.history.retainedApplications HDFS:// amdha01:8020 / spark_log"
4.スパークのためにHDFSログディレクトリを作成します。
HDFS DFS -mkdir -p / spark_log

ステップ5配布して実行し
、クラスタ内の他のマシンをスパークするために、インストールパッケージを
起動スパークマスターとスレーブ、およびHistoryServer
CD /エクスポート/サーバ/スパーク
sbinに/ start-all.sh
sbinに/ start-history-server.sh

スパークビルド高可用性クラスタ
、上述したに基づいて
spark-env.shステップ1、スパーク起動パラメータを追加し、SPARK_MASTER_HOSTアドレス削除
#ホームは、Java、指定
のエクスポートをJAVA_HOME = /エクスポート/サーバ/ jdk1.8.0_141
#のマスタースパークアドレス指定された
#エクスポートを= node01 SPARK_MASTER_HOST
輸出SPARK_MASTER_PORT = 7077
#は、動作パラメータスパーク履歴指定
「=輸出SPARK_HISTORY_OPTSを- Dspark.history.ui.port = 4000 -Dspark.history.retainedApplications = 3 -Dspark.history.fs.logDirectory = HDFS:// node01: 8020 / spark_log "
パラメータはスパーク#ランタイムを指定
=輸出SPARK_DAEMON_JAVA_OPTSを" - Dspark.deploy.recoveryMode = ZooKeeperの -Dspark.deploy.zookeeper.url = node01:2181、node02で:2181、node03の:2181 ... -Dspark.deploy.zookeeper。 DIR = /火花"

ステップ2分布プロフィール全体のクラスタ
のクラスタを開始するステップ3
node01クラスタ全体で起動
とnode02上の単一のマスター再始動
マスターのステップ4 node01ビューとマスターnode02でのWebUI

各サービスのポートをスパーク
マスターのWebUI - > node01:8080
ワーカーのWebUI - > node01:8081
歴史サーバー- > node01:4000

VI:アプリケーション実行例の
ステップ1は、Sparkのインストールディレクトリ(または構成環境変数を省略することができる)入り
CD /エクスポート/サーバ/スパーク/
2ランスパークタスクステップ
ビン/火花提出
級org.apache.spark.examplesを。 SparkPi
スパーク-master:// node01:7077、node02で:(オープン書き込むためのマスタによる)7077 \
-executor-1Gメモリ
-総-キュータ-コア2
/エクスポート/サーバ/スパーク/例/ JARファイル/火花examples_2。 11-2.2.3.jar
100
ステップ3実行結果
Piはおおよそ3.141550671141551あります

7:スパークエントリケース
の書き込みスパークプログラムの2つの一般的な方法です
火花シェル
火花提出
方法の書かれたWORDCOUNT 1.スパークシェル
のScalaのサポートを増加させるためのMavenプロジェクト作成するには、まず
第2段階書き込みMavenの設定ファイルのpom.xml(構成に依存し、コピー)

		<properties>
			<scala.version>2.11.8</scala.version>
			<spark.version>2.2.0</spark.version>
			<slf4j.version>1.7.16</slf4j.version>
			<log4j.version>1.2.17</log4j.version>
		</properties>
		<dependencies>
			<dependency>
				<groupId>org.scala-lang</groupId>
				<artifactId>scala-library</artifactId>
				<version>${scala.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.spark</groupId>
				<artifactId>spark-core_2.11</artifactId>
				<version>${spark.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.hadoop</groupId>
				<artifactId>hadoop-client</artifactId>
				<version>2.6.0</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>jcl-over-slf4j</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
				<version>${slf4j.version}</version>
			</dependency>
			<dependency>
				<groupId>log4j</groupId>
				<artifactId>log4j</artifactId>
				<version>${log4j.version}</version>
			</dependency>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>4.10</version>
				<scope>provided</scope>
			</dependency>
		</dependencies>

		<build>
			<sourceDirectory>src/main/scala</sourceDirectory>
			<testSourceDirectory>src/test/scala</testSourceDirectory>
			<plugins>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.0</version>
					<configuration>
						<source>1.8</source>
						<target>1.8</target>
						<encoding>UTF-8</encoding>
					</configuration>
				</plugin>

				<plugin>
					<groupId>net.alchim31.maven</groupId>
					<artifactId>scala-maven-plugin</artifactId>
					<version>3.2.0</version>
					<executions>
						<execution>
							<goals>
								<goal>compile</goal>
								<goal>testCompile</goal>
							</goals>
							<configuration>
								<args>
									<arg>-dependencyfile</arg>
									<arg>${project.build.directory}/.scala_dependencies</arg>
								</args>
							</configuration>
						</execution>
					</executions>
				</plugin>

				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-shade-plugin</artifactId>
					<version>3.1.1</version>
					<executions>
						<execution>
							<phase>package</phase>
							<goals>
								<goal>shade</goal>
							</goals>
							<configuration>
								<filters>
									<filter>
										<artifact>*:*</artifact>
										<excludes>
											<exclude>META-INF/*.SF</exclude>
											<exclude>META-INF/*.DSA</exclude>
											<exclude>META-INF/*.RSA</exclude>
										</excludes>
									</filter>
								</filters>
								<transformers>
									<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
										<mainClass></mainClass>
									</transformer>
								</transformers>
							</configuration>
						</execution>
					</executions>
				</plugin>
			</plugins>
		</build>
		
	因为在 pom.xml 中指定了 Scala 的代码目录, 所以创建目录 src/main/scala 和目录 src/test/scala

第三段階:ライトコード

			object WordCounts {
			  def main(args: Array[String]): Unit = {
				// 1. 创建 Spark Context
				val conf = new SparkConf().setMaster("local[2]")
				val sc: SparkContext = new SparkContext(conf)
				// 2. 读取文件并计算词频
				val source: RDD[String] = sc.textFile("hdfs://node01:8020/dataset/wordcount.txt", 2)
				val words: RDD[String] = source.flatMap { line => line.split(" ") }
				val wordsTuple: RDD[(String, Int)] = words.map { word => (word, 1) }
				val wordsCount: RDD[(String, Int)] = wordsTuple.reduceByKey { (x, y) => x + y }
				// 3. 查看执行结果
				println(wordsCount.collect)
			  }
			}

ステップ4:実行
スパークスタンドアローンのアプリケーションは基本的に2つの方法があり、一つはIDEAで直接デバッグすることで、
他のクラスタに提出スパーク、およびクラスタスパークを実行し、異なるクラスタの様々なサポートしているが異なっていラン

パラメータ火花送信クラスタ動作モードについて説明
ビン/火花送信

-master
-deploy-MODE
-conf =
...#他のオプション

[引数ファイルのアプリケーション]
1)--class:メインクラスを実行すると、主と[方法を指定しましたオブジェクト]
2)--masterスタンドアロン位置指定されたリソース・マネージャ:スパーク:// amdha01:7077:7077、amdha02糸:糸
3)--deployモード:指定モード<クライアント/クラスタ>
4) - -executorコア:指定各エグゼキュータのCPUコアの数<のみスパーク用の糸ON>
5)--executorメモリ:エグゼキュータのそれぞれのためのメモリサイズ
6)--num-エグゼキュータ:指定キュータの数<のみスパーク用糸ON>
7)--driverメモリ:メモリサイズ指定ドライバ
8)--queue:指定されたキューの
指定核エグゼキュータCPU 9の総数) -コア-executor --total < 火花またはスタンドアロンmesosモード上>

シェルスパーク
1、モード開始:シェルスパークをマスター<:// amdha01:ローカル[NUM] /糸/スパーク7077> ---
シェルスパークsparkcontext自動的に作成されている2、SCはに割り当てられた
ファイルHDFSを読み取る
1 、読み取りモード:
1、sc.textFile( "HDFS:// amdha01:8020 / ...")
2、sc.textFile( "HDFS:///ユーザー/")[HADOOPプロファイルは設定ファイルで設定する必要がありますパス]
。3、sc.textFile( "/ユーザ/ HDFS / ...")[HADOOPプロファイルパス設定ファイルで設定されなければなりません]

リリース元の4件の記事 ウォンの賞賛0 ビュー705

おすすめ

転載: blog.csdn.net/fan_bigdata/article/details/103108978