{"id":238,"date":"2018-03-13T09:44:42","date_gmt":"2018-03-13T01:44:42","guid":{"rendered":"http:\/\/www.max-shu.com\/blog\/?p=238"},"modified":"2018-03-13T09:44:42","modified_gmt":"2018-03-13T01:44:42","slug":"storm-%e7%9a%84%e5%ae%89%e8%a3%85","status":"publish","type":"post","link":"http:\/\/www.max-shu.com\/blog\/?p=238","title":{"rendered":"Storm \u7684\u5b89\u88c5"},"content":{"rendered":"<div>Storm\u53f7\u79f0\u5b9e\u65f6Hadoop\u3002<\/p>\n<\/div>\n<div><b>\u8f6f\u4ef6\u524d\u63d0\uff1a<\/b><br \/>\njava6 SDK\u4ee5\u4e0a\u7248\u672c<br \/>\npython 2.6\u4ee5\u4e0a\u7248\u672c<\/p>\n<p><b>\u6bcf\u53f0\u673a\u5668\u7684\/et\/hosts\u6587\u4ef6\u4fee\u6539\uff1a<\/b><br \/>\n# vi \/etc\/hosts<br \/>\n10.24.1.40\u00a0\u00a0 HOSTMASTER<br \/>\n10.24.1.170\u00a0 HOST1<br \/>\n10.24.1.171\u00a0 HOST2<\/p>\n<p><b>\u6bcf\u53f0\u5b89\u88c5ZeroMQ\uff0c\u76ee\u524d\u53ea\u80fd\u75282.1.7\u7248\u672c:<\/b><br \/>\n# tar -zxvf zeromq-2.1.7.tar.gz<br \/>\n# cd zeromq-2.1.7<br \/>\n# .\/configure<br \/>\n# make<br \/>\n# make install<\/p>\n<p><b>\u6bcf\u53f0\u5b89\u88c5JZMQ\uff1a<\/b><br \/>\n# unzip nathanmarz-jzmq-dd3327d.zip<br \/>\n# cd nathanmarz-jzmq-dd3327d<br \/>\n# .\/autogen.sh<br \/>\n# .\/configure<br \/>\n# make<br \/>\n# make install<br \/>\n\u5e93libjzmq.a\u548clibjzmq.so\u5b89\u88c5\u5728\/usr\/local\/lib\/\u76ee\u5f55\u4e0b\u3002<br \/>\njar\u6587\u4ef6zmq.jar\u5b89\u88c5\u5728\/usr\/local\/share\/java\/\u76ee\u5f55\u4e0b\u3002<br \/>\n#\u00a0<span style=\"color: #ff0000;\">ldconfig<\/span><br \/>\n# ldconfig -p|grep zmq<br \/>\n# ldconfig -v|grep zmq<\/p>\n<p><b>\u90093\u52305\u53f0\u673a\u5668\u5b89\u88c5zookeeper\uff1a<\/b><br \/>\n# tar -zxvf zookeeper-3.3.3-cdh3u2.tar.gz<br \/>\n# cd zookeeper-3.3.3-cdh3u2<br \/>\n# vi conf\/zoo.cfg<br \/>\n&#8230;<br \/>\nclientPort=2181<br \/>\nserver.0=HOSTMASTER:2888:3888<br \/>\nserver.1=HOST1:2888:3888<br \/>\nserver.2=HOST2:2888:3888<br \/>\n#\u00a0<span style=\"color: #ff0000;\">echo 0 &gt; \/var\/zookeeper\/myid \uff08\u6bcf\u53f0zookeeper\u673a\u5668\u4e0d\u540c\uff1a# echo 1 &gt; \/var\/zookeeper\/myid \u6216\u8005# echo 2 &gt; \/var\/zookeeper\/myid\uff09<\/span><br \/>\n#\u00a0<span style=\"color: #ff0000;\">bin\/zkServer.sh start\u00a0 \uff08\u6bcf\u53f0zookeeper\u673a\u5668\u90fd\u8981\u6267\u884c\uff09<\/span><br \/>\n#\u00a0<span style=\"color: #ff0000;\">echo &#8220;stat&#8221; | nc HOSTMASTER 2181<\/span><br \/>\nZookeeper version: 3.3.3-cdh3u2&#8211;1, built on 10\/14\/2011 03:25 GMT<br \/>\nClients:<br \/>\n\/10.24.1.40:53237[0](queued=0,recved=1,sent=0)<br \/>\nLatency min\/avg\/max: 0\/0\/0<br \/>\nReceived: 8<br \/>\nSent: 7<br \/>\nOutstanding: 0<br \/>\nZxid: 0x0<br \/>\nMode: follower<br \/>\nNode count: 4<\/p>\n<p>#\u00a0<span style=\"color: #ff0000;\">echo &#8220;conf&#8221; | nc HOSTMASTER 2181<\/span><br \/>\nclientPort=2181<br \/>\ndataDir=\/var\/zookeeper\/version-2<br \/>\ndataLogDir=\/var\/zookeeper\/version-2<br \/>\ntickTime=2000<br \/>\nmaxClientCnxns=60<br \/>\nminSessionTimeout=4000<br \/>\nmaxSessionTimeout=40000<br \/>\nserverId=0<br \/>\ninitLimit=10<br \/>\nsyncLimit=5<br \/>\nelectionAlg=3<br \/>\nelectionPort=3888<br \/>\nquorumPort=2888<br \/>\npeerType=0<\/p>\n<p>#\u00a0<span style=\"color: #ff0000;\">echo &#8220;dump&#8221; | nc HOSTMASTER 2181<\/span><br \/>\nSessionTracker dump:<br \/>\norg.apache.zookeeper.server.quorum.LearnerSessionTracker@77addb59<br \/>\nephemeral nodes dump:<br \/>\nSessions with Ephemerals (0):<\/p>\n<p>#\u00a0<span style=\"color: #ff0000;\">echo &#8220;wchs&#8221; | nc HOSTMASTER 2181<\/span><br \/>\n0 connections watching 0 paths<br \/>\nTotal watches:0<\/p>\n<p>#\u00a0<span style=\"color: #ff0000;\">echo &#8220;ruok&#8221; | nc HOSTMASTER 2181<\/span><br \/>\nimok<\/p>\n<p>#\u00a0<span style=\"color: #ff0000;\">bin\/zkCli.sh stat \/<\/span><br \/>\nWatchedEvent state:SyncConnected type:None path:null<br \/>\ncZxid = 0x0<br \/>\nctime = Thu Jan 01 08:00:00 CST 1970<br \/>\nmZxid = 0x0<br \/>\nmtime = Thu Jan 01 08:00:00 CST 1970<br \/>\npZxid = 0x0<br \/>\ncversion = 0<br \/>\ndataVersion = 0<br \/>\naclVersion = 0<br \/>\nephemeralOwner = 0x0<br \/>\ndataLength = 0<br \/>\nnumChildren = 1<\/p>\n<p>#\u00a0<span style=\"color: #ff0000;\">bin\/zkCli.sh ls \/<\/span><br \/>\nWatchedEvent state:SyncConnected type:None path:null&lt;input type=&#8221;button&#8221; &gt;<br \/>\n[zookeeper]<\/p>\n<p><b>\u6bcf\u53f0\u5b89\u88c5Storm\uff1a<\/b><br \/>\n# unzip storm-0.5.4.zip<br \/>\n# cd storm-0.5.4<br \/>\n# vi conf\/storm.yaml<br \/>\nstorm.zookeeper.servers:<br \/>\n&#8211; &#8220;HOSTMASTER&#8221;<br \/>\n&#8211; &#8220;HOST1&#8221;<br \/>\n&#8211; &#8220;HOST2&#8221;<br \/>\nstorm.zookeeper.port: 2181<br \/>\nstorm.local.dir: &#8220;\/mnt\/storm&#8221;<br \/>\njava.library.path: \/usr\/local\/lib:\/opt\/local\/lib:\/usr\/lib<br \/>\nnimbus.host: &#8220;HOSTMASTER&#8221;<br \/>\nsupervisor.slots.ports:<br \/>\n&#8211; 6700<br \/>\n&#8211; 6701<br \/>\n&#8211; 6702<br \/>\n&#8211; 6703<br \/>\n&#8230;<br \/>\n\u4e0a\u9762storm.local.dir\u8868\u793astorm\u9700\u8981\u7528\u5230\u7684\u672c\u5730\u76ee\u5f55\uff0c\u6bd4\u5982topology\u7684jar\u6587\u4ef6\u4fdd\u5b58\uff0c\u5b83\u7528\u5230\u7684zookeeper\u7684\u6570\u636e\u4fdd\u5b58\u3002<\/div>\n<div>\u4e0a\u9762nimbus.host\u8868\u793a\u54ea\u4e00\u53f0\u673a\u5668\u662fmaster\u673a\u5668\u3002<br \/>\n\u4e0a\u9762supervisor.slots.ports\u8868\u793asupervisor\u8282\u70b9\u7684\u69fd\u6570\uff0c\u5c31\u662f\u6700\u591a\u80fd\u8dd1\u51e0\u4e2aworker\u8fdb\u7a0b\uff08\u6bcf\u4e2asprout\u6216bolt\u9ed8\u8ba4\u53ea\u542f\u52a8\u4e00\u4e2aworker\uff0c\u4f46\u662f\u53ef\u4ee5\u901a\u8fc7conf\u4fee\u6539\u6210\u591a\u4e2a\uff09\u3002<\/div>\n<div>\n<b>\u542f\u52a8\uff1a<\/b><br \/>\n\u4e3b\u8282\u70b9(nimbus\u8282\u70b9)\uff1a<br \/>\n# bin\/storm nimbus<br \/>\n# bin\/storm ui<br \/>\n\u4ece\u8282\u70b9(supervisor\u8282\u70b9)\uff1a<br \/>\n# bin\/storm supervisor<\/p>\n<p><b>\u67e5\u770b\u72b6\u6001\uff1a<\/b><br \/>\n# vi logs\/nimbus.log<br \/>\n# vi logs\/supervisor.log<br \/>\n# vi logs\/ui.log<br \/>\n\u6ce8\u610f\u9ed8\u8ba4log4j\u914d\u7f6e\u6587\u4ef6storm.log.properties\u91cc\u9762\u7684logs\u76ee\u5f55\u4e0d\u662f\u7edd\u5bf9\u8def\u5f84\uff0c\u800c\u662f\u76f8\u5bf9\u4e8e\u5f53\u524d\u6267\u884cstorm\u547d\u4ee4\u6240\u5728\u8def\u5f84\u7684logs\/\u8def\u5f84\u3002<br \/>\n<span style=\"color: #ff0000;\"><b><u>http:\/\/XXX:8080<\/u>\u00a0 (\u5fc5\u987bUI\u5df2\u7ecf\u542f\u52a8)<\/b><\/span><\/p>\n<p><b>\u6267\u884cstorm-starter\u4f8b\u5b50\uff1a<\/b><br \/>\n<b>\u4e0b\u8f7d\u5b89\u88c5Leiningen\uff1a<\/b><br \/>\n# wget https:\/\/raw.github.com\/technomancy\/leiningen\/stable\/bin\/lein<br \/>\n# mv lein \/bin<br \/>\n# chmod +x \/bin\/lein<br \/>\n# lein self_install<br \/>\n\u5b83\u4f1a\u4e0b\u8f7d\u81ea\u5df1\u7684jar\u6587\u4ef6\u5230\u8be5\u4f4d\u7f6e\uff1a<br \/>\n~\/.lein\/self-installs\/leiningen-1.6.2-standalone.jar<\/p>\n<p><b>\u4e0b\u8f7dstorm-starter\uff1a<\/b><br \/>\n# tar -zxvf nathanmarz-storm-starter-3b815c3.tar.gz<br \/>\n# cd nathanmarz-storm-starter-3b815c3<br \/>\n# LEIN_ROOT=root lein deps<br \/>\n# LEIN_ROOT=root lein compile<br \/>\n# LEIN_ROOT=root lein uberjar<\/div>\n<div><\/div>\n<div><b>\u6267\u884cstorm-starter\u91cc\u9762\u7684\u6d4b\u8bd5topology\uff1a<\/b><br \/>\n# export STORM_HOME=\/root\/storm-0.5.4<br \/>\n# ln -s $STORM_HOME\/conf\/storm.yaml ~\/.storm\/storm.yaml<br \/>\n# $STORM_HOME\/bin\/storm jar storm-starter-0.0.1-SNAPSHOT-standalone.jar storm.starter.ExclamationTopology Exclamation_1<br \/>\n# $STORM_HOME\/bin\/storm jar storm-starter-0.0.1-SNAPSHOT-standalone.jar storm.starter.WordCountTopology WordCount_1<br \/>\n\u8fd9\u91cc\u6700\u540e\u4e00\u4e2a\u53c2\u6570\u4f1a\u663e\u793a\u5728UI\u91cc\u9762\uff0c\u5c31\u662ftopology\u7684\u540d\u5b57\uff0c\u4e0d\u52a0\u7684\u8bdd\u8868\u793a\u672c\u5730\u8fd0\u884c\uff08\u5c31\u662f\u53ea\u6709\u4e00\u53f0\u673a\u5668\u7684\u8c03\u8bd5\u6a21\u5f0f\uff09\uff0c\u52a0\u7684\u8bdd\u8868\u793a\u5206\u5e03\u5f0f\u8fd0\u884c\u3002<\/div>\n<div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Storm\u53f7\u79f0\u5b9e\u65f6Hadoop\u3002 \u8f6f\u4ef6\u524d\u63d0\uff1a java6 SDK\u4ee5\u4e0a\u7248\u672c python 2.6\u4ee5\u4e0a\u7248\u672c \u6bcf\u53f0\u673a &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63],"tags":[80,150,94],"class_list":["post-238","post","type-post","status-publish","format-standard","hentry","category-63","tag-hadoop","tag-storm","tag-94"],"views":1461,"_links":{"self":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=238"}],"version-history":[{"count":1,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/238\/revisions"}],"predecessor-version":[{"id":239,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/238\/revisions\/239"}],"wp:attachment":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=238"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}