Spark基本概念解析
1:實驗配置
虛擬機cdh1(4G內存,1CPU*2CORE)
虛擬機cdh2(4G內存,1CPU*2CORE)
虛擬機cdh3(4G內存,1CPU*2CORE)
spark配置:
conf/spark-env.sh
- export SPARK_MASTER_IP=cdh1
- export SPARK_WORKER_CORES=2
- export SPARK_WORKER_INSTANCES=2
- export SPARK_MASTER_PORT=7077
- export SPARK_WORKER_MEMORY=1200m
- export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}
conf/slaves
- cdh2
- cdh3
2:啟動spark
在這里spark作為一個資源管理器的存在,類似YARN、Mesos的角色,為Spark Application提供資源。
在本配置里,這個standalone spark所擁有的資源是:2個Worker Node,每個Worker Node提供2Core、2個INSTANCE(也就是啟動2個worker 實例)、1.2G內存。所以總的資源是:4個Worker,8個Core,4.8G內存??梢酝ㄟ^http://cdh1:8080獲取相應的信息:
3:啟動spark-shell
spark-shell 是一個spark application,運行時需要向資源管理器申請資源,如standalone spark、YARN、Mesos。本例向standalone spark申請資源,所以在運行spark-shell時需要指向申請資源的standalone spark集群信息,其參數(shù)為MASTER。如果未在spark-env.sh中申明MASTER,則使用命令MASTER=spark://cdh1:7077 bin/spark-shell啟動;如果已經(jīng)在spark-env.sh中申明MASTER,則可以直接用bin/spark-shell啟動。
由于spark-shell缺省的情況下,會申請所有的CPU資源,也就是8個Core,本實驗先看看使用3個Core的情況。至于spark-shell申請內存資源是通過Application中SparkContext中配置-->環(huán)境變量SPARK_MEM-->缺省值512M這樣的優(yōu)先次序來決定,本例中未做任何設置 ,故每個Executor使用的是512M。
[hadoop@cdh1 spark09]$ bin/spark-shell -c 3