Coder Social home page Coder Social logo

plink's Introduction

Plink【已停止迭代】

Platform for Apache Flink

概述

旨在基于 Apache Flink 封装构建上层平台。
提供常见的作业管理功能。如作业的创建,删除,编辑,更新,保存,启动,停止,重启,管理,多作业模板配置等。
(开发中)Flink SQL 编辑提交功能。如 SQL 的在线开发,智能提示,格式化,语法校验,保存,采样,运行,测试。

目标

我们的目标,大家共同参与,赶紧 联系我们,一起进步吧!(只要你主动,我们就会有故事 。。。)

特性

  1. 作业管理(v0.1)

    • [√] 作业创建,删除,编辑,更新,保存,上传 Jar,常规参数配置。
    • [√] 作业启动,停止,重启,停止,删除。
    • [√] 批量的作业启动,停止,重启,停止,删除。
    • [√] 作业列表的查看,过滤,分页。
    • [√] 作业实例列表的查看,过滤,分页。
    • [√] 本地化部署(Windows / Linux)。
    • [√] 容器化部署(Docker)。
  2. Flink SQL(v0.2 开发中)

    • [_] 可视化 Flink SQL 编辑器。
    • [_] SQL 的在线开发,智能提示,格式化,语法校验,保存。
    • [_] SQL 的采样,测试,运行,停止,重启等。
    • [_] Flink on yarn
    • [_] 任务监控信息采集展示
    • [_] 任务异常自动重试

项目部署

  1. 在 Linux 上部署 Plink
  2. 使用 Docker 部署 Plink

使用手册

  1. 使用手册
    1.1. 运行 Word Count 作业

项目文档

  1. Plink 技术栈
  2. 使用手册
    2.1. 运行 Word Count 作业

参与贡献

如果您对此项目感兴趣,欢迎进行代码 贡献
我们建议用 IntelliJ IDEA 来开发项目,IDEA 下载 https://www.jetbrains.com/idea/
这是一个活跃的开源项目,如果您对此项目有任何的问题或者建议,请与我们 联系

联系我们

  • QQ 群 : 602995595(只要你主动,我们就会有故事 。。。)

plink's People

Contributors

chaixiaoxue avatar coing avatar dependabot[bot] avatar sllence avatar thorntree avatar trevor-zhang avatar wangyangting avatar yann-su avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plink's Issues

[BUG] DTO未重写toString方法

描述一下 bug
DTO没有重写toString方法,导致日志看不见详细信息

2020-09-04 14:52:16.861 WARN [common-Thread-2] c.g.h.p.schedule.task.InstanceStatusSyncTask : asyncSubmitJob error jobInstance=com.github.hairless.plink.model.pojo.JobInstance@1a422382

** 使用的Plink版本**
0.1.0

重现过程
具体的重现步骤:

  1. plink-model

屏幕截图
image

其他内容
可添加任何关于bug的其他内容到此处

[FEATURE] v0.1 的前端重构

  1. 将 ViewUI 换成 AntDesign
  2. 移除原来的 TypeScript
  3. 增加登录页
  4. 路由菜单动态加载(方便与权限整合)
  5. 增加顶部菜单
  6. 整体 UI 样式风格翻新

flink sql任务中sql定义中有反引号任务启动失败

描述一下 bug
创建一个flink sql类型任务,定义sql时有用到反引号,任务启动失败

** 使用的Plink版本**
0.2.0

重现过程
具体的重现步骤:

  1. 创建一个flink sql类型任务,编辑完sql(sql中有反引号)
  2. 启动任务,任务启动失败

Docker Pull has an error

➜ ~ docker pull registry.cn-hangzhou.aliyuncs.com/hairless/plink:master
Error response from daemon: manifest for registry.cn-hangzhou.aliyuncs.com/hairless/plink:master not found

[FEATURE] checkpoint信息采集

1、自定义reporter,上报checkpoint信息
2、添加数据库表,用于落地数据
3、提供添加和查询接口
4、在reporter里通过平台添加接口进行上报

前端todo

  • 前端运行server请求不到后端接口
  • 列表页筛选条件没有和页面路由同步
  • 任务列表页增加类型和状态的筛选
  • 根据枚举接口获取枚举详情(任务状态、任务类型、客户端版本)
  • 任务详细启动后需要定时更新任务状态
  • 任务详情的实例列表需要分页
  • 日期的展示需要格式化
  • 详情页的任务停止调用的启动接口

//需要后端配合

  • 根据任务状态现在任务操作,例:运行中任务不可编辑,不可启动,不可删除,停止中任务不可停止

[FEATURE] Checkpoint & Savapoint

功能点

  1. Checkpoint & Savapoint 平台默认配置和页面配置
  2. 手动触发Savapoint
  3. stop with Savapoint
  4. Checkpoint 信息自动上报
  5. 历史状态列表
  6. 新增自动从最新的状态(cp or sp)恢复选项
  7. 任务重试时状态恢复
  8. 手动启动状态恢复

[BUG] 在构建的时候会报错 java.lang.String can't cast to be java.lang.String[]

描述一下 bug
简单的描述一下bug
在构建的时候会报错 java.lang.String can't cast to be java.lang.String[]
原因是因为这里下面截图中还要又一个子级的 的,而源码中直接写成 ,我本地改过来就可以了。

** 使用的Plink版本**
例:0.1.0

重现过程
具体的重现步骤:

  1. 哪个页面/模块 '...'
  2. 点击了 'clean install"
  3. 看到了xxx错误

屏幕截图
如果有的话,请贴一下截图帮助我们更快的定位问题
image

其他内容
可添加任何关于bug的其他内容到此处

[FEATURE] DTO重写toString方法,方便查看日志

您的功能请求是否与问题有关?请描述。
在查看日志是由于DTO没有重写toString,导致无法查看详细消息
2020-09-04 14:52:16.861 WARN [common-Thread-2] c.g.h.p.schedule.task.InstanceStatusSyncTask : asyncSubmitJob error jobInstance=com.github.hairless.plink.model.pojo.JobInstance@1a422382
描述您想要的解决方案
// BaseModel 重写toString :
public String toString() {
return ToStringBuilder.reflectionToString(this);
}

UI 优化

  1. 顶部左侧 LOGO 改成 Plink
  2. 列表的选择器改成触发改变
  3. 作业并行度的输入改成 数字输入框

[FEATURE] 支持加载CDH发行版的Hadoop配置

您的功能请求是否与问题有关?请描述。
当机器上的HADOOP发行版是CDH时,机器可能没有HADOOP_HOME这个变量,且HADOOP_CONF_DIR是和HADOOP分开存放的
例如:

$> ls -l /opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3
drwxr-xr-x  2 root root  4096 Mar 26  2019 bin
drwxr-xr-x 26 root root  4096 Aug 25  2017 etc
drwxr-xr-x  4 root root  4096 Aug 25  2017 include
drwxr-xr-x  2 root root 61440 Nov  2 12:21 jars
drwxr-xr-x 37 root root  4096 Aug 25  2017 lib
drwxr-xr-x  2 root root  4096 Aug 25  2017 lib64
drwxr-xr-x  3 root root  4096 Aug 25  2017 libexec
drwxr-xr-x  2 root root  4096 Aug 25  2017 meta
drwxr-xr-x  3 root root  4096 Aug 25  2017 share

$> readlink -f /etc/hadoop/conf
/etc/hadoop/conf.cloudera.yarn


$> ls -l /opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3/etc/hadoop
lrwxrwxrwx 1 root root   10 Aug 25  2017 conf.dist -> conf.empty
drwxr-xr-x 2 root root 4096 Dec 11 16:20 conf.empty
drwxr-xr-x 2 root root 4096 Aug 25  2017 conf.impala
drwxr-xr-x 2 root root 4096 Aug 25  2017 conf.pseudo
drwxr-xr-x 2 root root 4096 Aug 25  2017 conf.pseudo.mr1

描述您想要的解决方案
希望加载HADOOP配置时,能够直接定义HADOOP_CONF_DIR。

现在的情况
final String CONF_SUFFIX = "/etc/hadoop";
Collection<File> files = FileUtils.listFiles(new File(hadoopHome, CONF_SUFFIX), new String[]{"xml"}, false);


CDH的配置 HADOOP_CONF_DIR= /etc/hadoop/conf
无法指定CDH的配置,因为后缀定死了

CDH的HADOOP_HOME=/opt/cloudera/parcels/CDH-5.12.1-1.cdh5.12.1.p0.3
无法指定CDH的配置,因为CDH的HADOOP_HOME/etc/hadoop不是实际的配置文件

其他内容

Local模式下,提交Job报错

Cluster.mode:local

java.lang.NullPointerException: null
at org.apache.flink.util.Preconditions.checkNotNull(Preconditions.java:61)
at org.apache.flink.client.program.PackagedProgram.(PackagedProgram.java:116)
at org.apache.flink.client.program.PackagedProgram.(PackagedProgram.java:61)
at org.apache.flink.client.program.PackagedProgram$Builder.build(PackagedProgram.java:585)
at com.github.hairless.plink.service.impl.LocalFlinkClusterServiceImpl.submitJob(LocalFlinkClusterServiceImpl.java:61)
at com.github.hairless.plink.schedule.task.SubmitJobTask.asyncSubmitJobTask(SubmitJobTask.java:55)
at com.github.hairless.plink.schedule.task.SubmitJobTask$$FastClassBySpringCGLIB$$86b74b1f.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

yarn模式下报Could not build the program from JAR file

bug描述:
在yarn模式下,提交任务提交失败,查看日志报Could not build the program from JAR file

使用的Plink版本
例:0.2.0

重现过程
具体的重现步骤:
1.在作业列表启动任务,启动任务失败
2.查看日志,报Could not build the program from JAR file

屏幕截图
image

Plink v0.1 dev plan items

v0.1 dev plan items

  1. 原型
  2. 前端
    1. 作业管理
      1. 作业列表
        1. 新建作业
        2. 查询作业
        3. 作业启动/批量
        4. 作业重启/批量
        5. 作业停止/批量
        6. 作业删除/批量
      2. 实例列表
        1. 查询实例
        2. 实例详情
        3. 删除实例
    2. 作业详情
      1. 配置详情
      2. 作业启动
      3. 作业重启
      4. 作业停止
      5. 作业删除
      6. 实例列表(单任务维度)
    3. 作业编辑
      1. 配置编辑
      2. 上传jar
      3. jar列表
  3. 后端
    1. 接口
      1. 新建作业接口
      2. 更新作业接口
      3. 查询作业接口
      4. 删除作业接口
      5. 启动作业接口
      6. 重启作业接口
      7. 停止作业接口
      8. 文件上传接口(Jar)
      9. 文件名获取接口
    2. 定时任务
      1. 作业状态轮询
      2. 定时提交新建实例(待确认)

领取任务的评论模板

注 : 要参与一起贡献的,评论后请加下面的 QQ 群.
如 :

  1. 前端 / 作业列表
  2. 前端 / 作业管理 / 作业列表 / 作业启动
  3. 后端 / 启动作业接口

联系方式

  • QQ 群 : 602995595

plink 0.2新功能点收集

plink 新功能点收集

以下是暂定的Plink 0.2待支持的功能点,有任何新想法请在下面追加评论,
功能点收集完成后会在qq群里进行投票来确定最终的功能点,欢迎大家积极参与

  • 支持flink sql任务
  • 支持flink on yarn
  • 支持查看启动日志
  • flink metrics采集与展示
  • 支持监控报警
  • 支持系统自动重试
  • 支持用户体系

ui optimize 2020-05-25

  1. 作业编辑相关的配置放到一个标签页下
  2. 编辑时默认的 clientVersion = 1.10.x

release plink 0.1.0

项目打包
maven release
git release
git new batch 0.1
docker 发版
完善文档

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.