目录
前言
2016.5-2016.8,阿里巴巴集团在天池大数据平台上举行了阿里中间件性能挑战赛,我和北京的两个队友参加了比赛。经历了初赛和复赛,最终获得了决赛的亚军。在这个过程中我收获颇丰,在此便记录下整个比赛的一些过程,并分享出初赛和复赛的代码。
正文
目录
初赛题目介绍
其实就是写一个topology,整个任务流程是利用JStorm从RocketMQ拉取数据,按照要求实时计算出结果,并将结果写入Tair。
赛题所使用的三种产品是:
- RocketMQ-3.2.6
- Tair-2.3.4
- JStorm-2.1.1
帮助文档:
Tair环境配置
按照Tair部署帮助文档配置即可
值得注意的是,在ubuntu上部署会遇到一些问题,解决起来有些麻烦,因此最好在centos上部署。
RocketMQ环境配置
单机部署过程记录:
- 下载release包
2.下载源码 cd /alibaba-rocketmq/bin
(第1步中解压出的文件夹)- 启动namesrv
nohup sh mqnamesrv &
(默认NameServer的监听端口是9876,可以用jps
和netstat -pan | grep 9876
查看是否启动成功) - 部署Broker(单Master模式)
nohup sh mqbroker -n "127.0.0.1:9876" -c ../conf/2m-2s-async/broker-a.properties &
- 打开第2步中下载的文件夹RocketMQ,用IDE(Eclipse/IDEA)导入rocketmq-example项目
- 在com.alibaba.rocketmq.example.quickstart.Producer中的
DefaultMQProducer producer = new DefaultMQProducer...
这一行后加入producer.setNamesrvAddr("127.0.0.1:9876");
- 在com.alibaba.rocketmq.example.quickstart.Consumer中的
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer...
这一行后加入consumer.setNamesrvAddr("127.0.0.1:9876");
- 先运行com.alibaba.rocketmq.example.quickstart.Consumer再运行com.alibaba.rocketmq.example.quickstart.Producer就可以看到输出信息
其他参考资料:
阿里RocketMQ Quick Start
Jstorm环境配置
与storm一样,Jstorm的底层消息通信机制依赖zeromq/jzmq,另外,Jstorm通过zookeeper实现数据共享和协调服务,因此需要先安装这三个组件。
1. 安装zeromq
wget http://download.zeromq.org/zeromq-3.2.4.tar.gz
tar zxf zeromq-3.2.4.tar.gz
cd zeromq-3.2.4
./configure
make
sudo make install
sudo ldconfig
2. 安装jzmq
wget https://github.com/zeromq/jzmq/tarball/master -O jzmq.tar.gz
tar zxf jzmq.tar.gz
cd jzmq/jzmq-jni
./autogen.sh
./configure
make
sudo make install
3. 安装zookeeper
单机或集群的配置过程参考ZooKeeper的安装即可
4. 安装jstorm
操作系统环境:ubuntu14.04
5. 全部完成后使用jps命令应该能够看到如下进程
admin@ubuntu:~$ jps
9840 NimbusServer
8051 Bootstrap
9573 QuorumPeerMain
10086 Supervisor
8924 Jps
后记
之前完全没有接触过这三个框架,前前后后共花了两天时间才完成配置,在这个过程中遇到许多坑,因此浪费了不少时间。希望这个笔记能够帮助大家绕过这些坑。