spark教程(一)-集羣搭建

spark 簡介 

建議先閱讀個人博客 大數據基礎架構html

spark 一個通用的計算引擎,專門爲大規模數據處理而設計,與 mapreduce 相似,不一樣的是,mapreduce 把中間結果 寫入 hdfs,而 spark 直接寫入 內存,這使得它可以實現實時計算。java

spark 由 scala 語言開發,他可以和 scala 完美結合,同時實現了 java、python、R 等接口。node

 

搭建模式

spark 有 3 種搭建模式python

local 模式:即單機模式,這種安裝加壓便可,具體安裝方法穿插在 Standalone 模式linux

Standalone 模式:即搭建 spark 集羣,但不與其餘框架集成,如 yarn,此時 spark 運行在集羣中shell

基於 yarn 的 spark 集羣部署:yarn 集羣 + spark 集羣,此時 spark 運行在 yarn 中apache

local 和 standalone 模式必須啓動 spark,yarn 模式無需啓動 spark瀏覽器

具體怎麼理解這 3 種模式,後面有空我會詳細講session

 

Standalone 模式

第一步:安裝環境

1. 安裝java:很簡單,請自行百度架構

2. 安裝 hadoop 集羣:具體參考個人博客 hadoop 集羣搭建

  // 若是 spark 讀取 hdfs 就須要 hadoop,若是隻玩本地,無需這步

3. 安裝 scala:spark tar 包帶有 scala 依賴,因此無需專門安裝

4. python2.7 以上版本:若是要使用 pyspark 才須要安裝,也就是說玩 python 才須要這步

 

第二步:下載並安裝

1. 官網下載 spark

下載地址 spark

注意選擇 hadoop 對應的版本

 

2. 解壓 tar 包

上傳至集羣的每一個節點,解壓,設置環境變量

export SPARK_HOME=/usr/lib/spark
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$SPARK_HOME/bin:$PATH

至此已經完成單機模式的 spark 安裝

 

3. 配置 spark

進入 spark 解壓目錄,須要配置 conf/slaves,conf/spark-env.sh 兩個文件

注意這兩個文件是不存在的,須要 cp 複製一下

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

 

slaves

末尾去掉 localhost,加上如下內容

hadoop10
hadoop11
hadoop12
hadoop13

 

spark-env.sh

加上如下內容

export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
export SPARK_MASTER_IP=hadoop1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MEMORY=1G

設置 spark 的主節點 和 端口;

spark_worker_memory 表示計算時使用的內存,越大越好,spark 是基於內存的計算

 

4. 向其餘節點遠程下發配置

scp -r conf/ root@hadoop11:/usr/lib/spark
scp -r conf/ root@hadoop12:/usr/lib/spark
scp -r conf/ root@hadoop13:/usr/lib/spark

 

5. 啓動 spark

cd /usr/lib/spark/sbin、
./start-all.sh

中止就是對應的 stop

 

6. 驗證是否啓動成功

6.1 jsp 查看進程

主節點顯示 master 和 worker 兩個進程

從節點顯示 worker 進程

Standalone 模式顯示的是 master worker,yarn 顯示的不是

 

6.2 瀏覽器訪問 http://192.168.10.10:8080/

 

第三步:操做 spark 集羣

這裏只作簡單介紹,驗證 spark 是否啓動,而後長啥樣便可

客戶端操做 hadoop 集羣的命令都在 spark 的 bin 目錄下

1. spark-shell 模式  【 scala 模式】

輸入命令

spark-shell

# 也能夠設置參數
spark-shell --master spark://hadoop10:7077 --executor-memory 600m
[root@hadoop10 spark]# bin/spark-shell 
19/10/09 17:47:54 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
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://hadoop10:4040 Spark context available as 'sc' (master = local[*], app id = local-1570668484546). Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.4
      /_/
         
Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 1.8.0_222)

注意綠色的兩句,意思是 shell 中內置了 可用的 spark context 和 spark session,名字分別爲 sc 和 spark

按 :quit 退出

 

2. pyspark 模式  【python 模式】

輸入命令 pyspark 便可

[root@hadoop10 spark]# bin/pyspark 
Python 2.7.12 (default, Oct  2 2019, 19:43:15) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
19/10/02 22:08:17 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.4
      /_/

Using Python version 2.7.12 (default, Oct  2 2019 19:43:15)
SparkSession available as 'spark'. >>> 

注意這裏只有 spark session,可是 spark context 也能夠直接用 

 

若是出現 NameError: name 'memoryview' is not defined,說明 python 版本不對,2.7 及以上

若是出現未導入包什麼的,請自行解決,通常是 python 沒裝好

 

基於 yarn 的 spark 部署

第一步:安裝環境

1. 安裝java:很簡單,請自行百度

2. 安裝 hadoop 集羣:具體參考個人博客 hadoop 集羣搭建;必須有,由於要用 yarn

3. 安裝 scala:spark tar 包帶有 scala 依賴,因此無需專門安裝

4. python2.7 以上版本:若是要使用 pyspark 才須要安裝,也就是說玩 python 才須要這步

 

第二步:安裝 spark

spark on yarn 模式只需在 hadoop 集羣的任一節點安裝 spark 便可,不須要 spark 集羣;

由於 spark 應用提交到 yarn 後,yarn 負責集羣資源調度。

 

spark 安裝參照 Standalone 模式,大體以下:

1. 配置環境變量

2. spark-env.sh 添加以下內容

YARN_CONF_DIR=/usr/lib/hadoop-2.6.5/etc/hadoop

這個地址是 hadoop yarn 的配置文件的地址

 

第三步:修改 hadoop yarn 的配置

修改 yarn-site.xml,添加以下內容

<!-- spark 部署到 yarn 上須要這兩個配置 --> 
<!-- 是否啓動一個線程檢查每一個任務正在使用的物理內存,若是超出分配值,則直接殺掉該任務,默認爲 true -->
<property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
 </property>
 
<!-- 是否啓動一個線程檢查每一個任務正在試用的虛擬內存,若是超出分配值,則直接殺掉該任務,默認爲 true -->
<property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
 </property> 
<!-- spark 部署到 yarn 上須要這兩個配置 --> 

分發到各節點

 

不配置這步可能報錯,特別是分配內存較小時,如虛擬機狀況下。

 

至此配置完畢,注意,無需啓動 spark

 

第四步:操做 yarn 模式

spark-shell --master yarn-client    # 這種方式在 spark2.x 中被廢棄,替代命令爲下面這句
spark-shell --master yarn --deploy-mode client

yarn 模式 不在 spark UI 上監控,而是在 hadoop UI 上,地址爲 http://192.168.10.10:8088

 

 

 

參考資料:

https://www.cnblogs.com/swordfall/p/7903678.html  安裝

https://www.jianshu.com/p/5626612bf10c       安裝

https://blog.csdn.net/penyok/article/details/81483527        安裝

https://blog.csdn.net/chengyuqiang/article/details/77864246     spark on yarn

相關文章
相關標籤/搜索