配置docker的sudo權限
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo systemctl restart docker
#退出shell 重新進入,下面就可以開始測試了
docker info
啟動Spark集群
cd ~/soft/spark
docker-compose up -d
docker ps -a
spark-spark-1
spark-spark-worker-1
spark-spark-worker2-1
去容器內部配置
docker exec -it spark-spark-1 /bin/bash
cd /opt/bitnami/spark
dolphin集群
# 運行 dolphinscheduler
cd ~/soft/apache-dolphinscheduler-2.0.3-src/docker/docker-swarm
docker-compose up -d
docker ps -a
#復制 hadoop-3.2.2.tar.gz 二進制包到 Docker 容器中
#復制 Spark 3.2 二進制包到 Docker 容器中
docker cp hadoop-3.2.2.tar.gz docker-swarm-dolphinscheduler-worker-1:/opt/soft
docker cp hadoop-3.2.2.tar.gz docker-swarm-dolphinscheduler-worker2-1:/opt/soft
docker cp spark-3.1.2-bin-hadoop3.2.tgz docker-swarm-dolphinscheduler-worker-1:/opt/soft
docker cp spark-3.1.2-bin-hadoop3.2.tgz docker-swarm-dolphinscheduler-worker2-1:/opt/soft
# 登錄到容器並確保 SPARK_HOME2 存在
docker exec -it docker-swarm-dolphinscheduler-worker-1 /bin/bash
cd /opt/soft
tar zxf hadoop-3.2.2.tar.gz
rm -f hadoop-3.2.2.tar.gz
mv hadoop-3.2.2 hadoop
$HADOOP_HOME/bin/hadoop version
tar zxf spark-3.1.2-bin-hadoop3.2.tgz
rm -f spark-3.1.2-bin-hadoop3.2.tgz
mv spark-3.1.2-bin-hadoop3.2 spark2
$SPARK_HOME2/bin/spark-submit --version
$SPARK_HOME2/bin/spark-submit --class org.apache.spark.examples.SparkPi $SPARK_HOME2/examples/jars/spark-examples_2.12-3.1.2.jar
##配置-work上的hadoop的配置文件-客戶端 /opt/soft/hadoop/etc/hadoop
#java -version
#whereis java
/usr/local/openjdk-8/bin/java
# echo $JAVA_HOME
/usr/local/openjdk-8
/opt/soft/hadoop/etc/hadoop/hadoop-env.sh
/opt/soft/hadoop/etc/hadoop/core-site.xml
hadoop-env.sh
# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
# The Hadoop User
export HADOOP_USER_NAME=hdfs
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://*.*.*.*:80**</value>
</property>
</configuration>
##配置-work上的spark的配置文件-客戶端配置 /opt/soft/spark2/conf
cd /opt/soft/spark2/conf
cp spark-env.sh.template spark-env.sh
附錄說明
說明: 鏡像基於 bitnami/minideb 基礎鏡像,
這是 BitNami 構建的極簡 Debian 系統鏡像。
Debian 由於系統穩定且內核占用資源小的優勢,非常適合作為服務器操作系統
Spark 為各種集群管理器提供了統一的工具來提交作業,這個工具就是 spark-submit
以集群模式運行。可以通過指定 --master 參數
spark-submit --master spark://master:7077 /opt/share/my_script.py
bitnami/spark 鏡像中只包含 Hadoop 客戶端,並不包含服務器端。因此,如果需要使用 HDFS 和 YARN 功能,還需要部署 Hadoop 集群
\dolphinscheduler-2.0.3\apache-dolphinscheduler-2.0.3-bin\conf\env
dolphinscheduler_env.sh
export HADOOP_HOME=/opt/soft/hadoop
export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop
export SPARK_HOME1=/opt/soft/spark1
export SPARK_HOME2=/opt/soft/spark2
export PYTHON_HOME=/opt/soft/python
export JAVA_HOME=${JAVA_HOME:-/opt/soft/java}
export HIVE_HOME=/opt/soft/hive
export FLINK_HOME=/opt/soft/flink
export DATAX_HOME=/opt/soft/datax
export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$PATH
用戶中心
用戶中心
統一認證服務,人員組織管理,電話簿,地址簿
01.單點登錄(Single Sign On),簡稱為 SSO,是比較流行的企業業務整合的解決方案之一
實現方式:
以Cookie作為憑證媒介
通過JSONP實現
通過頁面重定向的方式
處理用戶信息的管理以及授權給第三方應用。第三方應用需要登錄的時候,則把用戶的登錄請求轉發給用戶中心進行處理,
用戶處理完畢返回憑證,第三方應用驗證憑證,通過后就登錄用戶
02.LDAP統一認證服務 LDAP,即 Light weight Directory Access Protocal(輕量級目錄訪問協議)
LDAP目錄服務是由目錄數據庫和一套訪問協議組成的系統-- 開源系統(YAPI)
03.用戶
admin -管理員 regular-普通用戶
04.租戶: tenant
單租戶架構與多租戶的區別在於,單租戶是為每個客戶單獨創建各自的軟件應用和支撐環境,單租戶的模式,每個客戶都有一份分別放在獨立的服務器上的數據庫和操作系統
多租戶是一種架構,目的是為了讓多用戶環境下使用同一套程序,且保證用戶間數據隔離
多租戶在數據存儲上存在三種主要的方案,分別是:
0.1 獨立數據庫 ###獨立數據庫(私有表
0.2 共享數據庫,獨立 Schema ###共享數據庫隔離數據框架(擴展表)
0.3 共享數據庫,共享 Schema,共享數據表-- 表中增加TenantID多租戶的數據字段。這是共享程度最高、隔離級別最低的模式 ###共享數據庫共享數據框架(通用表)
重點,在於不同租戶間應用程序環境的隔離(application context isolation)以及數據的隔離(data isolation),
不同租戶的權限、角色、用戶的詳細設定
開發: 駐場開發和離岸開發 -- CI/CT/CD能力(持續集成/持續測試/持續部署)
設計、開發、測試、部署、運維、運營等全生命周期管理
評估預算核算機制
05.具體
DolphinScheduler 用戶 在創建資源時,會使用創建或修改該用戶時指定的唯一租戶創建;
DolphinScheduler 用戶 在執行任務時,可以指定多個租戶中的某個租戶執行
DAG圖中設置DAG圖名稱與選擇租戶
物質基礎-機器
服務器
work worker 分組--對應work的IP
環境
各個租戶下添加環境變量和線上環境的配置參數
租戶
對應的是Linux服務器上的用戶,用於worker提交作業所使用的用戶
若Linux沒有該用戶,就導致任務失敗或創建該用戶(參數:workerTenantAutoCreate)
隊列對接YARN資源隊列
在DolphinScheduler中創建隊列,並不會影響到YARN調度器的隊列配置
隊列--隊列-
FIFO Scheduler把應用按提交的順序排成一個隊列,這是一個先進先出隊列
Capacity 調度器允許多個組織共享整個集群,每個組織可以獲得集群的一部分計算能力。
通過為每個組織分配專門的隊列,然后再為每個隊列分配一定的集群資源,這樣整個集群就可以通過設置多個隊列的方式給多個組織提供服務了
通知組:選擇通知策略||超時報警||發生容錯時,會發送流程信息或郵件到通知組里的所有成員
指DolphinScheduler的用戶
用戶分類 主要職責
管理員 創建普通用戶並授權
通常管理員不執行工作流
Worker分組管理、環境管理
普通用戶 創建項目、工作流
執行和監控工作流
關鍵詞-工作流程
Directed Acyclic Graph,簡稱DAG
project project-list
workflow Process
task
parameter built-in global local
datasource
Schedule mode: Timed schedule Dependency Priority
架構和組件-啟動流程
MasterServer : Distributed Quartz MasterSchedulerThread MasterExecThread MasterTaskExecThread
WorkerServer: FetchTaskThread 通過gRPC通信獲取遠程日志信息
ZooKeeper Task Queue
DolphinScheduler使用ZooKeeper分布式鎖來實現 同一時刻只有一台Master執行Scheduler,或者只有一台Worker執行任務的提交。
插件:
關注擴展org.apache.dolphinscheduler.alert.api.AlertChannelFactory接口 https://github.com/apache/dolphinscheduler/issues/3049
org.apache.dolphinscheduler.spi.task.TaskChannel
參考
https://github.com/bitnami/bitnami-docker-spark/blob/master/docker-compose.yml
使用 Docker 快速部署 Spark + Hadoop 大數據集群 https://zhuanlan.zhihu.com/p/421375012
使用DolphinScheduler調度Python任務 :https://blog.csdn.net/Yellow_python/article/details/122243141