blob: fdf05bd50bd35ca2d17feacc0dbfc679fce96215 [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{103:function(e,n,r){"use strict";r.r(n),r.d(n,"frontMatter",(function(){return c})),r.d(n,"metadata",(function(){return o})),r.d(n,"toc",(function(){return s})),r.d(n,"default",(function(){return l}));var t=r(3),i=r(7),a=(r(0),r(144)),c={title:"Submarine Launcher"},o={unversionedId:"designDocs/wip-designs/submarine-launcher",id:"designDocs/wip-designs/submarine-launcher",isDocsHomePage:!1,title:"Submarine Launcher",description:"\x3c!--",source:"@site/docs/designDocs/wip-designs/submarine-launcher.md",slug:"/designDocs/wip-designs/submarine-launcher",permalink:"/docs/designDocs/wip-designs/submarine-launcher",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/designDocs/wip-designs/submarine-launcher.md",version:"current",sidebar:"docs",previous:{title:"Generic Expeiment Spec",permalink:"/docs/designDocs/submarine-server/experimentSpec"},next:{title:"Cluster Server Design - High-Availability",permalink:"/docs/designDocs/wip-designs/submarine-clusterServer"}},s=[{value:"Introduction",id:"introduction",children:[]},{value:"Requirement",id:"requirement",children:[{value:"Cloud-Native Service",id:"cloud-native-service",children:[]},{value:"Service discovery",id:"service-discovery",children:[]}]},{value:"Design",id:"design",children:[{value:"Launcher",id:"launcher",children:[]},{value:"Launcher On Docker",id:"launcher-on-docker",children:[]},{value:"Launcher On Kubernetes",id:"launcher-on-kubernetes",children:[]},{value:"Launcher On Yarn",id:"launcher-on-yarn",children:[]},{value:"Launcher On AWS",id:"launcher-on-aws",children:[]},{value:"Launcher On GCP",id:"launcher-on-gcp",children:[]},{value:"Launcher On Azure",id:"launcher-on-azure",children:[]}]}],u={toc:s};function l(e){var n=e.components,c=Object(i.a)(e,["components"]);return Object(a.b)("wrapper",Object(t.a)({},u,c,{components:n,mdxType:"MDXLayout"}),Object(a.b)("div",{className:"admonition admonition-warning alert alert--danger"},Object(a.b)("div",{parentName:"div",className:"admonition-heading"},Object(a.b)("h5",{parentName:"div"},Object(a.b)("span",{parentName:"h5",className:"admonition-icon"},Object(a.b)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},Object(a.b)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"warning")),Object(a.b)("div",{parentName:"div",className:"admonition-content"},Object(a.b)("p",{parentName:"div"},"Please note that this design doc is working-in-progress and need more works to complete. "))),Object(a.b)("h2",{id:"introduction"},"Introduction"),Object(a.b)("p",null,"Submarine is built and run in Cloud Native, taking advantage of the cloud computing model."),Object(a.b)("p",null,"To give full play to the advantages of cloud computing.\nThese applications are characterized by rapid and frequent build, release, and deployment.\nCombined with the features of cloud computing, they are decoupled from the underlying hardware and operating system,\nand can easily meet the requirements of scalability, availability, and portability. And provide better economy."),Object(a.b)("p",null,"In the enterprise data center, submarine can support k8s/yarn/docker three resource scheduling systems;\nin the public cloud environment, submarine can support these cloud services in GCE/AWS/Azure;"),Object(a.b)("h2",{id:"requirement"},"Requirement"),Object(a.b)("h3",{id:"cloud-native-service"},"Cloud-Native Service"),Object(a.b)("p",null,"The submarine server is a long-running services in the daemon mode.\nThe submarine server is mainly used by algorithm engineers to provide online front-end functions such as algorithm development,\nalgorithm debugging, data processing, and workflow scheduling.\nAnd submarine server also mainly used for back-end functions such as scheduling and execution of jobs, tracking of job status, and so on."),Object(a.b)("p",null,"Through the ability of rolling upgrades, we can better provide system stability.\nFor example, we can upgrade or restart the workbench server without affecting the normal operation of submitted jobs."),Object(a.b)("p",null,"You can also make full use of system resources.\nFor example, when the number of current developers or job tasks increases,\nThe number of submarine server instances can be adjusted dynamically."),Object(a.b)("p",null,"In addition, submarine will provide each user with a completely independent workspace container.\nThis workspace container has already deployed the development tools and library files commonly used by algorithm engineers including their operating environment.\nAlgorithm engineers can work in our prepared workspaces without any extra work."),Object(a.b)("p",null,"Each user's workspace can also be run through a cloud service."),Object(a.b)("h3",{id:"service-discovery"},"Service discovery"),Object(a.b)("p",null,"With the cluster function of submarine, each service only needs to run in the container,\nand it will automatically register the service in the submarine cluster center.\nSubmarine cluster management will automatically maintain the relationship between service and service, service and user."),Object(a.b)("h2",{id:"design"},"Design"),Object(a.b)("p",null,Object(a.b)("img",{alt:"cloud-service",src:r(214).default})),Object(a.b)("h3",{id:"launcher"},"Launcher"),Object(a.b)("p",null,"The submarine launcher module defines the complete interface.\nBy using this interface, you can run the submarine server, and workspace in k8s / yarn / docker / AWS / GCE / Azure."),Object(a.b)("h3",{id:"launcher-on-docker"},"Launcher On Docker"),Object(a.b)("p",null,"In order to allow some small and medium-sized users without k8s/yarn to use submarine,\nwe support running the submarine system in docker mode."),Object(a.b)("p",null,"Users only need to provide several servers with docker runtime environment.\nThe submarine system can automatically cluster these servers into clusters, manage all the hardware resources of the cluster,\nand run the service or workspace container in this cluster through scheduling algorithms."),Object(a.b)("h3",{id:"launcher-on-kubernetes"},"Launcher On Kubernetes"),Object(a.b)("p",null,"submarine operator"),Object(a.b)("h3",{id:"launcher-on-yarn"},"Launcher On Yarn"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-aws"},"Launcher On AWS"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-gcp"},"Launcher On GCP"),Object(a.b)("p",null,"[TODO]"),Object(a.b)("h3",{id:"launcher-on-azure"},"Launcher On Azure"),Object(a.b)("p",null,"[TODO]"))}l.isMDXComponent=!0},144:function(e,n,r){"use strict";r.d(n,"a",(function(){return d})),r.d(n,"b",(function(){return h}));var t=r(0),i=r.n(t);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function c(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function o(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?c(Object(r),!0).forEach((function(n){a(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function s(e,n){if(null==e)return{};var r,t,i=function(e,n){if(null==e)return{};var r,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t<a.length;t++)r=a[t],n.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var u=i.a.createContext({}),l=function(e){var n=i.a.useContext(u),r=n;return e&&(r="function"==typeof e?e(n):o(o({},n),e)),r},d=function(e){var n=l(e.components);return i.a.createElement(u.Provider,{value:n},e.children)},b={inlineCode:"code",wrapper:function(e){var n=e.children;return i.a.createElement(i.a.Fragment,{},n)}},p=i.a.forwardRef((function(e,n){var r=e.components,t=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=l(r),p=t,h=d["".concat(c,".").concat(p)]||d[p]||b[p]||a;return r?i.a.createElement(h,o(o({ref:n},u),{},{components:r})):i.a.createElement(h,o({ref:n},u))}));function h(e,n){var r=arguments,t=n&&n.mdxType;if("string"==typeof e||t){var a=r.length,c=new Array(a);c[0]=p;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o.mdxType="string"==typeof e?e:t,c[1]=o;for(var u=2;u<a;u++)c[u]=r[u];return i.a.createElement.apply(null,c)}return i.a.createElement.apply(null,r)}p.displayName="MDXCreateElement"},214:function(e,n,r){"use strict";r.r(n),n.default=r.p+"assets/images/multi-dc-cloud-420a103fad1e4af8a56287f083760d92.png"}}]);