建議先閱讀個人博客 大數據基礎架構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
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 是否啓動,而後長啥樣便可
客戶端操做 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 沒裝好
1. 安裝java:很簡單,請自行百度
2. 安裝 hadoop 集羣:具體參考個人博客 hadoop 集羣搭建;必須有,由於要用 yarn
3. 安裝 scala:spark tar 包帶有 scala 依賴,因此無需專門安裝
4. python2.7 以上版本:若是要使用 pyspark 才須要安裝,也就是說玩 python 才須要這步
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 的配置文件的地址
修改 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
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