赞
踩
本周工作分四个部分
一:完成Azure的虚拟机上的Jstorm的搭建
按照第二周周报的方法,在Azure的两台虚拟机(jstopk1和jstopk2)中搭建jstorm集群:部署如下:
jstopk1:nimbus+supervisor(两个worker)
jstopk2:zookeeper+supervisor(两个worker)
经测试,环境可用。
二:优化topk算法并完成项目jstorm-topk的改造(对Rest API进行支持)
1. 优化topk算法
a) 函数原型如下:
private boolean isScoreUseful(String id, int score)
private void deleteOneForMinScore()
private void add(String id, int score)
private void deleteFromScoreToIds(String id, int oldScore)
private void changeMinScore()
b) 通过topk算法可以实现:
原topk存在相同id,比较score,留下较大的score;
原topk不存在相同的id,当topk.size()<k,直接添加;
原topk不存在相同的id,当topk.size()>=k,比较score与minScore,留下较大的;
当不同id的score相同时,较早的id排名靠前;
2. 项目jstorm-topk对Rest API进行支持
a) 构建GetScoreSpout从名为jstopkacceptqueue的队列中获取用户数据(id,score);
b) 构建PutScoreBolt,一是在初始化时从名为jstopkresulttable的表中获取原始topk;二是在获得更大的score时更改表中的topk;
3. 项目jstorm-topk的topology设计为:
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("accept", new GetScoreSpout(), 2);
builder.setBolt("compute", new ComputeBolt(), 2).shuffleGrouping("accept");
builder.setBolt("store", new PutScoreBolt(), 1).shuffleGrouping("compute");
三:改进jstopk-client-restapi的改进,提供jar给用户使用
简化jstopk-client-restapi项目,打包jar
a) 提供ScoreSenderClient类,其中void send(String id,int score)为发送数据接口;
b) 提供GetTopkClient类,其中String[] getTopk()为获取topk接口;
四:jstopk服务的使用
1. 构建项目,导入相关包,如图:
2. 创建main函数:
a) 发送数据
ScoreSenderClient ssc = new ScoreSenderClient();
ssc.init();
ssc.send("evan", 111111);
b) 获取topk
GetTopkClient gtk = new GetTopkClient();
gtk.init();
String[] tops = gtk.getTopk();
for (String s : tops) {
System.out.println(s);
}
下周工作
提交项目给老师检查,并跟老师沟通项目下一步的计划
感谢CSDN开源夏令营和商之狄老师的指导与支持!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。