blob: 87afe28ca200620e19be4b9bdc8cbb3ae7c1ffb1 [file] [log] [blame]
/*! For license information please see 0b8045ed.252069de.js.LICENSE.txt */
(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{113:function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d}));var r=n(0),a=n.n(r);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function A(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var i=a.a.createContext({}),s=function(e){var t=a.a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):A(A({},t),e)),n},u=function(e){var t=s(e.components);return a.a.createElement(i.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.a.createElement(a.a.Fragment,{},t)}},b=a.a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,i=c(e,["components","mdxType","originalType","parentName"]),u=s(n),b=r,d=u["".concat(l,".").concat(b)]||u[b]||p[b]||o;return n?a.a.createElement(d,A(A({ref:t},i),{},{components:n})):a.a.createElement(d,A({ref:t},i))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,l=new Array(o);l[0]=b;var A={};for(var c in t)hasOwnProperty.call(t,c)&&(A[c]=t[c]);A.originalType=e,A.mdxType="string"==typeof e?e:r,l[1]=A;for(var i=2;i<o;i++)l[i]=n[i];return a.a.createElement.apply(null,l)}return a.a.createElement.apply(null,n)}b.displayName="MDXCreateElement"},115:function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function a(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var l=a.apply(null,r);l&&e.push(l)}else if("object"===o)for(var A in r)n.call(r,A)&&r[A]&&e.push(A)}}return e.join(" ")}e.exports?(a.default=a,e.exports=a):void 0===(r=function(){return a}.apply(t,[]))||(e.exports=r)}()},119:function(e,t,n){"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}t.a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},121:function(e,t,n){"use strict";var r=n(0),a=n.n(r),o=n(115),l=n.n(o);n(49);t.a=function(e){var t=e.children,n=e.classNames,r=e.fill,o=e.icon,A=e.type,c=null;switch(A){case"danger":c="alert-triangle";break;case"success":c="check-circle";break;case"warning":c="alert-triangle";break;default:c="info"}return a.a.createElement("div",{className:l()(n,"alert","alert--"+A,{"alert--fill":r,"alert--icon":!1!==o}),role:"alert"},!1!==o&&a.a.createElement("i",{className:l()("feather","icon-"+(o||c))}),t)}},122:function(e,t,n){"use strict";var r=n(0),a=n(123);t.a=function(){var e=Object(r.useContext)(a.a);if(null==e)throw new Error("`useUserPreferencesContext` is used outside of `Layout` Component.");return e}},123:function(e,t,n){"use strict";var r=n(0),a=Object(r.createContext)(void 0);t.a=a},124:function(e,t,n){"use strict";var r=n(0),a=n.n(r),o=n(122),l=n(119),A=n(50),c=n.n(A),i=37,s=39;t.a=function(e){var t=e.block,n=e.children,A=e.defaultValue,u=e.values,p=e.groupId,b=Object(o.a)(),d=b.tabGroupChoices,m=b.setTabGroupChoices,j=Object(r.useState)(A),f=j[0],O=j[1],h=Object(r.useState)(!1),k=h[0],v=h[1];if(null!=p){var S=d[p];null!=S&&S!==f&&u.some((function(e){return e.value===S}))&&O(S)}var y=function(e){O(e),null!=p&&m(p,e)},N=[],R=function(e){e.metaKey||e.altKey||e.ctrlKey||v(!0)},U=function(){v(!1)};return Object(r.useEffect)((function(){window.addEventListener("keydown",R),window.addEventListener("mousedown",U)}),[]),a.a.createElement("div",null,a.a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:Object(l.a)("tabs",{"tabs--block":t})},u.map((function(e){var t=e.value,n=e.label;return a.a.createElement("li",{role:"tab",tabIndex:0,"aria-selected":f===t,className:Object(l.a)("tabs__item",c.a.tabItem,{"tabs__item--active":f===t}),style:k?{}:{outline:"none"},key:t,ref:function(e){return N.push(e)},onKeyDown:function(e){!function(e,t,n){switch(n.keyCode){case s:!function(e,t){var n=e.indexOf(t)+1;e[n]?e[n].focus():e[0].focus()}(e,t);break;case i:!function(e,t){var n=e.indexOf(t)-1;e[n]?e[n].focus():e[e.length-1].focus()}(e,t)}}(N,e.target,e),R(e)},onFocus:function(){return y(t)},onClick:function(){y(t),v(!1)},onPointerDown:function(){return v(!1)}},n)}))),a.a.createElement("div",{role:"tabpanel",className:"margin-vert--md"},r.Children.toArray(n).filter((function(e){return e.props.value===f}))[0]))}},125:function(e,t,n){"use strict";var r=n(0),a=n.n(r);t.a=function(e){return a.a.createElement("div",null,e.children)}},169:function(e,t,n){"use strict";n.r(t),t.default="data:image/png;base64,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"},170:function(e,t,n){"use strict";n.r(t),t.default=n.p+"assets/images/ClusterLogical-a82f8d136804e81aa069c9cb7f1f53ec.png"},61:function(e,t,n){"use strict";n.r(t),n.d(t,"frontMatter",(function(){return s})),n.d(t,"metadata",(function(){return u})),n.d(t,"rightToc",(function(){return p})),n.d(t,"default",(function(){return d}));var r=n(2),a=n(6),o=n(0),l=n.n(o),A=n(113),c=(n(121),n(124)),i=n(125),s={title:"Cluster",sidebar_label:"cluster",description:"Cluster"},u={unversionedId:"components/cluster",id:"components/cluster",isDocsHomePage:!1,title:"Cluster",description:"Cluster",source:"@site/docs/components/cluster.md",slug:"/components/cluster",permalink:"/docs/components/cluster",editUrl:"https://github.com/apache/incubator-pinot/edit/master/website/docs/components/cluster.md",version:"current",sidebar_label:"cluster",sidebar:"docs",previous:{title:"Broker",permalink:"/docs/components/broker"},next:{title:"Pinot Query Language (PQL)",permalink:"/docs/components/controller"}},p=[{value:"Cluster components",id:"cluster-components",children:[{value:"Participant",id:"participant",children:[]},{value:"Spectator",id:"spectator",children:[]},{value:"Controller",id:"controller",children:[]}]},{value:"Logical view",id:"logical-view",children:[]},{value:"Setup a Pinot Cluster",id:"setup-a-pinot-cluster",children:[{value:"Using docker images",id:"using-docker-images",children:[]}]}],b={rightToc:p};function d(e){var t=e.components,o=Object(a.a)(e,["components"]);return Object(A.b)("wrapper",Object(r.a)({},b,o,{components:t,mdxType:"MDXLayout"}),Object(A.b)("p",null,"Cluster is a set a nodes comprising of servers, brokers, controllers and minions."),Object(A.b)("p",null,"Pinot leverages ",Object(A.b)("a",Object(r.a)({parentName:"p"},{href:"http://helix.apache.org"}),"Apache Helix")," for cluster management. Helix is a cluster management framework to manage replicated, partitioned resources in a distributed system. Helix uses Zookeeper to store cluster state and metadata."),Object(A.b)("p",null,Object(A.b)("img",{alt:"Cluster Components",src:n(169).default})),Object(A.b)("h2",{id:"cluster-components"},"Cluster components"),Object(A.b)("p",null,"Briefly, Helix divides nodes into three logical components based on their responsibilities"),Object(A.b)("h3",{id:"participant"},"Participant"),Object(A.b)("p",null,"The nodes that host distributed, partitioned resources"),Object(A.b)("h3",{id:"spectator"},"Spectator"),Object(A.b)("p",null,"The nodes that observe the current state of each Participant and use that information to access the resources. Spectators are notified of state changes in the cluster (state of a participant, or that of a partition in a participant)."),Object(A.b)("h3",{id:"controller"},"Controller"),Object(A.b)("p",null,"The node that observes and controls the Participant nodes. It is responsible for coordinating all transitions in the cluster and ensuring that state constraints are satisfied while maintaining cluster stability."),Object(A.b)("ul",null,Object(A.b)("li",{parentName:"ul"},"Pinot Servers are modeled as Participants, more details about server nodes can be found in ",Object(A.b)("a",Object(r.a)({parentName:"li"},{href:"../../docs/components/server"}),"Server")),Object(A.b)("li",{parentName:"ul"},"Pinot Brokers are modeled as Spectators, more details about broker nodes can be found in ",Object(A.b)("a",Object(r.a)({parentName:"li"},{href:"../../docs/components/broker"}),"Broker")),Object(A.b)("li",{parentName:"ul"},"Pinot Controllers are modeled as Controllers, more details about controller nodes can be found in ",Object(A.b)("a",Object(r.a)({parentName:"li"},{href:"../../docs/components/controller"}),"Controller"))),Object(A.b)("h2",{id:"logical-view"},"Logical view"),Object(A.b)("p",null,"Another way to visualize the cluster is a logical view, wherein a cluster contains ",Object(A.b)("a",Object(r.a)({parentName:"p"},{href:"../../docs/components/segments"}),"tenants"),", tenants contain ",Object(A.b)("a",Object(r.a)({parentName:"p"},{href:"../../docs/components/tables"}),"tables"),", and tables contain ",Object(A.b)("a",Object(r.a)({parentName:"p"},{href:"../../docs/components/segments"}),"segments"),"."),Object(A.b)("p",null,Object(A.b)("img",{alt:"Logical View",src:n(170).default})),Object(A.b)("h2",{id:"setup-a-pinot-cluster"},"Setup a Pinot Cluster"),Object(A.b)("p",null,"Typically, there is only cluster per environment/data center. There is no needed to create multiple Pinot clusters since Pinot supports the concept of ",Object(A.b)("a",Object(r.a)({parentName:"p"},{href:"../../docs/components/tenants"}),"tenants"),"."),Object(A.b)("p",null,"At LinkedIn, the largest Pinot cluster consists of 1000+ nodes."),Object(A.b)("p",null,"To setup a Pinot cluster, we need to first start Zookeeper:"),Object(A.b)(c.a,{className:"Install",defaultValue:"Using launcher scripts",values:[{label:Object(A.b)(l.a.Fragment,null,Object(A.b)("i",{className:"Using docker images"})," Using docker images"),value:"docker"},{label:Object(A.b)(l.a.Fragment,null,Object(A.b)("i",{className:"Using launcher scripts"})," Using launcher scripts"),value:"launcer"}],mdxType:"Tabs"},Object(A.b)(i.a,{value:"docker",mdxType:"TabItem"},Object(A.b)("ol",null,Object(A.b)("li",{parentName:"ol"},"Create a Network\nCreate an isolated bridge network in docker")),Object(A.b)("pre",null,Object(A.b)("code",Object(r.a)({parentName:"pre"},{className:"language-bash"}),"docker network create -d bridge pinot-demo\n")),Object(A.b)("ol",{start:2},Object(A.b)("li",{parentName:"ol"},"Start Zookeeper")),Object(A.b)("p",null,"Start Zookeeper in daemon."),Object(A.b)("pre",null,Object(A.b)("code",Object(r.a)({parentName:"pre"},{className:"language-bash"}),"docker run \\\n --network=pinot-demo \\\n --name pinot-zookeeper \\\n --restart always \\\n -p 2181:2181 \\\n -d zookeeper:3.5.6\n")),Object(A.b)("ol",{start:3},Object(A.b)("li",{parentName:"ol"},"Start Zookeeper UI\nStart ZKUI to browse Zookeeper data at http://localhost:9090.")),Object(A.b)("pre",null,Object(A.b)("code",Object(r.a)({parentName:"pre"},{className:"language-bash"}),"docker run \\\n --network pinot-demo --name=zkui \\\n -p 9090:9090 \\\n -e ZK_SERVER=pinot-zookeeper:2181 \\\n -d qnib/plain-zkui:latest\n")),Object(A.b)("ol",{start:4},Object(A.b)("li",{parentName:"ol"}))),Object(A.b)(i.a,{value:"launcer",mdxType:"TabItem"},Object(A.b)("p",null,"Download Pinot Distribution using instructions in Download"),Object(A.b)("p",null,"Start Zookeeper"),Object(A.b)("pre",null,Object(A.b)("code",Object(r.a)({parentName:"pre"},{className:"language-bash"}),"bin/pinot-admin.sh StartZookeeper\n")),Object(A.b)("ol",{start:2},Object(A.b)("li",{parentName:"ol"},"Start Zooinspector")),Object(A.b)("p",null,"Install ",Object(A.b)("a",Object(r.a)({parentName:"p"},{href:"https://github.com/jfim/zooinspector"}),"zooinspector")," to view the data in Zookeeper, and connect to localhost:2181"))),Object(A.b)("p",null,"Once we've started Zookeeper, we can start other components to join this cluster. If you're using docker, pull the latest ",Object(A.b)("inlineCode",{parentName:"p"},"apachepinot/pinot")," image. "),Object(A.b)("h3",{id:"using-docker-images"},"Using docker images"),Object(A.b)("h4",{id:"pull-pinot-docker-image"},"Pull pinot docker image"),Object(A.b)("p",null,"(Optional) You can also follow the instructions here to build your own images.",Object(A.b)("br",null)),Object(A.b)("p",null,"You can try out pre-built Pinot all-in-one docker image."),Object(A.b)("pre",null,Object(A.b)("code",Object(r.a)({parentName:"pre"},{className:"language-sql"}),"export PINOT_VERSION=0.3.0-SNAPSHOT\nexport PINOT_IMAGE=apachepinot/pinot:${PINOT_VERSION}\ndocker pull ${PINOT_IMAGE}\n")),Object(A.b)("p",null,"To start other components to join the cluster"),Object(A.b)("ul",null,Object(A.b)("li",{parentName:"ul"},"Start Controller"),Object(A.b)("li",{parentName:"ul"},"Start Broker"),Object(A.b)("li",{parentName:"ul"},"Start Server")),Object(A.b)("p",null,"Explore your cluster via Pinot Data Explorer"))}d.isMDXComponent=!0}}]);