# datashark **Repository Path**: hackyun/datashark ## Basic Information - **Project Name**: datashark - **Description**: DataShark是一站式大数据开发平台,支持通用组件(SHELL、JAVA、PYTHON、SQL、SPARK、HTTP、MR、FLINK_STREAM、HIVECLI)、逻辑节点(SUB_PROCESS、DEPENDENT、CONDITIONS、SWITCH)、数据集成(DATAX、CHUNJUN)、数据质量等任务调度 对标 Apache Dolphinscheduler,做稳定的适合商业大数据 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2024-08-23 - **Last Updated**: 2024-08-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DataShark ## 介绍 DataShark是一站式大数据开发平台,支持通用组件(SHELL、JAVA、PYTHON、SQL、SPARK、HTTP、MR、FLINK_STREAM、HIVECLI)、逻辑节点(SUB_PROCESS、DEPENDENT、CONDITIONS、SWITCH)、数据集成(DATAX、CHUNJUN)、数据质量等任务调度 对标 Apache Dolphinscheduler,做稳定的适合商业大数据一站式开发平台 ## 软件架构 ![输入图片说明](https://foruda.gitee.com/images/1722480212511624880/0911c369_509262.jpeg "系统架构图.jpg") ## 安装教程 ### 集群安装 集群节点规划 : ```shell 192.168.33.1 node1 192.168.33.2 node2 192.168.33.3 node3 192.168.33.4 node4 192.168.33.5 node5 ``` 前提准备,需要安装mysql和zookeeper。然后准备node1,node2,node3,node4,node5 5台机器,部署计划是,其中 node1,node2 安装 master 服务, node3,node4,node5安装 worker 服务,alert server安装在node5中,api server 安装在node1中。以node1为主节点(所谓的主节点就是可以ssh免密到其他节点的节点) #### 基础组件准备 参考 IDEA本地调试 基础组件准备,准备jdk、maven、mysql、zookeeper #### 主节点安装及配置 1、编译源码,IDEA本地调试,后端源码编译,编译好的源码是 ``datashark-dist/target/datashark-1.0.0-bin.tar.gz`` 2、解压datashark-1.0.0-bin.tar.gz放入到比如说/opt下,命名为 datashark。如下 : ```shell [root@node1 datashark]# pwd /opt/datashark ``` 3、进入 /opt/datashark/bin/env 目录下,对datashark_env.sh和install_env.sh进行配置 编辑datashark_env.sh ```shell [root@node1 env]# cat datashark_env.sh # 配置JAVA_HOME export JAVA_HOME=/usr/share/jdk1.8.0_111 # spring profiles选择mysql,配置mysql jdbc url、用户名和密码 export DATABASE=mysql export SPRING_PROFILES_ACTIVE=${DATABASE} export SPRING_DATASOURCE_URL="jdbc:mysql://192.168.33.1:3306/datashark" export SPRING_DATASOURCE_USERNAME="root" export SPRING_DATASOURCE_PASSWORD="root@123" # DolphinScheduler server related configuration export SPRING_CACHE_TYPE=${SPRING_CACHE_TYPE:-none} export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-UTC} export MASTER_FETCH_COMMAND_NUM=${MASTER_FETCH_COMMAND_NUM:-10} # 配置注册中心类型和地址 export REGISTRY_TYPE=${REGISTRY_TYPE:-zookeeper} export REGISTRY_ZOOKEEPER_CONNECT_STRING=${REGISTRY_ZOOKEEPER_CONNECT_STRING:-192.168.33.1:2181} ``` 编辑install_env.sh ```shell # ipds中配置的是所有的要部署的节点列表,使用逗号进行分割 ips=${ips:-"192.168.33.1,192.168.33.2,192.168.33.3,192.168.33.4,192.168.33.5"} # ssh的默认端口 sshPort=${sshPort:-"22"} # 配置master节点的列表,多master使用逗号分隔 masters=${masters:-"192.168.33.1,192.168.33.2"} # 配置worker节点的列表,多worker使用逗号分隔 workers=${workers:-"192.168.33.3:default,192.168.33.4:default,192.168.33.5:default"} # 配置alert节点的列表,多alert使用逗号分隔 alertServer=${alertServer:-"192.168.33.5"} # 配置apiServers节点的列表,多apiServers使用逗号分隔 apiServers=${apiServers:-"192.168.33.1"} # 配置CeaStudio部署路径 installPath=${installPath:-"/opt/datashark"} # 配置使用什么用户进行CeaStudio部署,一般都使用root deployUser=${deployUser:-"root"} ``` 4、数据库和配置初始化 参考 IDEA本地调试 -> 数据库和配置初始化,同时将修改好的common.properties分发到各个模块的conf中(使用scp到其它节点的/opt下) #### 主节点进行脚本启动 ```shell [root@node1 ~]# cd /opt/datashark [root@node1 datashark]# pwd /opt/datashark 启动 [root@node1 datashark]# sh bin/start-all.sh 停止 [root@node1 datashark]# sh bin/stop-all.sh 查看服务的状态 [root@node1 datashark]# sh bin/status-all.sh ``` #### 访问 http://192.168.33.1:3611/datashark/ui/login admin/datashark@123 ### IDEA本地调试 #### 基础组件准备 ```shell 1、JDK : v1.8.x (当前暂不支持 jdk 11) 2、Maven : v3.5+ 3、v16.13+,安装pnpm // 全局安装 npm install pnpm -g //查看源 pnpm config get registry //切换淘宝源 pnpm config set registry https://registry.npmmirror.com/ 4、安装Zookeeper 3.6.3(大数据平台用的就是这个zookeeper版本,ds复用大数据平台的zookeeper)。使用最新DS,里面使用的是 curator 5.3.0 Curator 5.0 支持zookeeper3.6.X,不再支持 zookeeper3.4.X Curator 4.X 支持zookeeper3.5.X,软兼容3.4.X Curator 2.X 支持zookeeper3.4.X 5、安装mysql mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.44 | +-----------+ 1 row in set (0.00 sec) 6、编译源码 git clone https://gitee.com/qzw2015/datashark.git cd datashark git checkout dev 后端源码编译 mvn clean install -Prelease -Dmaven.test.skip=true -Dspotless.check.skip=true ``` #### 数据库和配置初始化 ```shell 2.1、初始化数据库 source /Users/xxx/IdeaProjects/datashark/datashark-dao/src/main/resources/sql/datashark_mysql.sql; 2.2、配置common.properties重点配置 # 本地目录,存放封装的脚本 data.basedir.path=/tmp/datashark # 选择存储介质,比如说HDFS;其中资源中心的资源以及租户目录 resource.storage.type=HDFS # 资源中心的根目录 resource.storage.upload.base.path=/datashark # HDFS操作使用哪个用户,一般使用hdfs用户 resource.hdfs.root.user=root # hdfs的defaultFS,如果是ha模式,core-site.xml和hdfs-site.xml放入resources下,这里填写hdfs ha路径 resource.hdfs.fs.defaultFS=hdfs://192.168.33.1:8020 # 是否为开发模式,不管生产和测试情况,我建议开启。好定位问题。不过需要定时删除,不然会有很多jar包占用磁盘空间 development.state=true # yarn端口 resource.manager.httpaddress.port=8088 # 如果yarn是HA,这里配置yarn的多个ip地址,用逗号分隔。非HA模式,不动 yarn.resourcemanager.ha.rm.ids= # 如果是单个yarn,node1直接修改为yarn的ip地址。如果是HA模式,这里不动 yarn.application.status.address=http://node1:%s/ws/v1/cluster/apps/%s # 如果是单个yarn,node1直接修改为yarn的ip地址。如果是HA模式,这里不动 yarn.application.link.url=http://node1:%s/cluster/app/%s 2.3、配置各个服务的application.yaml 注意 : 主要配置 zookeeper连接地址和mysql地址即可,不赘述 ``` #### 组件启动 ```shell 1、MasterServer:在 Intellij IDEA 中执行 com.datashark.server.master.MasterServer 中的 main 方法,并配置 VM Options -Dlogging.config=classpath:logback-spring.xml -Ddruid.mysql.usePingMethod=false -Dspring.profiles.active=mysql 2、WorkerServer:在 Intellij IDEA 中执行 com.datashark.server.worker.WorkerServer 中的 main 方法,并配置 VM Options -Dlogging.config=classpath:logback-spring.xml -Ddruid.mysql.usePingMethod=false -Dspring.profiles.active=mysql 3、ApiApplicationServer:在 Intellij IDEA 中执行 com.datashark.api.ApiApplicationServer 中的 main 方法,并配置 VM Options -Dlogging.config=classpath:logback-spring.xml -Dspring.profiles.active=api,mysql 启动完成可以浏览 Open API 文档,地址为 http://localhost:3611/datashark/swagger-ui/index.html ``` #### 前端启动 ```shell cd datashark-ui npm run dev http://localhost:5173/ admin/datashark@123 ``` ## 快速体验 ### 登录 http://192.168.33.1:3611/datashark/ui/login admin/datashark@123 ![img.png](images/login_img.png) ### 安全中心设置租户(租户对应linux上的用户) #### 创建一个租户 ![img.png](images/create_tenant.png) 注意 : 因为hadoop集群是手动搭建的,都是root启动的,所以使用了root,一般针对hdp、cdh都是用hdfs用户作为租户 #### 用户绑定对应的租户 ![img.png](images/user_set_tenant.png) ### 项目管理 #### 创建项目 ![img.png](images/create_project.png) #### 工作流定义 -> 创建工作流 ![img.png](images/create_workflow.png) #### 创建工作流工作台 ![img.png](images/workflow_display.png) #### 创建一个SHELL任务的DAG流程 ![img.png](images/shell_dag_flow.png) #### 上线 ![img.png](images/shell_dag_flow_online.png) 注意 : 点击上线会提示是否确定上线该工作流,点击确认。然后会提示 现在想去配置该工作流定时?取消即可 #### 启动 ![img.png](images/shell_dag_flow_start.png) 会有对应的框弹出,有启动参数设置,如下 : 设置对应的root租户 ![img.png](images/shell_dag_flow_start_param.png) #### 工作流实例中查看对应的流程实例 ![img.png](images/view_shell_dag_flow_instance.png) #### 工作流实例详情 ![img.png](images/shell_dag_flow_instance_detail.png) #### 查看任务结果及日志 taskA任务详情 : ![img.png](images/taskA_detail.png) taskA任务日志 : ![img.png](images/taskA_log.png) ## 参与贡献 1. Fork https://gitee.com/qzw2015/datashark.git 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 对比 Apache Dolphinscheduler ### 优势 纯属原始Apache Dolphinscheduler PMC个人开源,灵活可变。去掉无用冗余功能,解决社区未解决BUG ### 对比 1、根据Apache Dolphinscheduler 3.2.1 release版本拉取分支 2、针对YARN任务,不单单判断SHELL退出码为0就认为成功(比如说Flink Application默认,SHELL退出,任务直接成功,这样DataShark就不能跟踪任务状态),还要判断YARN上的状态及YARN URL支持 页面展示链接跳转和复制 3、去掉无用的任务,保留SHELL、JAVA、PYTHON、SQL、SPARK、HTTP、MR、FLINK_STREAM、HIVECLI、SUB_PROCESS、DEPENDENT、CONDITIONS、SWITCH、DATAX、CHUNJUN及数据质量任务 4、修复流式任务的各种BUG,很多...,增加流式任务本地参数传递 5、增强内置参数的支持,比如说 system.task.execute.path,这玩意只能在Worker中设置,而Dolphinscheduler确在Master中设置,等等吧 6、支持子流程之前的输出参数结果传递 7、解决子流程不能继承父流程租户的BUG修复 8、前端支持流任务和批任务历史跳转回退 9、SHELL结果ERROR输出判断增强 10、解决子流程不能被kill掉BUG 11、JAVA任务JAVA Class命名支持非数字开头的字母和下划线,以及支持变量结果的传递。MR、Spark待测试解决 个人声明 : 当前版本已无阻塞BUG,放心使用。若有问题,及时联系 ## 规划 ### datashark-java-sdk待开源 ### 解决边缘性的BUG以及数据集成设计开发 ## 博客 https://segmentfault.com/u/journey_64224c9377fd5/articles ## License Taier is under the Apache 2.0 license. See the LICENSE file for details.