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、節點配置資訊

2.3、節點資源配置資訊
3、叢集配置與啟動
3.1、安裝包上傳與解壓
操作節點:risen01
操作使用者:root
- 上傳安裝包spark-2.2.0-bin-hadoop2.6.tgz,scala-2.11.0.tgz,jdk-8u161-linux-x64.tar.gz(如果已經存在則不需要此步驟)到 risen01節點下的~/packages目錄下,結果如圖所示:
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
- 在/data目錄下建立立spark/work目錄用來存放spark的任務處理日志
- 在/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、分發其他節點
- 執行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
- 需要提前建立好bigdata使用者并實作免密(這裡不再贅述,此步驟如果做過可不做)
- 權限修改
修改/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
結果如圖下所示:
3.5、啟動叢集
操作節點:risen01,risen02
操作使用者:bigdata
(1) 進入到/usr/local/spark-2.2.0-bin-hadoop2.6/sbin目錄下執行./start-all.sh,檢視web界面如下圖所示:
然後在進入到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,并測試統計詞頻的測試,結果如下圖所示:
截止到此,spark-standlone模式便安裝成功了!
推薦閱讀:
https://www.roncoo.com/course/view/c4e0130ea2354c71a2cb9ba24348746c文章來源:
https://my.oschina.net/blogByRzc/blog/1800450