简介
Twitter Storm是Twitter开源的一个实时流数据处理框架,主要基于Java,部分可用
python。原来是BackType开发的,后被Twitter收购,整理后开源。主要用于下面三个领域
信息流处理(stream processing): 处理实时数据和更新数据库
连续计算(continuous computation): 可以连续查询并反馈给用户
分布式远程过程调用(distributed rpc): 处理密集数据。
特点如下
编程模型类似mapreduce,简化复杂性
使用各种语言,默认支持clojure, java, ruby, python。支持其他语言需要实现storm的通信协议
容错性。管理工作进程和节点的故障
水平扩展。计算在多线程,进程和服务器间进行
可靠消息处理。storm保证每个消息至少被完整处理一次
快速。 使用zeromq为底层消息队列
本地模式。用于快速开发和调试
storm-start
编译及安装
jdk
首先需要安装jdk支持否则会提示缺少tools.jar ,需要注意的是要安装jdk6,jdk7编译
会有问题。具体步骤见install jdk on ubuntu
注意如果先安装jdk,然后安装maven2的话,需要重新设置下jdk版本,具体见上面的安装
twitter4j
然后去下载twitter4j ,否则安装时会
提示缺少这个库支持,而且也下载不来,应该是被墙了。
在编译twitter4j时,利用其文件夹内的package.sh文件。只有twitter-core编译成功
其他的没有库支持,而且也下不来,需要首先安装twitter-core
下载最新的jdk6进行编译的话,缺少json包支持,需要在twitter4j-core文件夹中的
pom.xml中添加json包依赖见maven2 json
需要忽略test进行编译打包,首先完成core的编译,然后安装
1
2
3
4
5
$cd twitter4j-core
$mvn compile
$mvn package -Dmaven.test.skip= true
$mvn install:install-file -DgroupId= org.twitter4j -DartifactId= twitter4j-core -Dversion= 2.2.6-SNAPSHOT -Dpackaging= jar -Dfile= target/twitter4j-core-2.2.6-SNAPSHOT.jar
$cd ..
然后编译安装twitter-async
1
2
3
4
5
$cd twitter4j-async
$mvn compile
$mvn package -Dmaven.test.skip= true
$mvn install:install-file -DgroupId= org.twitter4j -DartifactId= twitter4j-async -Dversion= 2.2.6-SNAPSHOT -Dpackaging= jar -Dfile= target/twitter4j-async-2.2.6-SNAPSHOT.jar
$cd ..
最后编译安装twitter-stream
1
2
3
4
5
$cd twitter4j-stream
$mvn compile
$mvn package -Dmaven.test.skip= true
$mvn install:install-file -DgroupId= org.twitter4j -DartifactId= twitter4j-stream -Dversion= 2.2.6-SNAPSHOT -Dpackaging= jar -Dfile= target/twitter4j-stream-2.2.6-SNAPSHOT.jar
$cd ..
storm-start
利用maven进行编译测试
1
mvn -f m2-pom.xml compile exec :java -Dexec.classpathScope= compile -Dexec.mainClass= storm.starter.WordCountTopology
打包
1
mvn -f m2-pom.xml package
注:如果需要在单机模式下运行打包内的文件,需要首先安装storm的release版本
然后运行
1
storm jar target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.WordCountTopology
安装storm
依赖
build-essential
1
sudo apt-get install build-essential
zookeeper
1
2
3
4
5
wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//zookeeper/zookeeper-3.3.3/zookeeper-3.3.3.tar.gz
tar zxf zookeeper-3.3.3.tar.gz
cp -R zookeeper-3.3.3 /usr/local/
ln -s /usr/local/zookeeper-3.3.3/ /usr/local/zookeeper
vi ~./bashrc ( 设置ZOOKEEPER_HOME和ZOOKEEPER_HOME/bin)
编辑/etc/enviroment,添加
1
2
ZOOKEEPER_HOME = /usr/loacl/zookeeper
PATH = "$PATH:$ZOOKEEPER_HOME/bin"
设置配置文件
1
2
3
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg ( 用zoo_sample.cfg制作$ZOOKEEPER_HOME /conf/zoo.cfg)
sudo mkdir /tmp/zookeeper
sudo mkdir /var/log/zookeeper
好的,zookeeper的单机安装已经完成了。
zeromq
1
2
3
4
5
6
7
wget http://download.zeromq.org/historic/zeromq-2.1.7.tar.gz
tar zxf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
make
make install
sudo ldconfig ( 更新LD_LIBRARY_PATH)
./configure时会遇到uuid
jzmq
1
2
3
4
5
6
7
8
9
cd jzmq
./autogen.sh
./configure
touch src/classdist_noinst.stamp
cd src/org/zeromq/
javac *.java
cd ../../../
make
sudo make install
需要安装pkg-config, libtool, automake
需要创建classdist_noinst.stamp 后编译java文件否则会报错
1
` classdist_noinst.stamp', needed by `org/zeromq/ZMQ.class' . Stop
完成后设置PATH
参考
Twitter Storm:What & Why?
Twitter Storm 实时数据处理框架分析总结
Twitter Storm 在生产集群运行拓扑
Twitter Storm blog 参考
blog one
tter storm 配置项
storm-starter
storm
Twitter Storm 安装实战
安装twitter storm集群组件ZeroMQ,jzmq时遇到的一系列问题
taobaoer blog