一、Spark單機模式部署
Spark版本 : spark-2.4.7-bin-hadoop2.7
1、安裝配置JDK環境
2、下載Spark
官網下載http://spark.apache.org/
然后上傳到LInux服務器上
3、解壓
tar -zxvf spark-2.4.7-bin-hadoop2.7.tgz
解壓目錄說明
bin 可執行腳本
conf 配置文件
data 示例程序使用數據
examples 示例程序
jars 依賴 jar 包
python pythonAPI
R R 語言 API
sbin 集群管理命令
yarn 整合yarn需要的文件
4、啟動master節點
./sbin/start-master.sh
5、啟動woker節點:./sbin/start-slave.sh
例如:start-slave.sh spark://Ice:7077
參數:表示master節點的訪問地址(注意host-ip映射)
6、連接單機Spark集群
spark-shell --master spark://Ice:7077 (Spark Scala交互式開發環境,“:quit”退出)
二. 運行官方求PI的案例
bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[2] ./examples/jars/spark-examples_2.11-2.4.7.jar 100
結果片段:Pi is roughly 3.1416503141650316
2.1、spark-submit
語法
./bin/spark-submit
--class <main-class>
--master <master-url>
--deploy-mode <deploy-mode>
--conf <key>=<value>
... # other options
<application-jar>
[application-arguments]
- –
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 6
指定所有executor
使用的cpu
核數為6個 - –
executor-cores
表示每個executor
使用的cpu
的核數
三、使用 Spark-shell
Spark-shell
是 Spark
給我們提供的交互式命令窗口(類似于 Scala 的 REPL)
3.1、打開 Spark-shell
$ bin/spark-shell
Spark context Web UI available at http://Ice:4040
Spark context available as 'sc' (master = local[*], app id = local-1608775323264).
Spark session available as 'spark'.
Welcome to____ __/ __/__ ___ _____/ /___\ \/ _ \/ _ `/ __/ '_//___/ .__/\_,_/_/ /_/\_\ version 2.4.7/_/Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_251)
Type in expressions to have them evaluated.
Type :help for more information.scala>
四、wordcount
案例
4.1、 創建 2 個文本文件
mkdir input
cd input
touch 1.txt
touch 2.txt
寫入內容
4.2、打開 Spark-shell
bin/spark-shell
查看進程和通過 web 查看應用程序運行情況
可以看到一句Spark context Web UI available at http://Ice:4040
4.3、訪問地址:http://Ice:4040
4.4 運行 wordcount
程序
sc.textFile("./input").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).collect
scala> sc.textFile("/root/sparkdemo/demo1/input").flatMap(.split(" ")).map((, 1)).reduceByKey(_ + _).collect
res0: Array[(String, Int)] = Array((are,1), (SQL,1), (world,1), (you,1), (hadoop,1), (how,1), (MapReduce,1), (hello,2), (spark,4), (hi,1), (core,1))scala>
4.5、登錄Ice:4040查看程序運行
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fCXxgJmX-1609287306339)(image/image2.png)]
4.6、 提交流程
4.7、 wordcount 數據流程分析
textFile("input")
:讀取本地文件input文件夾數據;flatMap(_.split(" "))
:壓平操作,按照空格分割符將一行數據映射成一個個單詞;map((_,1))
:對每一個元素操作,將單詞映射為元組;reduceByKey(_+_)
:按照key將值進行聚合,相加;collect
:將數據收集到Driver端展示。