spark的standalone 分布式搭建

一、環境準備

集群環境hadoop11,hadoop12 ,hadoop13
安裝 zookeeper 和 HDFS

1、啟動zookeeper

-- 啟動zookeeper(11,12,13都需要啟動)
xcall.sh  zkServer.sh  start
-- 或者
zk.sh start
-- xcall.sh 和zk.sh都是自己寫的腳本

在這里插入圖片描述

-- 查看進程
jps 
-- 有QuorumPeerMain進程不能說明zookeeper啟動成功
-- 需要查看zookeeper的狀態
xcall.sh  zkServer.sh  status
-- 或者
zk.sh status-------查看zookeeper的狀態 hadoop11 zookeeper-------
JMX enabled by default
Using config: /opt/installs/zookeeper3.4.6/bin/../conf/zoo.cfg
Mode: follower-------查看zookeeper的狀態 hadoop12 zookeeper-------
JMX enabled by default
Using config: /opt/installs/zookeeper3.4.6/bin/../conf/zoo.cfg
Mode: leader-------查看zookeeper的狀態 hadoop13 zookeeper-------
JMX enabled by default
Using config: /opt/installs/zookeeper3.4.6/bin/../conf/zoo.cfg
Mode: follower-- 有leader,有follower才算啟動成功

在這里插入圖片描述

2、啟動HDFS

[root@hadoop11 ~]# start-dfs.sh
Starting namenodes on [hadoop11 hadoop12]
上一次登錄:三 816 09:13:59 CST 2023192.168.182.1pts/0 上
Starting datanodes
上一次登錄:三 816 09:36:55 CST 2023pts/0 上
Starting journal nodes [hadoop13 hadoop12 hadoop11]
上一次登錄:三 816 09:37:00 CST 2023pts/0 上
Starting ZK Failover Controllers on NN hosts [hadoop11 hadoop12]
上一次登錄:三 816 09:37:28 CST 2023pts/0 上

jps查看進程

[root@hadoop11 ~]# xcall.sh jps
------------------------ hadoop11 ---------------------------
10017 DataNode
10689 DFSZKFailoverController
9829 NameNode
12440 Jps
9388 QuorumPeerMain
10428 JournalNode
------------------------ hadoop12 ---------------------------
1795 JournalNode
1572 NameNode
1446 QuorumPeerMain
1654 DataNode
1887 DFSZKFailoverController
1999 Jps
------------------------ hadoop13 ---------------------------
1446 QuorumPeerMain
1767 Jps
1567 DataNode
1679 JournalNode

查看HDFS高可用節點狀態,出現一個active和一個standby說名HDFS啟動成功(或者可以訪問web端=>主機名:8020來查看狀態)

[root@hadoop11 ~]# hdfs haadmin -getAllServiceState
hadoop11:8020                                      standby
hadoop12:8020                                      active

二、安裝Spark

1、上傳安裝包到hadoop11

上傳到/opt/modules目錄下
我的是2.4.3版本的

在這里插入圖片描述

2、解壓

[root@hadoop11 modules]# tar -zxf spark-2.4.3-bin-hadoop2.7.tgz -C /opt/installs/
[root@hadoop11 modules]# cd /opt/installs/
[root@hadoop11 installs]# ll
總用量 4
drwxr-xr-x.  8 root root  198 621 10:20 flume1.9.0
drwxr-xr-x. 11 1001 1002  173 530 19:59 hadoop3.1.4
drwxr-xr-x.  8   10  143  255 329 2018 jdk1.8
drwxr-xr-x.  3 root root   18 530 20:30 journalnode
drwxr-xr-x.  8 root root  117 83 10:03 kafka3.0
drwxr-xr-x. 13 1000 1000  211 51 2019 spark-2.4.3-bin-hadoop2.7
drwxr-xr-x. 11 1000 1000 4096 530 06:32 zookeeper3.4.6

3、更名

[root@hadoop11 installs]# mv spark-2.4.3-bin-hadoop2.7/ spark
[root@hadoop11 installs]# ls
flume1.9.0  hadoop3.1.4  jdk1.8  journalnode  kafka3.0  spark  zookeeper3.4.6

4、配置環境變量

 vim /etc/profile
-- 添加
export SPARK_HOME=/opt/installs/spark
export PATH=$PATH:$SPARK_HOME/bin
-- 重新加載環境變量
source /etc/profile

5、修改配置文件

(1)conf目錄下的 slaves 和 spark-env.sh

cd /opt/installs/spark/conf/
-- 給文件更名
mv slaves.template slaves
mv spark-env.sh.template spark-env.sh#配置Spark集群節點主機名,在該主機上啟動worker進程
[root@hadoop11 conf]# vim slaves
[root@hadoop11 conf]# tail -3 slaves
hadoop11
hadoop12
hadoop13#聲明Spark集群中Master的主機名和端口號
[root@hadoop11 conf]# vim spark-env.sh
[root@hadoop11 conf]# tail -3 spark-env.sh
SPARK_MASTER_HOST=hadoop11
SPARK_MASTER_PORT=7077

在這里插入圖片描述

(2)sbin 目錄下的 spark-config.sh

vim spark-config.sh
#在最后增加 JAVA_HOME 配置
export JAVA_HOME=/opt/installs/jdk1.8

在這里插入圖片描述

6、配置JobHistoryServer

(1)修改配置文件

[root@hadoop11 sbin]# hdfs dfs -mkdir /spark-logs
[root@hadoop11 sbin]# cd ../conf/
[root@hadoop11 conf]# mv spark-defaults.conf.template spark-defaults.conf
[root@hadoop11 conf]# vim spark-defaults.conf

在這里插入圖片描述

[root@hadoop11 conf]# vim spark-env.sh
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://hdfs-cluster/spark-logs"

這里使用hdfs-cluster的原因:
在scala中寫hdfs-cluster而不寫具體的主機名,需要將hadoop中的兩個配置文件拷貝到resources目錄下,原因和這里的一樣(需要動態尋找可用的hadoop節點,以便讀寫數據)
在這里插入圖片描述

(2)復制hadoop的配置文件到spark的conf目錄下

[root@hadoop11 conf]# cp /opt/installs/hadoop3.1.4/etc/hadoop/core-site.xml ./
[root@hadoop11 conf]# cp /opt/installs/hadoop3.1.4/etc/hadoop/hdfs-site.xml ./
[root@hadoop11 conf]# ll
總用量 44
-rw-r--r--. 1 root root 1289 816 11:10 core-site.xml
-rw-r--r--. 1 1000 1000  996 51 2019 docker.properties.template
-rw-r--r--. 1 1000 1000 1105 51 2019 fairscheduler.xml.template
-rw-r--r--. 1 root root 3136 816 11:10 hdfs-site.xml
-rw-r--r--. 1 1000 1000 2025 51 2019 log4j.properties.template
-rw-r--r--. 1 1000 1000 7801 51 2019 metrics.properties.template
-rw-r--r--. 1 1000 1000  883 816 10:47 slaves
-rw-r--r--. 1 1000 1000 1396 816 11:03 spark-defaults.conf
-rwxr-xr-x. 1 1000 1000 4357 816 11:05 spark-env.sh

7、集群分發

分發到hadoop12 hadoop13 上

myscp.sh ./spark/ /opt/installs/-- myscp.sh是腳本
[root@hadoop11 installs]# cat /usr/local/sbin/myscp.sh
#!/bin/bash# 使用pcount記錄傳入腳本參數個數pcount=$#
if ((pcount == 0))
thenecho no args;exit;
fi
pname=$1
#根據給定的路徑pname獲取真實的文件名fname
fname=`basename $pname`
echo "$fname"
#根據給定的路徑pname,獲取路徑中的絕對路徑,如果是軟鏈接,則通過cd -P 獲取到真實路徑
pdir=`cd -P $(dirname $pname);pwd`
#獲取當前登錄用戶名
user=`whoami`
for((host=12;host<=13;host++))
doecho"scp -r $pdir/$fname $user@hadoop$host:$pdir"scp -r $pdir/$fname $user@hadoop$host:$pdir
done

查看hadoop12 和hadoop13 上是否有spark

hadoop12

[root@hadoop12 ~]# cd /opt/installs/
[root@hadoop12 installs]# ll
總用量 4
drwxr-xr-x. 11 root root  173 5月  30 19:59 hadoop3.1.4
drwxr-xr-x.  8   10  143  255 3月  29 2018 jdk1.8
drwxr-xr-x.  3 root root   18 5月  30 20:30 journalnode
drwxr-xr-x.  8 root root  117 8月   3 10:06 kafka3.0
drwxr-xr-x. 13 root root  211 8月  16 11:13 spark
drwxr-xr-x. 11 root root 4096 5月  30 06:39 zookeeper3.4.6

hadoop13

[root@hadoop13 ~]# cd /opt/installs/
[root@hadoop13 installs]# ll
總用量 4
drwxr-xr-x. 11 root root  173 5月  30 19:59 hadoop3.1.4
drwxr-xr-x.  8   10  143  255 3月  29 2018 jdk1.8
drwxr-xr-x.  3 root root   18 5月  30 20:30 journalnode
drwxr-xr-x.  8 root root  117 8月   3 10:06 kafka3.0
drwxr-xr-x. 13 root root  211 8月  16 11:13 spark
drwxr-xr-x. 11 root root 4096 5月  30 06:39 zookeeper3.4.6

三、啟動spark

在Master所在的機器上啟動

[root@hadoop11 installs]# cd spark/sbin/
# 開啟standalone分布式集群
[root@hadoop11 sbin]# ./start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /opt/installs/spark/logs/spark-root-org.apache.spark.deploy.master.Master-1-hadoop11.out
hadoop13: starting org.apache.spark.deploy.worker.Worker, logging to /opt/installs/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadoop13.out
hadoop12: starting org.apache.spark.deploy.worker.Worker, logging to /opt/installs/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadoop12.out
hadoop11: starting org.apache.spark.deploy.worker.Worker, logging to /opt/installs/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-hadoop11.out
#開啟JobHistoryServer
[root@hadoop11 sbin]# ./start-history-server.sh
starting org.apache.spark.deploy.history.HistoryServer, logging to /opt/installs/spark/logs/spark-root-org.apache.spark.deploy.history.HistoryServer-1-hadoop11.out

在這里插入圖片描述

查看 web UI

查看spark的web端

訪問8080端口:
在這里插入圖片描述

查看歷史服務

訪問18080端口:
在這里插入圖片描述

四、初次使用

1、使用IDEA開發部署一個spark程序

(1)pom.xml

<dependencies><!-- spark依賴--><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>2.4.3</version></dependency></dependencies><build><extensions><extension><groupId>org.apache.maven.wagon</groupId><artifactId>wagon-ssh</artifactId><version>2.8</version></extension></extensions><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>wagon-maven-plugin</artifactId><version>1.0</version><configuration><!--上傳的本地jar的位置--><fromFile>target/${project.build.finalName}.jar</fromFile><!--遠程拷貝的地址--><url>scp://root:root@hadoop11:/opt/jars</url></configuration></plugin><!-- maven項目對scala編譯打包 --><plugin><groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId><version>4.0.1</version><executions><execution><id>scala-compile-first</id><phase>process-resources</phase><goals><goal>add-source</goal><goal>compile</goal></goals></execution></executions></plugin></plugins></build>

(2)sparkWordCount.scala

object sparkWordCount {def main(args: Array[String]): Unit = {//1.建立sparkContext對象val conf = new SparkConf().setMaster("spark://hadoop11:7077").setAppName("sparkWordCount")val sc = new SparkContext(conf)//2.對文件進行操作sc.textFile("hdfs://hadoop11:8020/spark/a.txt").flatMap(v=>v.split(" ")).map(v=>(v,1)).groupBy(v=>v._1).map(v=>(v._1,v._2.size)).saveAsTextFile("hdfs://hadoop11:8020/spark/out1")/* //把hdfs-site.xml和core-site.xml拷貝到resources目錄下,這里的主機名可以寫成hdfs-clustersc.textFile("hdfs://hdfs-cluster/spark/a.txt").flatMap(v=>v.split(" ")).map(v=>(v,1)).groupBy(v=>v._1).map(v=>(v._1,v._2.size)).saveAsTextFile("hdfs://hdfs-cluster/spark/out1")*///3.關閉資源sc.stop()}

(3)打包,上傳

要現在hadoop11的 /opt下面新建一個jars文件夾

[root@hadoop11 hadoop]# cd /opt/
[root@hadoop11 opt]# mkdir jars
[root@hadoop11 opt]# ll
總用量 0
drwxr-xr-x. 9 root root 127 816 10:39 installs
drwxr-xr-x. 2 root root   6 816 14:05 jars
drwxr-xr-x. 3 root root 179 816 10:33 modules
[root@hadoop11 opt]# cd jars/

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

(4)運行這個jar包

spark-submit --master spark://hadoop11:7077 --class day1.sparkWordCount /opt/jars/spark-test-1.0-SNAPSHOT.jar

看一下8080端口:
在這里插入圖片描述

看一下18080端口:

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39715.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39715.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39715.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++中配置OpenCV的教程

首先去OpenCV的官網下載OpenCV安裝包&#xff0c;選擇合適的平臺和版本進行下載&#xff0c;我下載的是Windows的OpenCV-4.7.0版本。OpenCV下載地址 下載好后&#xff0c;解壓到自己指定的路徑。 配置環境變量&#xff1a; WinR鍵打開運行窗口&#xff0c;輸入sysdm.cpl打開系…

星星之火:國產訊飛星火大模型的實際使用體驗(與GPT對比)

#AIGC技術內容創作征文&#xff5c;全網尋找AI創作者&#xff0c;快來釋放你的創作潛能吧&#xff01;# 文章目錄 1 前言2 測試詳情2.1 文案寫作2.2 知識寫作2.3 閱讀理解2.4 語意測試&#xff08;重點關注&#xff09;2.5 常識性測試&#xff08;重點關注&#xff09;2.6 代碼…

常識判斷

頭像 carrin&#xff5e;&#x1f47b; 產品經理 225/753 75/302.5 30/152 15/101.5 等差數列&#xff0c;所以最后一個是10/101 收起 60 回復 發布于 2020-02-18 16:33

Mysql之explain詳解

1. explain作用 使用explain可以展示出sql語句的執行計劃&#xff0c;再根據sql的執行計劃去判斷這條sql有哪些點可以進行優化&#xff0c;從而讓sql的效率達到最大化。 2. 執行計劃各列含義 &#xff08;1&#xff09;id&#xff1a;id列是select的序列號&#xff0c;這個…

React18TS項目:配置react-css-modules,使用styleName

他的好處不說了 網上一堆文章一個能打的都沒有&#xff0c; 添加開發依賴 pnpm add -D dr.pogodin/babel-plugin-react-css-modules types/react-css-modules Babel Plugin "React CSS Modules" | Dr. Pogodin Studio 看dr.pogodin/babel-plugin-react-css-mo…

centos7安裝erlang及rabbitMQ

下載前注意事項&#xff1a; 第一&#xff1a;自己的系統版本&#xff0c;centos中uname -a指令可以查看&#xff0c;el8&#xff0c;el7&#xff0c;rabbitMQ的包不一樣&#xff01; 第二&#xff1a;根據rabbitMQ中erlang version找到想要下載rabbitMQ對應erlang版本&#x…

封裝、繼承、多態

封裝是什么&#xff1f; 封裝是面向對象的特征之一&#xff0c;是對象和類概念的主要特性。 封裝&#xff0c;也就是把客觀事物封裝成抽象的類&#xff0c;并且類可以把自己的數據和方法只讓可信的類或者對象操作&#xff0c;對不可信的進行信息隱藏。 封裝&#xff0c;是把客觀…

C++儲備

一、類的 三大特性 封裝&#xff0c;繼承&#xff0c;多態 二、虛函數 為啥要用到虛函數 C虛函數詳解_Whitesad_的博客-CSDN博客 三、函數重載 四、封裝的保護權限 1.public 成員類內&#xff0c;內外都可以訪問 2.protected 成員&#xff0c;類內可以訪問&#xff0c…

大牛分析相機鏡頭光學中疑難問題

1、變焦和對焦有什么區別? 變焦就是改變鏡頭的焦距(準確說是像距),以改變拍攝的視角,也就是通常所說的把被攝體拉近或推遠。例如18-55mm和70-200mm鏡頭就是典型的變焦鏡頭。焦距越長,視角越窄。 對焦通常指調整鏡片組和底片(傳感器平面)之間的距離,從而使被攝物在CC…

SElinux 導致 Keepalived 檢測腳本無法執行

哈嘍大家好&#xff0c;我是咸魚 今天我們來看一個關于 Keepalived 檢測腳本無法執行的問題 一位粉絲后臺私信我&#xff0c;說他部署的 keepalived 集群 vrrp_script 模塊中的腳本執行失敗了&#xff0c;但是手動執行這個腳本卻沒有任何問題 這個問題也是咸魚第一次遇到&…

《安富萊嵌入式周報》第320期:鍵盤敲擊聲解碼, 軍工級boot設計,開源CNC運動控制器,C語言設計筆記,開源GPS車輛跟蹤器,一鍵生成RTOS任務鏈表

周報匯總地址&#xff1a;嵌入式周報 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬漢嵌入式論壇 - Powered by Discuz! 視頻版&#xff1a; https://www.bilibili.com/video/BV1Cr4y1d7Mp/ 《安富萊嵌入式周報》第320期&#xff1a;鍵盤敲擊…

【智慧工地源碼】:人工智能、BIM技術、機器學習在智慧工地的應用

智慧工地云平臺是專為建筑施工領域所打造的一體化信息管理平臺。通過大數據、云計算、人工智能、BIM、物聯網和移動互聯網等高科技技術手段&#xff0c;將施工區域各系統數據匯總&#xff0c;建立可視化數字工地。同時&#xff0c;圍繞人、機、料、法、環等各方面關鍵因素&…

理解持續測試,才算理解DevOps

軟件產品的成功與否&#xff0c;在很大程度上取決于對市場需求的及時把控&#xff0c;采用DevOps可以加快產品交付速度&#xff0c;改善用戶體驗&#xff0c;從而有助于保持領先于競爭對手的優勢。 作為敏捷開發方法論的一種擴展&#xff0c;DevOps強調開發、測試和運維不同團…

centos如何安裝libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg

在 CentOS 系統上安裝這些包可以按照以下步驟進行&#xff1a; 打開終端&#xff0c;使用 root 或具有管理員權限的用戶登錄。 使用以下命令安裝 libssl-dev 包&#xff1a; yum install openssl-devel使用以下命令安裝 libsdl-dev 包&#xff1a; yum install SDL-devel使用以…

Go 安裝配置

介紹Ubuntu20.04 安裝和配置Go 1.安裝Go 去這個地方下載Go https://go.dev/doc/install 如果之前安裝過&#xff0c;可以參考這個&#xff08;沒有可以忽略&#xff09; 下載完成后執行 sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz 然后修改環境變量 sudo ge…

css3-grid:grid 布局 / 基礎使用

一、理解 grid 二、理解 css grid 布局 CSS Grid布局是一個二維的布局系統&#xff0c;它允許我們通過定義網格和網格中每個元素的位置和尺寸來進行頁面布局。CSS Grid是一個非常強大的布局系統&#xff0c;它不僅可以用于構建網格布局&#xff0c;還可以用于定位元素&#xf…

ahooks.js:一款強大的React Hooks庫及其API使用教程(一)

一、ahooks.js簡介二、ahooks.js安裝三、ahooks.js API介紹與使用教程1. useRequest2. useAntdTable3. useSize4. useBoolean5. useToggle6. useHover7. useDebounce8. useEventListener9. useFusionTable10. useKeyPress11. useLoading12. usePrevious13. useForm14. useUpdat…

代碼審計-ASP.NET項目-未授權訪問漏洞

代碼審計必備知識點&#xff1a; 1、代碼審計開始前準備&#xff1a; 環境搭建使用&#xff0c;工具插件安裝使用&#xff0c;掌握各種漏洞原理及利用,代碼開發類知識點。 2、代碼審計前信息收集&#xff1a; 審計目標的程序名&#xff0c;版本&#xff0c;當前環境(系統,中間件…

Flink源碼之State創建流程

StreamOperatorStateHandler 在StreamTask啟動初始化時通過StreamTaskStateInitializerImpl::streamOperatorStateContext會為每個StreamOperator 創建keyedStatedBackend和operatorStateBackend&#xff0c;在AbstractStreamOperator中有個StreamOperatorStateHandler成員變量…

Web framework-Gin

一、Gin Go Web--Go Module 軟件框架&#xff08;software framework&#xff09;&#xff0c;通常指的是為了實現某個業界標準或完成特定基本任務的軟件組件規范&#xff0c;也指為了實現某個軟件組件規范時&#xff0c;提供規范所要求之基礎功能的軟件產品。 框架就是&#…