Spark基礎(安裝及應用提交)

1、準備安裝包

2、Spark Standalone 即獨立模式
  2.1、解壓安裝包到你安裝的目錄。
  2.2、拷貝 conf 目錄下的 slaves 文件,將 slave 節點的 hostname 寫在文件中,每行一個。
  2.3、拷貝 conf 目錄下的 spark-env.sh 文件,將 SPARK_MASTER_HOST 和 SPARK_MASTER_PORT 指定。
  2.4、分發你的 spark 安裝目錄到其他節點。
  2.5、在 master 節點上執行 /opt/module/spark-2.1.1-bin-hadoop2.7/sbin/start-all.sh 來啓動整個 spark 集羣。
  2.6、在瀏覽器中訪問 http://hadoop102:8080 來訪問你的 spark 集羣
注意:如果在啓動的時候出現 JAVA_HOME not set 那麼可以在 sbin 目錄下的 spark-config.sh 文件中輸入 export JAVA_HOME=/opt/module/jdk1.8.0_144 然後分發到其他節點,這樣問題即可解決。

3、Spark Standalone 模式 Spark History Server 的配置
  3.1、拷貝 conf 目錄下的 spark-defaults.conf 修改爲 spark-env.sh,在該文件中添加以下內容:
spark-defaults.conf

spark.eventLog.enabled   true
spark.eventLog.dir       hdfs://hadoop102:9000/directory
spark.eventLog.compress  true

3.2、拷貝 conf 目錄下的 spark-env.sh.template 修改爲 spark-env.sh,在該文件中添加以下內容:
spark-env.sh

	export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000
	-Dspark.history.retainedApplications=3
	-Dspark.history.fs.logDirectory=hdfs://hadoop102:9000/directory"

3.3、將修改好的文件同步到集羣的其他節點
  3.4、啓動 /opt/module/spark-2.1.1-bin-hadoop2.7/sbin/start-history-server.sh 來啓動 history log 的 web 服務。
  查看日誌有兩種方式:
   1、對於正在運行的應用,直接訪問 http://hadoop102:4040 查看
   2、對於已經結束的應用,直接訪問 http://hadoop102:4000 查看

4、Spark Standalone 的 HA 模式
  4.1、修改 spark-env.sh 文件
  1)刪除 SPARK_MASTER_IP(即 SPARK_MASTER_HOST)
  2)添加如下內容:

	export SPARK_DAEMON_JAVA_OPTS="
	-Dspark.deploy.recoveryMode=ZOOKEEPER
	-Dspark.deploy.zookeeper.url=hadoop102:2181,hadoop103:2181,hadoop104:2181
	-Dspark.deploy.zookeeper.dir=/spark"

3)將配置好的文件分發到其他機器節點
  4.2、在 master 節點通過 sbin/start-all.sh 進行集羣的啓動,在某個其他 slave 節點上手動執行 sbin/start-master.sh 來啓動第二個 master 進程
  4.3、如果是 HA 模式,那麼訪問的服務地址變爲:–master spark://hadoop102:7077,hadoop103:7077

5、Spark Yarn 模式集羣的配置
  5.1、不需要 spark standalone 集羣
  5.2、需要配置你提交應用的 client 端
修改 spark-env.sh

		# 讓 spark 能夠發現 hadoop 的配置文件
		HADOOP_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop
		YARN_CONF_DIR=/opt/module/hadoop-2.7.2/etc/hadoop

5.3、提交應用
$ /opt/module/spark-2.1.1-bin-hadoop2.7/bin/spark-submit
–class com.atguigu.sparkdemo.WordCountDemo
–master yarn
–deploy-mode client
–executor-memory 1G
–total-executor-cores 2
/opt/software/sparkdemo-1.0-SNAPSHOT-jar-with-dependencies.jar
hdfs://hadoop102:9000/RELEASE
hdfs://hadoop102:9000/out

或者

$ /opt/module/spark-2.1.1-bin-hadoop2.7/bin/spark-submit
–class com.atguigu.sparkdemo.WordCountDemo
–master yarn-client
–executor-memory 1G
–total-executor-cores 2
/opt/software/sparkdemo-1.0-SNAPSHOT-jar-with-dependencies.jar
hdfs://hadoop102:9000/RELEASE
hdfs://hadoop102:9000/out
注意:如果使用 yarn 集羣,不需要配置 master、slave 結構,只需要配置 jar 包的 client 提交端,讓提交端能夠發現 hadoop 的一些配置即可。

6、Spark 集羣的訪問
  6.1、通過 IDEA 來編寫程序打成 jar 包,來提交運行。
   1)、需要創建 SparkConf 對象來設置應用
   2)、需要根據 SparkConf 對象來創建 SparkContext(SparkConext 是你的程序和 spark 集羣進行連接的橋樑)。
   3)、通過 sc,從外部加載數據
   4)、對數據進行處理
   5)、將結果數據寫出到外部
   6)、通過 sc.stop() 關閉 SparkContext
  6.2、調試應用是通過 local[*] 模式來進行的。
  6.3、應用的提交:

		$ /opt/module/spark-2.1.1-bin-hadoop2.7/bin/spark-submit \
		--class com.atguigu.sparkdemo.WordCountDemo \
		--master spark://hadoop102:7077 \
		--executor-memory 1G \
		--total-executor-cores 2 \
		/opt/software/sparkdemo-1.0-SNAPSHOT-jar-with-dependencies.jar \
		hdfs://hadoop102:9000/RELEASE \
		hdfs://hadoop102:9000/out
		
		--class         指定 jar 包的主類
		--master        指定 jar 包提交的模式,詳解如下:
		    local           本地模式,本地運行,可以調試(local 1個線程、local[*] 不限線程、local[N] N個線程,理想情況下,N 設置爲你機器的 CPU 核數)
		    spark           提交到 spark stanalone 集羣,有 Master 和 Worker 進程,會在 container 中 jar 包運行的時候自動生成
		    mesos           將 jar 包提交到 mesos 集羣,運行在 mesos 資源管理器框架之上,由 mesos 負責資源管理,Spark 負責任務調度和計算
		    yarn            將 jar 包提交到 yarn 集羣,運行在 yarn 資源管理器框架之上,由 yarn 負責資源管理,Spark 負責任務調度和計算
		    cloud           比如 AWS 的 EC2,使用這個模式能很方便的訪問 Amazon 的 S3,Spark 支持多種分佈式存儲系統,比如 HDFS 和 S3
		--deploy-mode   指定 jar 的運行方式(默認是 client 模式),詳解如下:
		    client 模式      在提交端生成的 JVM 會一直等待所有計算過程全部完成才退出,它有兩個功能,一個是提交,一個是監控 jar 包運行(測試環境下使用)
		    cluster 模式     在提交端生成的 JVM 在提交 jar 包後會退出,它只有一個提交功能,然後在某一個 worker 上會生成一個 Driver 的 JVM,該 JVM 執行監控 jar 包運行的功能,等待所有代碼運行完畢退出(生產環境下使用 )
		application.jar 指定你的 jar 包的地址
		arguments       傳給 main() 方法的參數
		
		執行通過 $ /opt/module/spark-2.1.1-bin-hadoop2.7/bin/spark-shell 來運行。
		如果不設置 master 那麼默認運行在本機節點;如果設置 --master spark://hadoop102:7077  那麼運行在 Spark Standalone 模式集羣。

7、問題
  1、看文檔的時候,需要將某些配置改成自己的。
  2、IDEA 運行程序的時候,winuntil.exe 需要添加 HADOOP_HOME 環境變量(IDEA 需要重啓)。
  3、訪問 HDFS 的時候權限問題,比如:HADOOP_USER_NAME=hadoop,運行程序的時候就會以 hadoop 用戶

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章