dolphinscheduler 3.0.1 资源中心
dolphinscheduler 3.0.1 資源中心
- 🐬配置HDFS存儲(chǔ)
- 🐠common.properties配置文件
- 🐠驗(yàn)證
- 🐬具體功能
- 🐠表結(jié)構(gòu)
- 🐠文件管理
- 🐟文件夾
- 🐟代碼
- 🐠UDF管理
- 🐠任務(wù)組管理
- 🐟創(chuàng)建任務(wù)組
- 🐟任務(wù)組處理
- 🐵其它
🔼上一集:dolphinscheduler 3.0.1 項(xiàng)目管理(三):任務(wù)
*??主目錄:dolphinscheduler 3.0.1功能梳理及源碼解讀
🔽下一集:dolphinscheduler 3.0.1數(shù)據(jù)質(zhì)量
官網(wǎng)介紹
資源中心通常用于上傳文件、UDF 函數(shù)和任務(wù)組管理。 對(duì)于 standalone環(huán)境,可以選擇本地文件目錄作為上傳文件夾(此操作不需要Hadoop部署)。當(dāng)然,你也可以 選擇上傳到 Hadoop 或者 MinIO 集群。在這種情況下,您需要有 Hadoop(2.6+)或 MinION 等相關(guān)環(huán)境。
🐬配置HDFS存儲(chǔ)
🐠common.properties配置文件
修改API下面的common.properties中hdfs存儲(chǔ)配置信息
data.basedir.path=/tmp/dolphinscheduler3 resource.storage.type=HDFS resource.storage.upload.base.path=/dolphinscheduler hdfs.root.user=hadoop fs.defaultFS=hdfs://192.xxx.xxx.xx:8020 resource.manager.httpaddress.port=8088 yarn.resourcemanager.ha.rm.ids=192.xxx.xxx.xx,192.xxx.xxx.xx,192.xxx.xxx.xx指定基礎(chǔ)目錄,一開始沒改,上傳文件報(bào)文件不存在,原因是虛擬機(jī)部署了2.0,不同用戶,相同目錄,導(dǎo)致3.0沒有權(quán)限創(chuàng)建目錄
File /tmp/dolphinscheduler/dolphin/resources/3c24469c-5ea4-40ff-ab50-ed27ae49ccaa does not existHA高可用模式下要把core-site.xml 和 hdfs-site.xml 放到對(duì)應(yīng)的conf目錄下面
sudo cp /home/hadoop/hadoop/etc/hadoop/core-site.xml api-server/conf/ sudo cp /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml api-server/conf/之前2.0遇到過這種錯(cuò),原因是fs.defaultFS=hdfs://192.xxx.xxx.xx:8020,節(jié)點(diǎn)狀態(tài)為standby,改成active狀態(tài)的節(jié)點(diǎn)即可,但是每次hadoop節(jié)點(diǎn)狀態(tài)切換,就要修改配置文件顯然不合理,因此增加yarn.resourcemanager.ha.rm.ids和core-site.xml、hdfs-site.xml,成功解決下面的錯(cuò),但是3.0依然報(bào)這個(gè)錯(cuò),最終只能將fs.defaultFS改為active節(jié)點(diǎn)才好使
Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-errorat org.apache.hadoop.hdfs.server.namenode.ha.StandbyState.checkOperation(StandbyState.java:108)at org.apache.hadoop.hdfs.server.namenode.NameNode$NameNodeHAContext.checkOperation(NameNode.java:2094)at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkOperation(FSNamesystem.java:1550)at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:3342)at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:1208)at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:1042)at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:604)at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:572)at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:556)at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1093)at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:1043)at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:971)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:422)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1878)at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2976)hdfs查看節(jié)點(diǎn)狀態(tài) hdfs haadmin -getServiceState 節(jié)點(diǎn)名稱
🐠驗(yàn)證
🐬具體功能
🐠表結(jié)構(gòu)
真正使用的時(shí)候都是集群模式,因此對(duì)資源的操作除了本地資源表t_ds_resources,還涉及對(duì)HDFS的增刪改查()相互對(duì)應(yīng)的
🐠文件管理
🐟文件夾
🐟代碼
- 直接調(diào)用hadoop提供的工具類完成增刪改查,不多言
- 連接hadoop集群亦是如此
調(diào)用調(diào)度自己封裝的HadoopUtils,操作HDFS之前,先 getInstance(),加載common.properties中配置,連接hadoop集群,然后進(jìn)行增刪改查
🐠UDF管理
同上
🐠任務(wù)組管理
官方說明
任務(wù)組主要用于控制任務(wù)實(shí)例并發(fā),旨在控制其他資源的壓力(也可以控制Hadoop集群壓力,不過集群會(huì)有隊(duì)列管控)。您可在新建任務(wù)定義時(shí),可配置對(duì)應(yīng)的任務(wù)組,并配置任務(wù)在任務(wù)組內(nèi)運(yùn)行的優(yōu)先級(jí)。
任務(wù)組的使用適用于由 worker 執(zhí)行的任務(wù),master負(fù)責(zé)執(zhí)行的節(jié)點(diǎn)類型不受任務(wù)組控制,例如【switch】節(jié)點(diǎn)、【condition】節(jié)點(diǎn)、【sub_process】等
-
獲取任務(wù)組資源:
Master 在分發(fā)任務(wù)時(shí)判斷該任務(wù)是否配置了任務(wù)組,如果任務(wù)沒有配置,則正常拋給 worker 運(yùn)行;如果配置了任務(wù)組,在拋給 worker 執(zhí)行之前檢查任務(wù)組資源池剩余大小是否滿足當(dāng)前任務(wù)運(yùn)行,如果滿足資源池 -1,繼續(xù)運(yùn)行;如果不滿足則退出任務(wù)分發(fā),等待其他任務(wù)結(jié)束喚醒。 -
釋放與喚醒:
當(dāng)獲取到任務(wù)組資源的任務(wù)結(jié)束運(yùn)行后,會(huì)釋放任務(wù)組資源,釋放后會(huì)檢查當(dāng)前任務(wù)組是否有任務(wù)等待,如果有則標(biāo)記優(yōu)先級(jí)最好的任務(wù)可以運(yùn)行,并新建一個(gè)可以執(zhí)行的event。該event中存儲(chǔ)著被標(biāo)記可以獲取資源的任務(wù)id,隨后在獲取任務(wù)組資源然后運(yùn)行。
🐟創(chuàng)建任務(wù)組
- 選擇不到項(xiàng)目
- 排查
奇怪的是沒有查詢出數(shù)據(jù):
- 切換admin用戶可以查詢到
前面任務(wù)定義好像也遇到過這種問題,看最新代碼是單獨(dú)增加了一個(gè)查詢方法
🐟任務(wù)組處理
官方流程圖如下(待后續(xù)研究到后臺(tái)主要服務(wù)的時(shí)候再詳細(xì)探究吧):
🐵其它
最近才用到資源中心的功能(對(duì)應(yīng)2.0.5版本),就是上傳python腳本,然后定義shell節(jié)點(diǎn),直接運(yùn)行python腳本,這種簡單應(yīng)用,創(chuàng)建子目錄的的時(shí)候遇到過問題,稍微記錄下:
- 跳轉(zhuǎn)/創(chuàng)建子目錄失敗,都是前端的錯(cuò),缺少參數(shù)和傳值
沒有傳當(dāng)前目錄ID,api缺少參數(shù)報(bào)錯(cuò)(文件和UDF都缺少):
UDF子目錄失敗,原因也是沒把當(dāng)前目錄id傳過來:
-
租戶不存在:這個(gè)其實(shí)不算錯(cuò),一般管理員用戶,都是沒有租戶的,新建的普通用戶是沒問題的(新增時(shí)會(huì)強(qiáng)制你選擇租戶)
-
未知錯(cuò)
- 文件刪除,重新上傳,任務(wù)定義選擇之后,顯示的是之前的老路經(jīng),但是資源中心顯示的是正確的路徑
登錄hdfs查看,發(fā)現(xiàn)原先的文件還在,但是重新上傳的目錄下面又是沒有文件的 - 刪除目錄,創(chuàng)建子目錄,完成之后,發(fā)現(xiàn)目錄還是在外面
這些問題都沒有復(fù)現(xiàn),看現(xiàn)象就是本地資源表數(shù)據(jù)和HDFS上面的不一致,能想到的一種可能是,比如剛創(chuàng)建完目錄,緊接著要在HDFS上創(chuàng)建的時(shí)候,系統(tǒng)不穩(wěn)導(dǎo)致創(chuàng)建失敗,但是本地已經(jīng)創(chuàng)建成功了,導(dǎo)致兩邊數(shù)據(jù)不一致
- 文件刪除,重新上傳,任務(wù)定義選擇之后,顯示的是之前的老路經(jīng),但是資源中心顯示的是正確的路徑
總結(jié)
以上是生活随笔為你收集整理的dolphinscheduler 3.0.1 资源中心的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: chrome浏览器完整保存整个网页 可离
- 下一篇: 开始刷博弈。。