title: Spark本地安裝及Linux下偽分布式搭建
date: 2018-12-01 12:34:35
tags: Spark
categories: 大數據
toc: true
個人github博客:Josonlee’s Blog
前期准備
spark可以在Linux上搭建,也能不安裝hadoop直接在Windows上搭建單機版本。首先是從官網上下載和你hadoop版本匹配的spark版本(版本不要太新,選擇穩定版本,如我的是hadoop2.6版本對應spark-2.0.2-bin-hadoop2.6.tgz)
可以放心的是,spark安裝遠比hadoop安裝簡單的多
本地安裝
把下載的壓縮包解壓到本地某個位置上,修改環境變量,添加%SPARK_HOME%:解壓的位置
;修改Path,增加一欄%SPARK_HOME%/bin
好了,本地安裝就這么簡單。打開CMD命令行工具,輸入spark-shell
,如圖顯示就是安裝成功了
- Error:安裝后運行是有可能會遇到一個錯誤:
Failed to find Spark jars directory
- 解決方法:安裝路徑名上不能有空格(比如Program Files就不行)
基於hadoop偽分布式搭建
將你下載的spark壓縮包,通過某些工具(我用的是WinSCP)上傳到虛擬機中
有必要說一下,我的是centos7系統,hadoop也是偽分布式的,主從節點名namenode(具體的你可以看我之前搭建hadoop的博客)
- 解壓到用戶目錄下(我這里是
/home/hadoop
)
# 上傳到了/root目錄下,cd到該目錄下執行
tar -zxvf spark-2.0.2-bin-hadoop2.6.tgz -C /home/hadoop
- 同本地安裝一樣,配置環境變量
- 可以選擇在系統環境變量中配置
/etc/profile
,也可以選擇用戶環境變量中配置/home/hadoop/.bash_profile
,推薦后者
- 可以選擇在系統環境變量中配置
vi .bash_profile
# 添加
export SPARK_HOME=/home/hadoop/spark-2.0.2-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
# 保存退出后,source .bash_profile使配置生效
配置完成后同樣可以輸入spark-shell查看運行
- 配置spark的設置文件(conf目錄下)spark-env.sh和slaves
切換到spark下的conf目錄下,cd /home/hadoop/spark-2.0.2-bin-hadoop2.6/conf
spark沒有spark-env.sh和slaves文件,只有以template結尾的兩個模板文件,依據模板文件生成即可cp spark-env.sh.template spark-env.sh
,cp slaves.template slaves
# 修改spark-env.sh
vi spark-env.sh
# 增加類似下文內容
export JAVA_HOME=/usr/java/jdk1.8.0_131
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0-cdh5.12.1
export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.6.0-cdh5.12.1/etc/hadoop
export SPARK_MASTER_HOST=namenode
export SPARK_WORKER_MEMORY=1024m
export SPARK_WORKER_CORES=2
export SPARK_WORKER_INSTANCES=1
像JAVA_HOME,HADOOP_HOME是你之前java和hadoop安裝的位置,可以使用echo JAVA_HOME
查看
SPARK_MASTER_HOST,spark也是主從關系,這里指定spark主節點為hadoop的主節點名即可
后三行是默認配置,依你電腦配置可修改。分別代表worker內存、核、實例分配
# 修改slaves
vi slaves
# 增加從節點
namenode #因為是偽分布式,namenode既是主也是從
還有就是要注意,你之前配置hadoop時已經完成了ip和名的映射
以上內容完成后,就搭建完了
啟動spark
先完成一個事,你可以看到spark下sbin目錄中啟動和結束的命令是start-all.sh
,stop-all.sh
,和hadoop啟動結束命令重名了,用mv命令修改為start-spark-all.sh,stop-spark-all.sh就好了
- 啟動hadoop集群
start-hdfs.sh
,start-yarn.sh
- 啟動spark
start-spark-all.sh
- 使用jps命令查看運行情況
- 本地瀏覽器打開
http://192.168.17.10:8080
(這個IP是我之前在hadoop中配置的namenode的IP,端口是固定的)
安裝過程可能遇到的問題
在配置以上設置時,一定要分清楚,這都是我的環境設置,要合理的區分開。比如說你java,hadoop安裝的位置和我的不一樣等等
在替別人查看這一塊配置時,它運行spark集群時,遇到了幾個問題
- 用戶hadoop無權限在spark下創建logs等目錄
- 通過
ls -l
查看spark-2.0.2-bin-hadoop2.6這個文件夾所屬組和用戶是root - 修改文件夾所屬組和用戶即可,
chown -R hadoop:hadoop /home/hadoop/spark-2.0.2-bin-hadoop2.6
- 通過
spark-class: line 71…No such file or directory
,顯示大概是找不到java- 這個問題就是配置寫錯了,spark-env.sh中java_home寫錯了
spark完全分布集群搭建
過程和偽分布式搭建一樣,不同在於slaves
中設置的從節點名為datanode1、datanode2類似的
然后,再復制到從節點主機中,如scp -r /home/hadoop/spark-2.0.2-bin-hadoop2.6 datanode1:/home/hadoop
(這是因為之前配好了ssh免密登錄)
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
https://josonle.github.io
https://blog.csdn.net/lzw2016