(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{136: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"},205:function(e,n,r){"use strict";r.r(n),n.default=r.p+"assets/images/multi-dc-cloud-420a103fad1e4af8a56287f083760d92.png"},98: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(136)),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(205).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}}]);