Standalone集群搭建和Spark應用監控

2020-09-06 分享電腦學習

承接上一篇文檔《》

Spark on standalone

類似於yarn的一個集群資源管理框架,spark自帶的

yarn

ResourceManager(進程)

管理和調度集群資源,主要包括:申請、調度、監控

NodeManager(進程)

管理當前節點的資源,以及啟動container資源:CPU和內存(CPU決定快慢,內存決定生死)

注意:一臺機器只允許有一個NodeManager


standalone

Master:(進程)

管理集群資源,主要包括:申請、調度、監控

Worker:(進程)

當前進程允許分配的資源進行管理,包括資源的管理以及executor的啟動資源:CPU和內存(CPU決定快慢,內存決定生死)

注意:一臺機器允許有多個Worker進程


Standalone集群的配置

前提:spark的本地執行環境已經配置好了

  1. 修改${SPARK_HOME}/conf/spark-env.sh

SPARK_MASTER_HOST=域名和ipSPARK_MASTER_PORT=7070SPARK_MASTER_WEBUI_PORT=8080SPARK_WORKER_CORES=2//指定當前機器上的每個worker進程允許分配的邏輯CPU核數SPARK_WORKER_MEMORY=2g//指定當前機器上的每個worker允許分配的內存大小(可以認為是邏輯內存)SPARK_WORKER_PORT=7071SPARK_WORKER_WEBUI_PORT=8081SPARK_WORKER_INSTANCES=2//指定當前機器上的Worker的數量

2. 配置Worker節點所在機器,在conf目錄中

cp slaves.template slaves

修改slaves

備註:一行一個機器的主機名(Worker進程所在的機器的hostname)

3. 額外:完全分布式配置(此處可不配置了解即可)

只需要在slaves文件中添加slave從節點的hostname即可(前提是ssh、hostname和ip映射等hadoop的依賴環境均已完成),然後將修改好的spark的安裝包copy到其他的slave機器上即可完成分布式的安裝

4. 啟動服務

4.1 啟動主節點

./sbin/start-master.sh

訪問WEBUI:http://master:8080/

4.2 啟動從節點(Worker)

./sbin/start-slave.sh spark://master:7070

4.3 關閉所有服務

./sbin/stop-all.sh

4.5 啟動所有服務

./sbin/start-all.sh

注意:啟動和關閉所有服務的前提是由ssh免秘鑰登錄

5. 簡單查看/測試

5.1 jps查看Master和Worker進程

5.2 查看WEBUI界面:http://master:8080/

5.3 ./bin/spark-shell --help--》查看幫助命令

./bin/spark-shell --master spark://master:7070

val result1 = sc.textFile(&34;).flatMap(_.split(&34;)).filter(_.nonEmpty).map((_,1)).reduceByKey(_+_).collect

如果看到collect有結果,表示我們的standalone搭建完成


Spark StandAlone集群的HA配置

1. Single-Node Recovery with Local File System --基於文件系統的單節點恢復

在spark-env.sh配置

SPARK_DAEMON_JAVA_OPTS=&34;

spark.deploy.recoveryDirectory --> 保存恢復狀態的一個目錄

2. Standby Masters with zookeeper --基於Zookeeper的Master的HA機制

SPARK_DAEMON_JAVA_OPTS=&34;

假設有三臺機器


hadoop01MasterSPARK_MASTER_HOST=hadoop01hadoop02Master(standby) SPARK_MASTER_HOST=hadoop02hadoop03SPARK_MASTER_HOST=hadoop02


啟動Master,在hadoop01上用 start-all.sh(hadoop01:8080)

再在hadoop02上面單獨啟動Master start-master.sh (自動成為StandBy的狀態hadoop02:8080)


Spark應用的監控

如果運行

頁面就會變化

如果關掉shell,頁面就不存在了

官網:http://spark.apache.org/docs/2.0.2/monitoring.html

給了監控方法

  1. 針對我們正在運行的Spark應用,可以通過WEB界面監控,默認埠號是4040,如果4040被佔用,就會依次進行埠遞增(也是有次數限制的),

spark.ui.port=4050 --4051 4052

2. 如果應用已經執行完成了,那可以spark的job history server服務來看

MapReduce的job history server

(1). 開啟日誌聚集功能

(2). 日誌上傳到HDFS的文件夾路徑

(3). 啟動mr的job history服務(讀取HDFS的日誌文件,並進行展示)

Spark的job history server

(1). 在HDFS上創建spark應用日誌存儲路徑

./bin/hdfs dfs -mkdir -p /spark/history

(2). 修改配置文件spark-default.conf

spark.eventLog.enabled truespark.eventLog.dir hdfs://master:8020/spark /history


(3). 配置Spark的job history server

spark-env.sh

SPARK_HISTORY_OPTS=&34;

(4). 啟動spark的job history server

http:/master:18080/api/v1/applications

查看Jps

Web的地址查看,注意18080

這裡出現了一個錯誤18080可以訪問但沒有內容

先檢查Hadoop是否創建了這個目錄

檢查路徑是否有問題

檢查配置文件發現問題所在

經測試後發現:

spark.eventLog.dir:Application在運行過程中所有的信息均記錄在該屬性指定的路徑下;

spark.history.fs.logDirectory:Spark History Server頁面只展示該指定路徑下的信息;

比如:spark.eventLog.dir剛開始時指定的是hdfs://hadoop000:8020/directory,而後修改成hdfs://hadoop000:8020/directory2

那麼spark.history.fs.logDirectory如果指定的是hdfs://hadoop000:8020/directory,就只能顯示出該目錄下的所有Application運行的日誌信息;反之亦然。

所有這裡修改spark.eventLog.dir為

重啟服務即可訪問

在頁面裡可以查看很多信息,比如日誌配置路徑,未完成的應用等等

Api查詢應用

RESTAPI:

http://master:18080/api/v1/applications/local-1533452143143/jobs/0


相關焦點

  • 大數據Spark運行環境:Standalone模式與配置詳解
    1 解壓縮文件將spark-3.0.0-bin-hadoop3.2.tgz.tgz文件上傳到Linux並解壓縮在指定位置tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/modulecd /opt/module mv spark-3.0.0-bin-hadoop3.2 spark-standalone
  • 從0開始學習spark的學習筆記(1)
    本地安裝和集群安裝:然後就是開始安裝我們的spark:sparkHA集群安裝這個我之前寫了博客可以參考:Spark集群HA環境搭建教程然後我們現在開始window的本地安裝:4.1 Master同名字一樣是spark集群的管理職,或者管理節點,在spark基於yarn的方式運行過程中,master就是ResourcesManager,基於自身的standalone
  • Spark應用的結構的學習
    承接上一篇文檔《Standalone集群搭建和Spark應用監控》需要了解的概念一、Spark應用的結構(Driver + Executors)(一)、Driver:相當於MapReduce中ApplicationMaster,運行SparkContext
  • 什麼是hadoop集群搭建?hadoop集群搭建環境部署圖文教程
    Hadoop的運行模式分為3種:本地運行模式,偽分布運行模式,集群運行模式,相應概念如下:1、獨立模式即本地運行模式(standalone或local mode)無需運行任何守護進程(daemon),所有程序都在單個JVM上執行。
  • Spark案例練習-打包提交
    構建SparkContext上下文對象val conf = new SparkConf().setMaster("local")// 指定應用在哪兒執行,可以是local、或者stadnalone、yarn、mesos集群.setAppName("logpvuv") //指定應用的名字.set("spark.eventLog.enabled","true").set("spark.eventLog.dir
  • Spark案例練習-打包提交
    構建SparkContext上下文對象val conf = new SparkConf().setMaster(&34;) // 指定應用在哪兒執行,可以是local、或者stadnalone、yarn、mesos集群.setAppName(&34;) //指定應用的名字.set(&34;,&34;).set(&34;,&34;)
  • Spark編程模型
    一、spark應用編程模型主要包含兩部分DriverExecutor二、spark應用程式的基本概念1、Application 包含driver program 和集群中多個executor2、Driver program:運行Application
  • 操作練習-Spark on Yarn
    承接上一篇文檔《》將spark應用運行在yarn集群上 官網地址:http://spark.apache.org/docs/2.0.2/running-on-yarn.html1.啟動hdfs和yarn.
  • Apache Spark 3.0 將內置支持 GPU 調度
    作為通用計算引擎的 Spark 肯定也不甘落後,來自 Databricks、NVIDIA、Google 以及阿里巴巴的工程師們正在為 Apache Spark 添加原生的 GPU 調度支持,該方案填補了 Spark 在 GPU 資源的任務調度方面的空白,有機地融合了大數據處理和 AI 應用,擴展了 Spark 在深度學習、信號處理和各大數據應用的應用場景。
  • Spark Streaming 實時計算在甜橙金融監控系統中的應用及優化
    目前公司對實時性計算的需要及應用越來越多,本文選取了其中之一的 Spark Streaming 來介紹如何實現高吞吐量並具備容錯機制的實時流應用。監控系統架構及存在的主要問題Spark Streaming 流處理框架介紹Streaming 相關的優化Streaming 任務的監控寫在最後2監控系統架構及存在的主要問題系統架構介紹整個實時監控系統的架構是先由 Flume 收集伺服器產生的日誌 Log 和前端埋點數據, 然後實時把這些信息發送到
  • 微服務管理平臺nacos虛擬ip負載均衡集群模式搭建
    微服務管理平臺nacos虛擬ip負載均衡集群模式搭建一、Nacos簡介Nacos是用於微服務管理的平臺,其核心功能是服務註冊與發現、服務配置管理。Nacos作為服務註冊發現組件,可以替換Spring Cloud應用中傳統的服務註冊於發現組件,如:Eureka、consul等,支持服務的健康檢查。
  • 如何快速學習spark
    spark它是發源於美國的加州大學伯克利分校amplab集群計算平臺的,基於內存計算的,時速非常快,性能比Hadoop快100陪以上,它可以流處理、圖計算、還有很多的計算範式,我個人認為spark是個全能的選手,但是隨著技術的快速發展,現在又出現Flink,它和spark是一個競爭對手了,今天我們主要講spark,後續我會再分享Flink的知識。
  • 黑馬程式設計師:大數據面試題之spark相關(一)
    2) 在Master的切換過程中唯一的影響是不能提交新的Job:一方面不能夠提交新的應用程式給集群,因為只有Active Master才能接受新的程序的提交請求;另外一方面,已經運行的程序中也不能夠因為Action操作觸發新的Job的提交請求;2.Spark master HA 主從切換過程不會影響集群已有的作業運行,為什麼?
  • 在 K8S 上運行 Spark 的最佳實踐和陷阱
    所有的應用的啟動和擴容都是在這種秒級的。然後,對於這種本地的開發轉到這種線上的部署,它是一種無縫的轉換。然後,它還能提供這種配置自動的spark的一些參數調優,整個這條pipeline都會做得非常的快,已經非常地穩定。
  • Spark集群:環境搭建之Scala安裝指南!
    前篇文章介紹了Spark計算框架相較於MapReduce框架的種種優勢,接下來我們一起安裝、配置Spark集群環境,方便後期繼續學習研究。Spark項目是由Scala語言編寫的,因此需提前配置Scala環境才能運行Spark程序。
  • 搭建高可用redis集群,避免standalone帶給你苦難
    現在項目上用redis的話,很少說不用集群的情況,畢竟如果生產上只有一臺redis會有極大的風險,比如機器掛掉,或者內存爆掉,就比如我們生產環境曾經也遭遇到這種情況,導致redis內存不夠掛掉的情況,當然這些都是我們極其不能容忍的,第一個必須要做到高可靠,其次才是高性能,好了,下面我來逐一搭建一下。
  • Spark Operator 初體驗
    將Spark運行在K8S集群上可以採用Spark官方原生的作業運行方式(https://spark.apache.org/docs/3.0.0/running-on-kubernetes.html),在該模式下提交Spark作業仍然延用了spark-submit命令,並且通過指定K8S集群的ApiServer地址作為master來提交Spark作業,該方式目前對於
  • Spark應用的結構
    承接上一篇文檔《》需要了解的概念一、Spark應用的結構(Driver + Executors)(一)、Driver:相當於MapReduce中ApplicationMaster,運行SparkContext上下文、SparkContext進行初始化的地方(JVM)、進行RDD的初始化、Task運行的資源申請、調度的地方,一般認為就是main運行的地方
  • Arctern Spark單機可視化入門
    本文中將會介紹Arctern Spark單機可視化安裝和簡單使用安裝和驗證    參考單機安裝arctern和在線安裝單機spark一:要注意的地方conda info是查看當前的 Conda 環境信息,文檔裡寫的conda env info好像是不對的二:下載時候使用spark使用國內鏡像如清華鏡像(http://221.182.132.24
  • Redis集群監控方法
    技術領域 提供一種Redis集群中各Redis節點的監控處理方法,能夠採集Redis節點的資源信息、性能指標數據,集群內多個Redis節點服務運行狀態監控。實現告警監控信息、資源和性能指標的採集與分析的監控方法。 2.