zoukankan      html  css  js  c++  java
  • Storm基础知识

             上一篇文章我们介绍一个简单的Storm起源,今天我去学习Storm一些主要的知识,他的基本使用基本的了解。幸运的是,,不是太困难,假设我们理解Hadoop的MapReduce模型的话。看这个也是很类似的。在了解Storm的原型时。首先了解一些概念。

    1.Tuple(元组),作为消息传递的基本单元。元组中的字段能够是不论什么类型的对象。元组会用于后面提到的Bolt方法的execute方法。

    2.Spout(喷口),是拓扑的流的来源,就是产生源数据流的组件。

    喷口的数据来源能够有几种方式。(1).直接连接数据源 (2).从消息队列中读取消息 (3).通过DRPC的形式,简单的说,Spout相当于Hadoop中的Map。

    3.Bolt(螺栓)。在拓扑中处理全部的逻辑。在Bolt中能够完毕连接运算,统计分析,等等各种逻辑操作。运行的方法就是刚刚说的那个execute()方法。

    4.Topology(拓扑),是Storm中执行的一个实时应用程序,一个完整的Spout--Bolt就是在一个Topology中执行的。

    Storm中的拓扑相当于Hadoop中的作业job,在MapReduce的作业会终于完毕。而一个拓扑会永远执行直到他被杀死。在java里。用的是TopologyBuilder来构建拓扑。

    5.Nimbus进程与Supervisor进程。主控结点执行Nimbus的守护进程。负责分配节点任务。并监视主机故障,类似Hadoop的jobTracker。

    每一个工作节点执行的是Supervisor守护进程。监听主机上的已经分配好的作业。

    6.Worker(工作进程)。Task(任务)。Executor(执行器),三者的关系很相近。用一张图表示直接明了。

    这3个关系的在一定程度上也控制着Storm拓扑的并行度。在一个节点中能够有1个或多个工作进程执行在1个或多个拓扑中。


    ,所以这也表明了在Storm能够并行运行任务。

    以下给出一个很easy的拓扑的样例:

    public class SimpleTopology {
        public static void main(String[] args) {
            try {
                // 实例化TopologyBuilder类。
                TopologyBuilder topologyBuilder = new TopologyBuilder();
                // 设置喷发节点并分配并发数。该并发数将会控制该对象在集群中的线程数。
                topologyBuilder.setSpout("SimpleSpout", new SimpleSpout(), 1);
                // 设置数据处理节点并分配并发数。指定该节点接收喷发节点的策略为随机方式。

    topologyBuilder.setBolt("SimpleBolt", new SimpleBolt(), 3).shuffleGrouping("SimpleSpout"); Config config = new Config(); config.setDebug(true); if (args != null && args.length > 0) { config.setNumWorkers(1); StormSubmitter.submitTopology(args[0], config, topologyBuilder.createTopology()); } else { // 这里是本地模式下执行的启动代码。 config.setMaxTaskParallelism(1); LocalCluster cluster = new LocalCluster(); cluster.submitTopology("simple", config, topologyBuilder.createTopology()); } } catch (Exception e) { e.printStackTrace(); } } }


    上面的样例给出了本地測试模式和正式开发模式的的拓扑提交样例。为了比較Hadoop和Storm的差别。

    我做了表格:

    对照项                        Hadoop                       Storm

    系统角色                    JobTracker                  Nimbus

                                        TaskTracker                Supervisor

    应用名称                     Job                              Topology

    组件接口                     Map/Reduce              Spout/Bolt

    这些都是个人学习为在不久的将来一段时间Storm有点小总结

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    MySQL之数据库优化
    cookie和session
    php自动加载
    php函数之strtr和str_replace的区别
    php函数之substr()
    阶段总结(一)
    json和xml
    sqlserver交换数据行中的指定列
    3 宏、条件编译
    5 常量与变量
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4848483.html
Copyright © 2011-2022 走看看