dolphinscheduler 3.0.1 资源中心
🔼上一集:dolphinscheduler 3.0.1 项目管理(三):任务
*️⃣主目录:dolphinscheduler 3.0.1功能梳理及源码解读
🔽下一集:dolphinscheduler 3.0.1数据质量
官网介绍
资源中心通常用于上传文件、UDF 函数和任务组管理。 对于 standalone环境,可以选择本地文件目录作为上传文件夹(此操作不需要Hadoop部署)。当然,你也可以 选择上传到 Hadoop 或者 MinIO 集群。在这种情况下,您需要有 Hadoop(2.6+)或 MinION 等相关环境。
🐬配置HDFS存储
🐠common.properties配置文件
**修改API下面的
common.properties
中hdfs存储配置信息**
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
指定基础目录,一开始没改,上传文件报文件不存在,原因是虚拟机部署了2.0,不同用户,相同目录,导致3.0没有权限创建目录
File /tmp/dolphinscheduler/dolphin/resources/3c24469c-5ea4-40ff-ab50-ed27ae49ccaa does not exist
**HA高可用模式下要把
core-site.xml
和
hdfs-site.xml
放到对应的conf目录下面**
sudocp /home/hadoop/hadoop/etc/hadoop/core-site.xml api-server/conf/
sudocp /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml api-server/conf/
*之前2.0遇到过这种错,原因是
fs.defaultFS=hdfs://192.xxx.xxx.xx:8020
,节点状态为standby,改成active状态的节点即可,但是每次hadoop节点状态切换,就要修改配置文件显然不合理,因此增加
yarn.resourcemanager.ha.rm.ids
和
core-site.xml
、
hdfs-site.xml
,成功解决下面的错,但是3.0依然报这个错,最终只能将
fs.defaultFS
改为active节点才好使*
Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error
at 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查看节点状态
hdfs haadmin -getServiceState 节点名称
**
🐠验证
🐬具体功能
🐠表结构
*真正使用的时候都是集群模式,因此对资源的操作除了本地资源表
t_ds_resources
,还涉及对HDFS的增删改查()相互对应的*
🐠文件管理
🐟文件夹
🐟代码
- 直接调用hadoop提供的工具类完成增删改查,不多言
- 连接hadoop集群亦是如此 调用调度自己封装的HadoopUtils,操作HDFS之前,先
getInstance()
,加载common.properties
中配置,连接hadoop集群,然后进行增删改查
🐠UDF管理
同上
🐠任务组管理
官方说明
任务组主要用于控制任务实例并发,旨在控制其他资源的压力(也可以控制Hadoop集群压力,不过集群会有队列管控)。您可在新建任务定义时,可配置对应的任务组,并配置任务在任务组内运行的优先级。
任务组的使用适用于由 worker 执行的任务,master负责执行的节点类型不受任务组控制,例如【switch】节点、【condition】节点、【sub_process】等
- 获取任务组资源: Master 在分发任务时判断该任务是否配置了任务组,如果任务没有配置,则正常抛给 worker 运行;如果配置了任务组,在抛给 worker 执行之前检查任务组资源池剩余大小是否满足当前任务运行,如果满足资源池 -1,继续运行;如果不满足则退出任务分发,等待其他任务结束唤醒。
- 释放与唤醒: 当获取到任务组资源的任务结束运行后,会释放任务组资源,释放后会检查当前任务组是否有任务等待,如果有则标记优先级最好的任务可以运行,并新建一个可以执行的event。该event中存储着被标记可以获取资源的任务id,随后在获取任务组资源然后运行。
🐟创建任务组
- 选择不到项目
- 排查奇怪的是没有查询出数据:
- 切换admin用户可以查询到前面任务定义好像也遇到过这种问题,看最新代码是单独增加了一个查询方法
🐟任务组处理
官方流程图如下(待后续研究到后台主要服务的时候再详细探究吧):
🐵其它
最近才用到资源中心的功能(对应2.0.5版本),就是上传python脚本,然后定义shell节点,直接运行python脚本,这种简单应用,创建子目录的的时候遇到过问题,稍微记录下:
- 跳转/创建子目录失败,都是前端的错,缺少参数和传值
没有传当前目录ID,api缺少参数报错(文件和UDF都缺少):
UDF子目录失败,原因也是没把当前目录id传过来:
- 租户不存在:这个其实不算错,一般管理员用户,都是没有租户的,新建的普通用户是没问题的(新增时会强制你选择租户)
- 未知错- 文件删除,重新上传,任务定义选择之后,显示的是之前的老路经,但是资源中心显示的是正确的路径 登录hdfs查看,发现原先的文件还在,但是重新上传的目录下面又是没有文件的- 删除目录,创建子目录,完成之后,发现目录还是在外面这些问题都没有复现,看现象就是本地资源表数据和HDFS上面的不一致,能想到的一种可能是,比如刚创建完目录,紧接着要在HDFS上创建的时候,系统不稳导致创建失败,但是本地已经创建成功了,导致两边数据不一致
版权归原作者 韧小钊 所有, 如有侵权,请联系我们删除。