Storm学习笔记
1 搭建Storm集群
1.1 安装Python
由于Ubuntu已经自带就直接使用
1.2 安装ZooKeeper
官网下载完后,解压至/usr/local
目录下
1.2.1 创建文件夹
- 在ZooKeeper文件下创建data文件夹
- 在ZooKeeper文件下创建dataLog文件夹
1.2.2 修改配置文件
用cp zoo_example.cfg zoo.cfg
复制一个配置文件
修改zoo.cfg如下
tickTime=2000
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/server1/
clientPort=2181
initLimit=5
syncLimit=2
server.1=server1:2888:3888
server.2=server2:2889:3889
server.3=server3:2890:3890
其中,dataDir指定Zookeeper的数据文件目录;其中server.id=host:port:port,id是为每个Zookeeper节点的编号,保存在dataDir目录下的myid文件中,zoo1~zoo3表示各个Zookeeper节点的hostname,第一个port是用于连接leader的端口,第二个port是用于leader选举的端口。
在dataDir目录下创建myid文件,文件中只包含一行,且内容为该节点对应的server.id中的id编号。
1.2.3 配置环境变量
# vi /etc/profile
(设置ZOOKEEPERHOME和ZOOKEEPERHOME/bin)
追加:
export ZOOKEEPER_HOME=”/usr/local/zookeeper”
export PATH=”$PATH:$ZOOKEEPER_HOME/bin”
http://blog.csdn.net/gudaoqianfu/article/details/7327191 待定编辑
1.2.4 启动ZooKeeper
bin/zkServer.sh start
1.2.5 无法启动
在vi zookeeper.out
里发现是dataLog的路径写错了==!,usr写成了user
zookeeper.out保存了一些输入日志
1.3 安装ZeroMQ
ZeroMQ官网:http://zeromq.org/
1.3.1 安装步骤
wget http://download.zeromq.org/zeromq-4.0.4.tar.gz
tar zxf zeromq-4.0.4.tar.gz
cd zeromq-2.1.7
./configure
make
make install
1.3.2 遇到的问题
这里要说一下在./configure中可能会遇到的问题:
- 首先我遇到了:
configure:error:in '/usr/local/download/zeromq-2.1.7':
congifure:error:no acceptable C compiler found in $PATH
See 'config.log' for more details
解决办法:
apt-get install gcc
- 还有类似的可以通过
`apt-get install g++
就可以了
1.4 安装JZMQ
1.4.1 安装步骤
git clone https://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
make install
1.4.2 出现的问题
- 可能会缺少pkg-config,libtool,autoconf等一些依赖,通过
apt-get install
就可以解决 - make时碰到了
make[1]: *** No rule to make target `org/zeromq/ZMQException.class, needed by `all'. Stop.
make: *** [all-recursive] Error 1
解决方法:
去src/org/zeromq/下把java文件编译下
$ touch src/classdist_noinst.stamp
$ cd src/org/zeromq/
$ javac *.java
参考资料:安装twitter storm集群组件ZeroMQ,jzmq时遇到的一系列问题
1.5 安装Storm
1.5.1 安装步骤:
- wget http://www.apache.org/dyn/closer.cgi/incubator/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating.tar.gz
- tar -xvzf apache-storm-0.9.2-incubating.tar.gz
- cp apache-storm-0.9.2-incubating /usr/local/
1.5.2 修改配置文件
-
修改Storm/conf文件下的storm.yam
storm.zookeeper.servers:
- “192.168.109.129”
nimbus.host: “192.168.109.129”
storm.local.dir: “/opt/storm”
storm.zookeeper.port: 2181
自己配的时候第一行的#忘记了去掉结果一直保存
- storm.zookeeper.servers:
Storm集群使用的Zookeeper集群地址 - storm.zookeeper.port:
表示zookeeper的端口号,这里一定要与zookeeper配置的端口号一致,否则会出现通信错误,切记切记 - nimbus.host:
Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,以便下载Topologies的jars、confs等文件 - storm.local.dir:
Nimbus和Supervisor进程用于存储少量状态,如jars、confs等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限。
1.6 运行Storm进程
storm nimbus&
storm supervisor&
storm ui&
可以通过http://{nimbus Host}:8080/ 来查看查看storm运行状态
后面机上&表示后台运行,还可以nohup(待学习)师大
参考:
- 徐明明:Twitter Storm: 搭建storm集群
- 大圆那些事:Storm集群安装部署步骤【详细版】
- 以上都翻译至官方文档:Setting up a Storm cluster
1.6.1 提交Topology
# storm jar StormStarter.jar storm.starter.WordCountTopology WordCount_1
1.7 有关于>/dev/null 2>&1
shell中可能经常能看到:>/dev/null 2>&1
命令的结果可以通过%>的形式来定义输出
/dev/null 代表空设备文件
代表重定向到哪里,例如:echo “123” > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于”1>/dev/null”
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
那么本文标题的语句:
1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
in UNIX
0 = stdin
1 = stdout
2 = stderr
参考资料:>/dev/null 2>&1 这句话的含义及使用的意义
2 Clojure学习笔记
小Tip
- []表示一个向量,()表示一个列表,但要加”。