{"id":671,"date":"2018-09-09T17:55:14","date_gmt":"2018-09-09T08:55:14","guid":{"rendered":"https:\/\/dong1lkim.oboki.net\/?p=671"},"modified":"2019-09-01T22:21:04","modified_gmt":"2019-09-01T13:21:04","slug":"zookeeper-3-x-%ec%84%a4%ec%b9%98","status":"publish","type":"post","link":"https:\/\/oboki.net\/workspace\/data-engineering\/zookeeper\/zookeeper-3-x-%ec%84%a4%ec%b9%98\/","title":{"rendered":"[Zookeeper] zookeeper 3.x \uc124\uce58"},"content":{"rendered":"<h1>Zookeeper \uc124\uce58<\/h1>\n<h2>Zookeeper \uc18c\uac1c<\/h2>\n<p>\ubd84\uc0b0 \uc2dc\uc2a4\ud15c\uc744 \uc124\uacc4 \ud558\ub2e4\ubcf4\uba74, \uac00\uc7a5 \ubb38\uc81c\uc810 \uc911\uc758 \ud558\ub098\uac00 \ubd84\uc0b0\ub41c \uc2dc\uc2a4\ud15c \uac04\uc758 \uc815\ubcf4\ub97c \uc5b4\ub5bb\uac8c \uacf5\uc720\ud560 \uac83\uc774\uace0, \ud074\ub7ec\uc2a4\ud130\uc5d0 \uc788\ub294 \uc11c\ubc84\ub4e4\uc758 \uc0c1\ud0dc\ub97c \uccb4\ud06c\ud560 \ud544\uc694\uac00 \uc788\uc73c\uba70 \ub610\ud55c, \ubd84\uc0b0\ub41c \uc11c\ubc84\ub4e4\uac04\uc5d0 \ub3d9\uae30\ud654\ub97c \uc704\ud55c \ub77d(lock)\uc744 \ucc98\ub9ac\ud558\ub294 \uac83\ub4e4\uc774 \ubb38\uc81c\ub85c \ubd80\ub52a\ud78c\ub2e4.<\/p>\n<p>\uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ud574\uacb0\ud558\ub294 \uc2dc\uc2a4\ud15c\uc744 \ucf54\ub514\ub124\uc774\uc158 \uc11c\ube44\uc2a4 \uc2dc\uc2a4\ud15c (coordination service)\ub77c\uace0 \ud558\ub294\ub370, Apache Zookeeper\uac00 \ub300\ud45c\uc801\uc774\ub2e4. \uc774 \ucf54\ub514\ub124\uc774\uc158 \uc11c\ube44\uc2a4\ub294 \ubd84\uc0b0 \uc2dc\uc2a4\ud15c \ub0b4\uc5d0\uc11c \uc911\uc694\ud55c \uc0c1\ud0dc \uc815\ubcf4\ub098 \uc124\uc815 \uc815\ubcf4\ub4f1\uc744 \uc720\uc9c0\ud558\uae30 \ub54c\ubb38\uc5d0, \ucf54\ub514\ub124\uc774\uc158 \uc11c\ube44\uc2a4\uc758 \uc7a5\uc560\ub294 \uc804\uccb4 \uc2dc\uc2a4\ud15c\uc758 \uc7a5\uc560\ub97c \uc720\ubc1c\ud558\uae30 \ub54c\ubb38\uc5d0, \uc774\uc911\ud654\ub4f1\uc744 \ud1b5\ud558\uc5ec \uace0\uac00\uc6a9\uc131\uc744 \uc81c\uacf5\ud574\uc57c \ud55c\ub2e4. ZooKeeper\ub294 \uc774\ub7ec\ud55c \ud2b9\uc131\uc744 \uc798 \uc81c\uacf5\ud558\uace0 \uc788\ub294\ub370, \uadf8\ub7f0 \uc774\uc720\ub85c \uc774\ubbf8 \uc720\uba85\ud55c \ubd84\uc0b0 \uc194\ub8e8\uc158\uc5d0 \ub9ce\uc774 \uc0ac\uc6a9\ub418\uace0 \uc788\ub2e4. NoSQL\uc758 \ud55c\uc885\ub958\uc778 Apache HBase, \ub300\uc6a9\ub7c9 \ubd84\uc0b0 \ud050 \uc2dc\uc2a4\ud15c\uc778 Kafka\ub4f1\uc774 \uadf8 \ub300\ud45c\uc801\uc778 \uc0ac\ub840\uc774\ub2e4.<\/p>\n<p>\ubd84\uc0b0 \uc2dc\uc2a4\ud15c\uc744 \ucf54\ub514\ub124\uc774\uc158 \ud558\ub294 \uc6a9\ub3c4\ub85c \ub514\uc790\uc778\uc774 \ub418\uc5c8\uae30 \ub54c\ubb38\uc5d0, \ub370\uc774\ud0c0 \uc5b5\uc138\uc2a4\uac00 \ube68\ub77c\uc57c \ud558\uba70, \uc790\uccb4\uc801\uc73c\ub85c \uc7a5\uc560\uc5d0 \ub300\ud55c \ub300\uc751\uc131\uc744 \uac00\uc838\uc57c \ud55c\ub2e4. \uadf8\ub798\uc11c Zookeeper\ub294 \uc790\uccb4\uc801\uc73c\ub85c \ud074\ub7ec\uc2a4\ud130\ub9c1\uc744 \uc81c\uacf5\ud558\uba70, \uc7a5\uc560\uc5d0\ub3c4 \ub370\uc774\ud0c0 \uc720\uc2e4 \uc5c6\uc774 fail over\/fail back\uc774 \uac00\ub2a5\ud558\ub2e4.<\/p>\n<p>Apache Zookeeper\uc758 \uae30\ub2a5\uc740 \uc0ac\uc2e4\uc0c1 \ubcc4\ub85c \uc5c6\ub2e4. \ub514\ub809\ud1a0\ub9ac \uad6c\uc870\uae30\ubc18\uc73c\ub85c znode\ub77c\ub294 \ub370\uc774\ud0c0 \uc800\uc7a5 \uac1d\uccb4\ub97c \uc81c\uacf5\ud558\uace0, (key-value\uc2dd). \uc774 \uac1d\uccb4\uc5d0 \ub370\uc774\ud0c0\ub97c \ub123\uace0 \ube7c\ub294 \uae30\ub2a5\ub9cc\uc744 \uc81c\uacf5\ud55c\ub2e4. \uc77c\ub2e8 \ub514\ub809\ud1a0\ub9ac \ud615\uc2dd\uc744 \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \ub370\uc774\ud0c0\ub97c \uacc4\uce35\ud654\ub41c \uad6c\uc870\ub85c \uc800\uc7a5\ud558\uae30 \uc6a9\uc774\ud558\ub2e4.<\/p>\n<p>\ucd9c\ucc98: <a href=\"http:\/\/bcho.tistory.com\/1016\">\uc870\ub300\ud611\uc758 \ube14\ub85c\uadf8<\/a><\/p>\n<h2>\ucc38\uace0 \uc790\ub8cc<\/h2>\n<p><a href=\"https:\/\/zookeeper.apache.org\/doc\/current\/zookeeperStarted.html\"><a href=\"https:\/\/zookeeper.apache.org\/doc\/current\/zookeeperStarted.html\"><a href=\"https:\/\/zookeeper.apache.org\/doc\/current\/zookeeperStarted.html\">https:\/\/zookeeper.apache.org\/doc\/current\/zookeeperStarted.html<\/a><\/a><\/a><\/p>\n<h2>\uc124\uce58<\/h2>\n<h3>\uc0ac\uc804 \uc900\ube44<\/h3>\n<h4>jdk<\/h4>\n<p>java 1.8 \ubc84\uc804 \uc774\uc0c1 \uc900\ube44\ud55c\ub2e4.<\/p>\n<pre><code class=\"bash\">export JAVA_HOME=\/app\/jdk\nexport PATH=$JAVA_HOME\/bin:$PATH\n<\/code><\/pre>\n<p><code>java -version<\/code><\/p>\n<pre><code class=\"txt\">java version \"1.8.0_181\"\nJava(TM) SE Runtime Environment (build 1.8.0_181-b13)\nJava HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)\n<\/code><\/pre>\n<h4>hosts<\/h4>\n<p>\uc544\ub798\uc640 \uac19\uc774 <code>vi \/etc\/hosts<\/code> \ud30c\uc77c\uc5d0 zookeeper \uc559\uc0c1\ube14\uc744 \uad6c\uc131\ud560 \uba64\ubc84 \ud638\uc2a4\ud2b8 \uc815\ubcf4\ub97c \uae30\uc785\ud55c\ub2e4.<\/p>\n<pre><code class=\"txt\">192.168.179.80 node1.zk\n192.168.179.81 node2.zk\n192.168.179.82 node3.zk\n<\/code><\/pre>\n<h4>\uc2dc\uc2a4\ud15c \uacbd\ub85c \uc124\uc815<\/h4>\n<p>\ub2e4\uc74c \uacbd\ub85c\uc5d0 \ub300\ud55c zookeeper \uc2dc\uc2a4\ud15c \uacc4\uc815\uc758 \uc18c\uc720\uad8c \ud544\uc694<\/p>\n<ul>\n<li>\ud504\ub85c\uadf8\ub7a8 \uc124\uce58 \uacbd\ub85c\n<ul>\n<li>\/app\/zookeeper<\/li>\n<\/ul>\n<\/li>\n<li>\ub370\uc774\ud130\ud30c\uc77c \uacbd\ub85c\n<ul>\n<li>\/data\/zookeeper<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>\ub2e4\uc6b4\ub85c\ub4dc<\/h3>\n<p><a href=\"http:\/\/zookeeper.apache.org\/releases.html\">http:\/\/zookeeper.apache.org\/releases.html<\/a> \ud398\uc774\uc9c0\uc5d0\uc11c \ubc84\uc804\uc744 \uc120\ud0dd\ud574 \ub2e4\uc6b4\ub85c\ub4dc \ud55c\ub2e4. \uc5ec\uae30\uc5d0\uc11c\ub294 3.4.13 \ubc84\uc804\uc73c\ub85c \uc9c4\ud589<\/p>\n<pre><code class=\"bash\">wget http:\/\/mirror.navercorp.com\/apache\/zookeeper\/zookeeper-3.4.13\/zookeeper-3.4.13.tar.gz\n<\/code><\/pre>\n<p>\ub2e4\uc74c\uacfc \uac19\uc774 \ub2e4\uc6b4\ub85c\ub4dc \ud55c \uc555\ucd95\ud30c\uc77c\uc744 <code>\/app\/zookeeper<\/code> \uacbd\ub85c\uc5d0 \uc555\ucd95\ud574\uc81c\ud558\uace0 \uacbd\ub85c\uba85\uc744 \uc815\ub9ac\ud574\uc900 \ub4a4 symbolic link \uae4c\uc9c0 \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<pre><code class=\"bash\">tar -xvzf zookeeper-3.4.13.tar.gz -C \/app\/zookeeper\/.\nmv \/app\/zookeeper\/zookeeper-3.4.13 \/app\/zookeeper\/3.4.13\nls -l \/app\/zookeeper\/3.4.13 | grep ^d | awk '{print \"\/app\/zookeeper\/3.4.13\/\"$9}' | xargs -I {} ln -s {} \/app\/zookeeper\/.\n<\/code><\/pre>\n<h3>\uc124\uc815<\/h3>\n<p>zookeeper \ub370\uc774\ud130 \uacbd\ub85c\uc758 <code>myid<\/code> \ud30c\uc77c\uc5d0 zookeeper \uc559\uc0c1\ube14 \uba64\ubc84 \ub178\ub4dc\uac00 \uc790\uc2e0\uc758 \ub178\ub4dc\ub97c \uc2dd\ubcc4\ud560 \uc218 \uc788\ub3c4\ub85d \uc720\ub2c8\ud06c\ud55c \uac12\uc744 \uc9c0\uc815\ud574\uc57c \ud558\uba70, \uc544\ub798\ub294 hostname\uc758 \uc22b\uc790 \uac12\ub9cc\uc744 \ucd94\ucd9c\ud574\uc11c myid\ub85c \uc9c0\uc815\ud55c \uac83\uc774\ub2e4. \uadf8\ub9ac\uace0 \uc124\uc815 \uc0d8\ud512\ud30c\uc77c (<code>zoo_sample.cfg<\/code>)\uc744 \uc774\uc6a9\ud574\uc11c \uc124\uc815\uc744 \ub9c8\ubb34\ub9ac\ud558\uae30 \uc704\ud574 \uac19\uc740 \uacbd\ub85c\uc5d0 <code>zoo.cfg<\/code> \ud30c\uc77c\uc744 \uc0dd\uc131\ud574\uc900\ub2e4.<\/p>\n<pre><code class=\"bash\">echo $HOSTNAME | sed 's\/[^0-9]*\/\/g' &gt; \/data\/zookeeper\/myid\ncp \/app\/zookeeper\/conf\/zoo_sample.cfg \/app\/zookeeper\/conf\/zoo.cfg\n<\/code><\/pre>\n<p><code>vi \/app\/zookeeper\/conf\/zoo.cfg<\/code> \ud30c\uc77c\uc744 \uc5f4\uc5b4 \ub2e4\uc74c\uacfc \uac19\uc774 \uc559\uc0c1\ube14\uc744 \uad6c\uc131\ud560 \uba64\ubc84 \ub178\ub4dc \uc815\ubcf4\ub97c \uc785\ub825\ud558\uace0, \ub370\uc774\ud130 \uacbd\ub85c\ub97c \uc218\uc815\ud55c\ub2e4.<\/p>\n<pre><code class=\"txt\">dataDir=\/data\/zookeeper\n\nserver.1=node1.zk:2888:3888\nserver.2=node2.zk:2888:3888\nserver.3=node3.zk:2888:3888\n<\/code><\/pre>\n<h3>\uc2e4\ud589<\/h3>\n<pre><code class=\"bash\">export PATH=\/app\/zookeeper\/bin:$PATH\nzkServer.sh start\nUsing config: \/app\/zookeeper\/bin\/..\/conf\/zoo.cfg\nStarting zookeeper ... STARTED\n<\/code><\/pre>\n<h3>\uc0c1\ud0dc \ud655\uc778<\/h3>\n<p><code>zkServer.sh status<\/code> \uba85\ub839\uc73c\ub85c \uba85\ub839\uc774 \uc218\ud589\ub41c \ub178\ub4dc\uc758 \uc0c1\ud0dc\ub97c \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<h4>node1<\/h4>\n<pre><code class=\"txt\">ZooKeeper JMX enabled by default\nUsing config: \/app\/zookeeper\/bin\/..\/conf\/zoo.cfg\nMode: follower\n<\/code><\/pre>\n<h4>node2<\/h4>\n<pre><code class=\"txt\">ZooKeeper JMX enabled by default\nUsing config: \/app\/zookeeper\/bin\/..\/conf\/zoo.cfg\nMode: follower\n<\/code><\/pre>\n<h4>node3<\/h4>\n<pre><code class=\"txt\">ZooKeeper JMX enabled by default\nUsing config: \/app\/zookeeper\/bin\/..\/conf\/zoo.cfg\nMode: leader\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Zookeeper \uc124\uce58 Zookeeper \uc18c\uac1c \ubd84\uc0b0 \uc2dc\uc2a4\ud15c\uc744 \uc124\uacc4 \ud558\ub2e4\ubcf4\uba74, \uac00\uc7a5 \ubb38\uc81c\uc810 \uc911\uc758 \ud558\ub098\uac00 \ubd84\uc0b0\ub41c \uc2dc\uc2a4\ud15c \uac04\uc758 \uc815\ubcf4\ub97c \uc5b4\ub5bb\uac8c \uacf5\uc720\ud560 \uac83\uc774\uace0, \ud074\ub7ec\uc2a4\ud130\uc5d0 \uc788\ub294 \uc11c\ubc84\ub4e4\uc758 \uc0c1\ud0dc\ub97c \uccb4\ud06c\ud560 \ud544\uc694\uac00 \uc788\uc73c\uba70 \ub610\ud55c, \ubd84\uc0b0\ub41c \uc11c\ubc84\ub4e4\uac04\uc5d0 \ub3d9\uae30\ud654\ub97c \uc704\ud55c \ub77d(lock)\uc744 \ucc98\ub9ac\ud558\ub294 \uac83\ub4e4\uc774 \ubb38\uc81c\ub85c \ubd80\ub52a\ud78c\ub2e4. \uc774\ub7ec\ud55c \ubb38\uc81c\ub97c \ud574\uacb0\ud558\ub294 \uc2dc\uc2a4\ud15c\uc744 \ucf54\ub514\ub124\uc774\uc158 \uc11c\ube44\uc2a4 \uc2dc\uc2a4\ud15c (coordination service)\ub77c\uace0 \ud558\ub294\ub370, Apache Zookeeper\uac00 \ub300\ud45c\uc801\uc774\ub2e4. \uc774 \ucf54\ub514\ub124\uc774\uc158 \uc11c\ube44\uc2a4\ub294 \ubd84\uc0b0 \uc2dc\uc2a4\ud15c \ub0b4\uc5d0\uc11c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[58],"tags":[98,140,50],"class_list":["post-671","post","type-post","status-publish","format-standard","hentry","category-zookeeper","tag-hadoop","tag-zookeeper","tag-50"],"_links":{"self":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/671","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/comments?post=671"}],"version-history":[{"count":6,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/671\/revisions"}],"predecessor-version":[{"id":1236,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/671\/revisions\/1236"}],"wp:attachment":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/media?parent=671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/categories?post=671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/tags?post=671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}