天天看點

Spark2.2.0 分布式離線搭建

1、 Spark

簡介

Apache Spark 是專為大規模資料處理而設計的快速通用的計算引擎。Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用并行架構,Spark,擁有Hadoop MapReduce所具有的優點;但不同于MapReduce的是——Job中間輸出結果可以儲存在記憶體中,進而不再需要讀寫HDFS,是以Spark能更好地适用于資料挖掘與機器學習等需要疊代的MapReduce的算法。

Spark 是一種與 Hadoop 相似的開源叢集計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啟用了記憶體分布資料集,除了能夠提供互動式查詢外,它還可以優化疊代工作負載。

Spark 是在 Scala 語言中實作的,它将 Scala 用作其應用程式架構。與 Hadoop 不同,Spark 和 Scala 能夠緊密內建,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式資料集。

盡管建立 Spark 是為了支援分布式資料集上的疊代作業,但是實際上它是對 Hadoop 的補充,可以在 Hadoop 檔案系統中并行運作。通過名為 Mesos 的第三方叢集架構可以支援此行為。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發,可用來建構大型的、低延遲的資料分析應用程式。

2、部署準備

2.1、安裝包準備

  • spark-2.2.0-bin-hadoop2.6.tgz
  • jdk-8u161-linux-x64.tar.gz
  • scala-2.11.0.tgz

2.2、節點配置資訊

Spark2.2.0 分布式離線搭建

2.3、節點資源配置資訊

Spark2.2.0 分布式離線搭建

3、叢集配置與啟動

3.1、安裝包上傳與解壓

操作節點:risen01

操作使用者:root

  1. 上傳安裝包spark-2.2.0-bin-hadoop2.6.tgz,scala-2.11.0.tgz,jdk-8u161-linux-x64.tar.gz(如果已經存在則不需要此步驟)到 risen01節點下的~/packages目錄下,結果如圖所示:
Spark2.2.0 分布式離線搭建

2、解壓JDK安裝包,Spark安裝包Scala安裝包和到/usr/local下

解壓JDK指令:

tar -zxvf ~/packeages/jdk-8u161-linux-x64.tar.gz -C /usr/local           

解壓spark指令:

tar -zxvf ~/packages/spark-2.2.0-bin-hadoop2.6.tgz -C /usr/local           

解壓Scala指令:

tar -zxvf ~/packages/scala-2.11.0.tgz -C /usr/local           

3.2、啟動前準備

操作節點:risen01,risen02,risen03

  1. 在/data目錄下建立立spark/work目錄用來存放spark的任務處理日志
  2. 在/log目錄下建立立spark目錄用來存放spark的啟動日志等

3.3、修改配置檔案

3.3.1、編輯spark-env.sh檔案

說明:請根據實際叢集的規模和硬體條件來配置每一項參數

進入到/usr/local/spark-2.2.0-bin-hadoop2.6/conf目錄下執行指令:

cp spark-env.sh.template spark-env.sh           

編輯spark-env.sh檔案,添加以下内容:

#設定spark的web通路端口
SPARK_MASTER_WEBUI_PORT=18080

#設定spark的任務處理日志存放目錄
SPARK_WORKER_DIR=/data/spark/work

#設定spark每個worker上面的核數
SPARK_WORKER_CORES=2

#設定spark每個worker的記憶體
SPARK_WORKER_MEMORY=1g

#設定spark的啟動日志等目錄
SPARK_LOG_DIR=/log/spark

#指定spark需要的JDK目錄
export JAVA_HOME=/usr/local/jdk1.8.0_161

#指定spark需要的Scala目錄
export SCALA_HOME=/usr/local/scala-2.11.0

#指定Hadoop的安裝目錄
export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop

#指定Hadoop的配置目錄
export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop/

#實作spark-standlone HA(因為我們HA實作的是risen01和risen02之間的切換不涉及risen03,是以這段配置risen03可有可無)
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=risen01:2181,risen02:2181,risen03:2181 -Dspark.deploy.zookeeper.dir=/data/spark"           

3.3.2、 編輯spark-defaults.conf檔案

cp spark-defaults.conf.template spark-defaults.conf           

編輯spark-defaults.conf檔案,添加以下内容:

#設定spark的主節點
spark.master                      spark://risen01:7077

#開啟eventLog
spark.eventLog.enabled            true

#設定eventLog存儲目錄
spark.eventLog.dir                /log/spark/eventLog

#設定spark序列化方式
spark.serializer    org.apache.spark.serializer.KryoSerializer

#設定spark的driver記憶體
spark.driver.memory               1g

#設定spark的心跳檢測時間間隔
spark.executor.heartbeatInterval  20s

#預設并行數
spark.default.parallelism         20

#最大網絡延時
spark.network.timeout             3000s           

3.3.3、 編輯slaves檔案

cp slaves.templete slaves           

編輯slaves檔案,修改localhost為:

risen01
risen02
risen03           

3.4、分發其他節點

  1. 執行scp指令:
scp -r /usr/local/spark-2.2.0-bin-hadoop2.6 root@risen02:/usr/local
scp -r /usr/local/scala-2.11.0 root@risen02:/usr/local
scp -r /usr/local/jdk1.8.0_161 root@risen02:/usr/local
scp -r /usr/local/spark-2.2.0-bin-hadoop2.6 root@risen03:/usr/local
scp -r /usr/local/scala-2.11.0 root@risen03:/usr/local
scp -r /usr/local/jdk1.8.0_161 root@risen03:/usr/local           
  1. 需要提前建立好bigdata使用者并實作免密(這裡不再贅述,此步驟如果做過可不做)
  2. 權限修改

修改/log/spark權限指令:

chown -R bigdata.bigdata /log/spark           

修改/data/spark權限指令:

chown -R bigdata.bigdata /data/spark           

修改spark的安裝目錄指令:

chown -R bigdata.bigdata /usr/local/spark-2.2.0-bin-hadoop2.6           

修改Scala的安裝目錄指令:

chown -R bigdata.bigdata /usr/local/scala-2.11.0           

修改JDK1.8的安裝目錄指令:(此步驟如果做過可不做)

chown -R bigdata.bigdata /usr/local/jdk1.8.0_161           

結果如圖下所示:

Spark2.2.0 分布式離線搭建

3.5、啟動叢集

操作節點:risen01,risen02

操作使用者:bigdata

(1) 進入到/usr/local/spark-2.2.0-bin-hadoop2.6/sbin目錄下執行./start-all.sh,檢視web界面如下圖所示:

Spark2.2.0 分布式離線搭建

然後在進入到risen02機器的spark安裝目錄下/usr/local/spark-2.2.0-bin-hadoop2.6/sbin執行指令./start-master.sh啟動spark叢集的備用主節點。(記得一定要啟動備用主節點的程序,這裡我們隻用risen02做備用主節點,risen03雖然也配置了有資格,但是暫時我們不需要)

(2) 進入到/usr/local/spark-2.2.0-bin-hadoop2.6/bin目錄下執行spark-shell,并測試統計詞頻的測試,結果如下圖所示:

Spark2.2.0 分布式離線搭建

截止到此,spark-standlone模式便安裝成功了!

推薦閱讀:

https://www.roncoo.com/course/view/c4e0130ea2354c71a2cb9ba24348746c

文章來源:

https://my.oschina.net/blogByRzc/blog/1800450