Spark的安裝及其配置


1.Spark下載

https://archive.apache.org/dist/spark/

 

2.上傳解壓,配置環境變量 配置bin目錄

解壓:tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz -C /usr/local/soft/

改名:mv spark-2.4.5-bin-hadoop2.7/ spark-2.4.5

配置環境變量:vim /etc/profile

添加環境變量:

export SPARK_HOME=/usr/local/soft/spark-2.4.5
export PATH=$PATH:$SPARK_HOME/bin

保存配置:source /etc/profile

 

3.修改配置文件 conf

修改spark-env.sh: cp spark-env.sh.template spark-env.sh

增加配置:

export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077

export SPARK_WORKER_CORES=2
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=2g
export JAVA_HOME=/usr/local/soft/jdk1.8.0_171

 

修改:cp slaves.template slaves

 

增加:

node1

node2

 

4.發放到其他節點

xsync spark-2.4.5

(xsync是自己寫的腳本,在安裝Hadoop的時候寫過)

 

4、在主節點執行啟動命令
啟動集群,在master中執行
./sbin/start-all.sh

 

 

 http://master:8080/  訪問spark ui

 

 

 5.檢驗安裝的Spark

1. standalone client模式 日志在本地輸出,一班用於上線前測試(bin/下執行)

需要進入到spark-examples_2.11-2.4.5.jar 包所在的目錄下執行
cd /usr/local/soft/spark-2.4.5/examples/jars

spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 --executor-memory 512m --total-executor-cores 1 spark-examples_2.11-2.4.5.jar 100


2. standalone cluster模式 上線使用,不會再本地打印日志
spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 --driver-memory 512m --deploy-mode cluster --supervise --executor-memory 512M --total-executor-cores 1 spark-examples_2.11-2.4.5.jar 100

spark-shell spark 提供的一個交互式的命令行,可以直接寫代碼

spark-shell master spark://master:7077

 

6.整合yarn

在公司一般不適用standalone模式,因為公司一般已經有yarn 不需要搞兩個資源管理框架

停止spark集群
在spark sbin目錄下執行 ./stop-all.sh

spark整合yarn只需要在一個節點整合, 可以刪除node1 和node2中所有的spark 文件

1、增加hadoop 配置文件地址

vim spark-env.sh
增加
export HADOOP_CONF_DIR=/usr/local/soft/hadoop-2.7.6/etc/hadoop

 

 

2、往yarn提交任務需要增加兩個配置 yarn-site.xml(/usr/local/soft/hadoop-2.7.6/etc/hadoop/yarn-site.xml)

先關閉yarn
stop-yarn.sh

<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>

<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

 

4、同步到其他節點,重啟yarn
scp -r yarn-site.xml node1:`pwd`
scp -r yarn-site.xml node2:`pwd`


啟動yarn
start-yarn.sh


cd /usr/local/soft/spark-2.4.5/examples/jars

3.spark on yarn client模式 日志在本地輸出,一班用於上線前測試
spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --executor-memory 512M --num-executors 2 spark-examples_2.11-2.4.5.jar 100


4.spark on yarn cluster模式 上線使用,不會再本地打印日志 減少io
spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster --executor-memory 512m --num-executors 2 --executor-cores 1 spark-examples_2.11-2.4.5.jar 100

獲取yarn程序執行日志 執行成功之后才能獲取到
yarn logs -applicationId application_1560967444524_0003

 

hdfs webui
http://node1:50070

yarn ui
http://node1:8088

 

在idea中使用spark做wordCount

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Demo1WordCount {
  def main(args: Array[String]): Unit = {

    // Spark配置文件對象
    val conf: SparkConf = new SparkConf()
    // 設置Spark程序的名字
    conf.setAppName("Demo1WordCount")
    // 設置運行模式為local模式 即在idea本地運行
    conf.setMaster("local")

    // Spark的上下文環境,相當於Spark的入口
    val sc: SparkContext = new SparkContext(conf)

    // 詞頻統計
    // 1、讀取文件
    /**
     * RDD : 彈性分布式數據集(可以先當成scala中的集合去使用)
     */
    val linesRDD: RDD[String] = sc.textFile("spark/data/words")

    // 2、將每一行的單詞切分出來
    // flatMap: 在Spark中稱為 算子
    // 算子一般情況下都會返回另外一個新的RDD
    val wordsRDD: RDD[String] = linesRDD.flatMap(line => line.split(","))

    // 3、按照單詞分組
    val groupRDD: RDD[(String, Iterable[String])] = wordsRDD.groupBy(word => word)

    // 4、統計每個單詞的數量
    val countRDD: RDD[String] = groupRDD.map(kv => {
      val word: String = kv._1
      val words: Iterable[String] = kv._2
      // words.size直接獲取迭代器的大小
      // 因為相同分組的所有的單詞都會到迭代器中
      // 所以迭代器的大小就是單詞的數量
      word + "," + words.size
    })

    // 5、將結果進行保存
    countRDD.saveAsTextFile("spark/data/wordCount")

  }

}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM