理论上说,你配置后就能执行任何命令。实际上也可以。
cube-studio是利用rancher(理解为k8s的升级版)管理的
操作步骤:整1个docker镜像,输入参数执行,镜像内的命令
执行步骤:
1.你拉1个cenos7的服务器环境,然后将本地所需要的内容,打包好你需要的环境,可以参考这篇
看这一篇就够,docker往镜像中的Hosts中写入值(docker执行shell脚本)_我要用代码向我喜欢的女孩表白的博客-CSDN博客
2.镜像打包后,使用docker run本地测试
3.提交到自己的镜像仓库
4.在cube中创建仓库模板,就写你的镜像仓库
5.在cube中创建镜像,就写你的镜像地址
6.在cube中创建模板组件,就与你的执行命令的脚本与配置参数对应
7.拖拽组件,输入参数,执行命令
搭建私有仓库我用的是harbor:
harbor配置远程仓库_我要用代码向我喜欢的女孩表白的博客-CSDN博客
建立好私有仓库后
远程镜像仓库
---------------
harbor管理页面
http://192.168.9.56:83/
账号密码
admin
Harbor12345
-------------
镜像推送过程
1.登录
sudo docker login 192.168.9.56:83
2.打标记
sudo docker image tag 【本地镜像的名字:版本】 192.168.9.56:83/cube_public/【新名称】
sudo docker image tag sparkdemo:v4 192.168.9.56:83/cube_public/sparkdemo
3.推送
sudo docker push 192.168.9.56:83/cube_public/sparkdemo
cube-studio上的应用
在导航栏目录上选择,训练-》仓库,点击右边的+号,新增
填上,你平常在服务端登录harbor的东西,然后点击保存
新增界面
-------------------
名称【你harbor中建立的项目仓库名,当然,你也可以自己写一个名字,他不会使用此名称去连接harbor,仅仅是作为cube-studio中的仓库名称】
名称:cube_public
域名【你使用harbor登录的网址名,也是login harbor的地址名】
域名:192.168.9.56:83
用户名【你harbor登录时候用的名字】
用户名:admin
密码【用户名对应的密码】
密码:Harbor12345
然后点击,训练-》模板镜像,点击旁边的+号新增
模板新增
---------------------
仓库【从你之前构建的仓库中选择】
仓库:cube_public
非常重要,名称【你平常怎么拉取镜像的,就写这个pull后面的整个内容,从仓库到版本都要写上,我之前就在这里踩了坑,不写版本默认,拉取latest版本】
名称:192.168.9.56:83/cube_public/sparkdemo
描述:随便写
我的镜像是提前已经全部构建好了,所有的配置,是独立进行配置的,所以不用写其他
然后保存
任务构建,训练-》任务模板
任务模板就是,你在任务流中,可以拿出来使用的算子(镜像整体)
任务模板填写
-----------------------
功能分类【工作流平台,点击左边可以拖拽的那些模块,这里选择数据处理】
功能分类:数据处理
镜像【你刚刚构建的镜像仓库模板】
镜像:xxx自己选择
名称【拖拽的算子,名称】
名称:spark2
版本【选择release,公开的,都能使用你创建的算子】
版本:release
描述:随便填
启动参数【你输入的参数,注意不是命令,他不能作为docker容器内的命令,马上就会介绍这个东西,可以参考他下面的提示内容】
启动参数:
{
"参数": {
"workdir": {
"type": "str",
"item_type": "str",
"label": "启动目录",
"require": 0,
"choice": [],
"range": "",
"default": "/mnt/xx",
"placeholder": "",
"describe": "启动目录",
"editable": 1,
"condition": "",
"sub_args": {}
},
"command": {
"type": "str",
"item_type": "str",
"label": "启动命令",
"require": 1,
"choice": [],
"range": "",
"default": "sh start.sh",
"placeholder": "",
"describe": "启动命令",
"editable": 1,
"condition": "",
"sub_args": {}
}
}
}
如果你要配置hosts,DockerFile不能配置,他这里也可以配置,并且会生效
他等价于
sudo docker run -d --name demo --add-host hadoop01:192.168.9.199 --add-host hadoop02:192.168.9.56 --add-host hadoop03:192.168.9.57 demo.jar
保存后,打开任务流,选择或创建一个,进行工作
------------------------------------------------------------------------------------------------
插入一段,我踩的坑,问了cube开源群的作者我才明白。
不着急,先把下面的图看一遍,看完,我会说流程。
开源sh脚本要与你的模板的-配置参数对应
我写的dockerfile的内容
官方shell脚本中的内容
任务模板中的启动参数内容:
{
"shell": {
"--command": {
"type": "str",
"item_type": "str",
"label": "执行命令",
"require": 1,
"choice": [],
"range": "",
"default": "spark-submit xx",
"placeholder": "",
"describe": "执行命令",
"editable": 1,
"condition": "",
"sub_args": {}
}
}
}
工作流执行界面(拿任务流来做演示)
他除了自定义镜像外,只支持一种,任务模板的执行方式。通过传递参数,执行脚本(我之前是想着自定义镜像能直接在参数界面执行linux命令,我就把自定义镜像的参数copy到组件中,结果执行失败,后面去群里问开源作者们,得到的流程是)
自定义任务模板的流程:
在--command中写的其实只是参数(他与参数模板对应),点击运行后,他会去DockerFile中,找到对应的sh脚本(或者其他脚本py或者jar之类),并且去sh脚本中找到,$command,将值传过去
注意,你在任务模板中写的参数名(如command),必须和dockerFile中的执行命令(如sh start.sh)中的command相对应,而且针对不通的脚本,有不同对应参数的方法,不可自己乱写脚本的对应参数,应当去查看github中的脚本,或者视频中对应参数的方法,当然也可以去开源群里问
cube-studio/start.sh at master · tencentmusic/cube-studio · GitHub
附送开源群连接
--------------------------------------------------------------------------------------------------
使用
-----------
从左边拉出你刚刚创建的算子
在command中执行,docker中的命令,点击旁边的保存,将右边导航栏,拉在最上面,点击run
第一次很慢,后面就会很快
另外大家也可以打开容器,查看详细情况