先说一下Storm是什么?
Storm是一个开源分布式实时打算系统,它可以实时可靠地处理流数据。一个Storm拓扑打包了一个实时处理程序的逻辑。一个拓扑是一个通过流分组(Stream Grouping)把Spout和Bolt连接到一起的拓扑构造,便是一个繁芜的多阶段的流打算。
(java类,java类,java类,java类,java类,java类,java类,java类,java类,java类,java类)
实现一个拓扑包括一个spout和两个bolt。Spout发送单词。每个bolt在输入数据的尾部追加字符串“!!!”。三个节点排成一条线:spout发射给首个bolt,然后,这个bolt再发射给第二个bolt。如果spout发射元组“bob”和“john”,然后,第二个bolt将发射元组“bob!!!!!!”和“john!!!!!!”。

1、个中Topology代码如下,定义全体网络拓扑图:
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout(\公众words\公众, new TestWordSpout(), 10);
builder.setBolt(\"大众exclaim1\"大众, new ExclamationBolt(), 3)
.shuffleGrouping(\"大众words\公众);
builder.setBolt(\公众exclaim2\"大众, new ExclamationBolt(), 2)
.shuffleGrouping(\公众exclaim1\公众);
2、Spout实现:
public void nextTuple() {
Utils.sleep(100);
final String[] words = new String[] {\公众nathan\"大众, \"大众mike\"大众, \"大众jackson\公众, \"大众golda\"大众, \公众bertels\公众};
final Random rand = new Random();
final String word = words[rand.nextInt(words.length)];
_collector.emit(new Values(word));
}
(java类,java类,java类,java类,java类,java类,java类,java类,java类,java类)
3、Bolt实现:
public static class ExclamationBolt implements IRichBolt {
OutputCollector _collector;
public void prepare(Map conf, TopologyContext context, OutputCollector collector) {
_collector = collector;
}
public void execute(Tuple tuple) {
_collector.emit(tuple, new Values(tuple.getString(0) + \"大众!!!\"大众));
_collector.ack(tuple);
}
public void cleanup() {
}
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields(\公众word\"大众));
}
}
(hadoop组,hadoop组,hadoop组,hadoop组,hadoop组,hadoop组,hadoop组,hadoop组)
想学好Storm必须节制的4个常用配置1、Config.TOPOLOGY_WORKERS:
这个设置用多少个事情进程来实行这个topology。
比如,如果你把它设置成25, 那么集群里面一共会有25个java进程来实行这个topology的所有task。如果你的这个topology里面所有组件加起来一共有150的并行度,那么每个进程里面会有6个线程(150 / 25 = 6)。
(hadoop组,hadoop组,hadoop组,hadoop组,hadoop组,hadoop组,hadoop组,hadoop组,hadoop组)
2、Config.TOPOLOGY_ACKERS:
这个配置设置acker任务的并行度。
默认的acker任务并行度为1,当系统中有大量的时,该当适当提高acker任务的并发度。设置为0,通过此方法,当Spout发送一个的时候,它的ack方法将急速被调用;
3、Config.TOPOLOGY_MAX_SPOUT_PENDING:
这个设置一个spout task上面最多有多少个没有处理的tuple(没有ack/failed)回答, 我们推举你设置这个配置,以防止tuple行列步队爆掉。
4、Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS:
这个配置storm的tuple的超时时间 – 超过这个韶光的tuple被认为处理失落败了。这个设置的默认设置是30秒
我是如何用4个月学会Hadoop开拓的?作为过来人,我知道学一门技能很难,以是希望能给大供应有用的知识。
我开始学Hadoop的时候是自己看书,效率很低,找不到方向和重点。后来在论坛认识了某渡的哥们,给了我一套视频。
从0根本入门Hadoop,到Hadoop生态圈中各个组件的讲解,最主要的还是一些真实的商业案例,让我见识到了真实的生产环境,不然都不知道该学什么才适宜事情。我也是随着视频学会的Hadoop。
如果你准备学Hadoop的话可以按照上图右下角的办法,去要最新版视频。
最好解释去意:学习Hadoop
末了我想说,看过文章不思考、弗成动知识永久不会变成自己的。
各位以为?该当是什么