Spark介紹以及安裝和部署

一、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) 開發,可用來構建大型的、低延遲的數據分析應用程序。

二、基本原理

Spark Streaming:構建在Spark上處理Stream數據的框架,基本的原理是將Stream數據分成小的時間片段(幾秒),以類似batch批量處理的方式來處理這小部分數據。Spark Streaming構建在Spark上,一方面是因爲Spark的低延遲執行引擎(100ms+),雖然比不上專門的流式數據處理軟件,也可以用於實時計算,另一方面相比基於Record的其它處理框架(如Storm),一部分窄依賴的RDD數據集可以從源數據重新計算達到容錯處理目的。此外小批量處理的方式使得它可以同時兼容批量和實時數據處理的邏輯和算法。方便了一些需要歷史數據和實時數據聯合分析的特定應用場合。

三、安裝部署

1、安裝前需要安裝hadoop集羣

2、 用到的軟件
軟件 版本 下載地址
linux Ubuntu Server 18.04.2 LTS https://www.ubuntu.com/download/server
hadoop hadoop-2.7.1 http://archive.apache.org/dist/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz
java jdk-8u211-linux-x64 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
spark spark-2.4.3-bin-hadoop2.7 https://www.apache.org/dyn/closer.lua/spark/spark-2.4.3/spark-2.4.3-bin-hadoop2.7.tgz
scala scala-2.12.5 http://www.scala-lang.org/download/
Anaconda Anaconda3-2019.03-Linux-x86_64.sh https://www.anaconda.com/distribution/

3、 節點安排
名稱 ip hostname
主節點 192.168.233.200 Master
子節點1 192.168.233.201 Slave01
子節點2 192.168.233.202 Slave02

4、 安裝Spark
4.1 解壓到安裝目錄

$ tar zxvf spark-2.4.3-bin-hadoop2.7.tgz -C /usr/local/bigdata/
$ cd /usr/local/bigdata/
$ mv spark-2.4.3-bin-hadoop2.7 spark-2.4.3

4.2 修改配置文件
配置文件位於/usr/local/bigdata/spark-2.4.3/conf目錄下。

(1) spark-env.sh
將spark-env.sh.template重命名爲spark-env.sh。
添加如下內容:

export SCALA_HOME=/usr/local/bigdata/scala
export JAVA_HOME=/usr/local/bigdata/java/jdk1.8.0_211
export HADOOP_HOME=/usr/local/bigdata/hadoop-2.7.1
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=Master
SPARK_LOCAL_DIRS=/usr/local/bigdata/spark-2.4.3
SPARK_DRIVER_MEMORY=512M

(2)slaves
將slaves.template重命名爲slaves
修改爲如下內容:

Slave01
Slave02

4.3 配置環境變量
在~/.bashrc文件中添加如下內容,並執行$ source ~/.bashrc命令使其生效

export SPARK_HOME=/usr/local/bigdata/spark-2.4.3
export PATH=$PATH:/usr/local/bigdata/spark-2.4.3/bin:/usr/local/bigdata/spark-2.4.3/sbin

5、運行Spark
先啓動hadoop

$ cd $HADOOP_HOME/sbin/
$ ./start-dfs.sh
$ ./start-yarn.sh
$ ./start-history-server.sh

然後啓動啓動sapark

$ cd $SPARK_HOME/sbin/
$ ./start-all.sh
$ ./start-history-server.sh

要注意的是:其實我們已經配置的環境變量,所以執行start-dfs.sh和start-yarn.sh可以不切換到當前目錄下,但是start-all.sh、stop-all.sh和/start-history-server.sh這幾個命令hadoop目錄下和spark目錄下都同時存在,所以爲了避免錯誤,最好切換到絕對路徑下。

spark啓動成功後,可以在瀏覽器中查看相關資源情況:http://192.168.233.200:8080/,這裏192.168.233.200是Master節點的IP

6、 配置Scala環境
spark既可以使用Scala作爲開發語言,也可以使用python作爲開發語言。

6.1 安裝Scala
spark中已經默認帶有scala,如果沒有或者要安裝其他版本可以下載安裝包安裝,過程如下:
先下載安裝包,然後解壓

$ tar zxvf scala-2.12.5.tgz -C /usr/local/bigdata/

然後在~/.bashrc文件中添加如下內容,並執行$ source ~/.bashrc命令使其生效

export SCALA_HOME=/usr/local/bigdata/scala-2.12.5
export PATH=/usr/local/bigdata/scala-2.12.5/bin:$PATH

測試是否安裝成功,可以執行如下命令:

scala -version
Scala code runner version 2.12.5 -- Copyright 2002-2018, LAMP/EPFL and Lightbe

6.2 啓動Spark shell界面
執行spark-shell --master spark://master:7077命令,啓動spark shell。

hadoop@Master:~$ spark-shell --master spark://master:7077
19/06/08 08:01:49 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://Master:4040
Spark context available as 'sc' (master = spark://master:7077, app id = app-20190608080221-0002).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.3
      /_/

Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_211)
Type in expressions to have them evaluated.
Type :help for more information.

scala>

7、 配置python環境
7.1 安裝python
系統已經默認安裝了python,但是爲了方便開發,推薦可以直接安裝Anaconda,這裏下載的是安裝包是Anaconda3-2019.03-Linux-x86_64.sh,安裝過程也很簡單,直接執行$ bash Anaconda3-2019.03-Linux-x86_64.sh即可。

7.2 啓動PySpark的客戶端
執行命令:$ pyspark --master spark://master:7077

具體如下:

hadoop@Master:~$ pyspark --master spark://master:7077
Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
19/06/08 08:12:50 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.3
      /_/

Using Python version 3.6.3 (default, Oct 13 2017 12:02:49)
SparkSession available as 'spark'.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章