示例#1
0
  @Override
  public void populateDAG(DAG dag, Configuration conf) {
    String lPhoneRange = conf.get(PHONE_RANGE_PROP, null);
    if (lPhoneRange != null) {
      String[] tokens = lPhoneRange.split("-");
      if (tokens.length != 2) {
        throw new IllegalArgumentException("Invalid range: " + lPhoneRange);
      }
      this.phoneRange = Range.between(Integer.parseInt(tokens[0]), Integer.parseInt(tokens[1]));
    }
    LOG.debug("Phone range {}", this.phoneRange);

    RandomEventGenerator phones = dag.addOperator("Receiver", RandomEventGenerator.class);
    phones.setMinvalue(this.phoneRange.getMinimum());
    phones.setMaxvalue(this.phoneRange.getMaximum());

    PhoneMovementGenerator movementGen =
        dag.addOperator("LocationFinder", PhoneMovementGenerator.class);
    dag.setAttribute(
        movementGen,
        OperatorContext.COUNTERS_AGGREGATOR,
        new BasicCounters.LongAggregator<MutableLong>());

    StatelessThroughputBasedPartitioner<PhoneMovementGenerator> partitioner =
        new StatelessThroughputBasedPartitioner<PhoneMovementGenerator>();
    partitioner.setCooldownMillis(conf.getLong(COOL_DOWN_MILLIS, 45000));
    partitioner.setMaximumEvents(conf.getLong(MAX_THROUGHPUT, 30000));
    partitioner.setMinimumEvents(conf.getLong(MIN_THROUGHPUT, 10000));
    dag.setAttribute(
        movementGen,
        OperatorContext.STATS_LISTENERS,
        Arrays.asList(new StatsListener[] {partitioner}));
    dag.setAttribute(movementGen, OperatorContext.PARTITIONER, partitioner);

    // generate seed numbers
    Random random = new Random();
    int maxPhone = phoneRange.getMaximum() - phoneRange.getMinimum();
    int phonesToDisplay = conf.getInt(TOTAL_SEED_NOS, 10);
    for (int i = phonesToDisplay; i-- > 0; ) {
      int phoneNo = phoneRange.getMinimum() + random.nextInt(maxPhone + 1);
      LOG.info("seed no: " + phoneNo);
      movementGen.phoneRegister.add(phoneNo);
    }
    // done generating data
    LOG.info("Finished generating seed data.");

    String gatewayAddress = dag.getValue(DAG.GATEWAY_CONNECT_ADDRESS);
    URI uri = URI.create("ws://" + gatewayAddress + "/pubsub");
    PubSubWebSocketOutputOperator<Object> wsOut =
        dag.addOperator("LocationResults", new PubSubWebSocketOutputOperator<Object>());
    wsOut.setUri(uri);
    PubSubWebSocketInputOperator<Map<String, String>> wsIn =
        dag.addOperator("QueryLocation", new PubSubWebSocketInputOperator<Map<String, String>>());
    wsIn.setUri(uri);
    // default partitioning: first connected stream to movementGen will be partitioned
    dag.addStream("Phone-Data", phones.integer_data, movementGen.data);
    dag.addStream("Results", movementGen.locationQueryResult, wsOut.input);
    dag.addStream("Query", wsIn.outputPort, movementGen.phoneQuery);
  }
  @Override
  public void populateDAG(DAG dag, Configuration conf) {
    dag.setAttribute(DAG.APPLICATION_NAME, "HDHTBenchmarkApplication");
    Generator gen = dag.addOperator("Generator", new Generator());
    gen.setTupleBlast(1000);
    gen.setSleepms(0);
    dag.getOperatorMeta("Generator")
        .getAttributes()
        .put(Context.OperatorContext.APPLICATION_WINDOW_COUNT, 1);

    HDSOperator hdsOut = dag.addOperator("Store", new HDSOperator());
    TFileImpl.DTFileImpl hdsFile = new TFileImpl.DTFileImpl();
    hdsFile.setBasePath("WALBenchMarkDir");
    hdsOut.setFileStore(hdsFile);
    dag.getOperatorMeta("Store")
        .getAttributes()
        .put(Context.OperatorContext.COUNTERS_AGGREGATOR, new HDHTWriter.BucketIOStatAggregator());

    dag.addStream("s1", gen.out, hdsOut.input).setLocality(DAG.Locality.THREAD_LOCAL);
  }
示例#3
0
  @Override
  public void populateDAG(DAG dag, Configuration conf) {
    String appName = conf.get("appName");
    if (appName == null) {
      appName = "VisualDataDemo";
    }
    dag.setAttribute(DAG.APPLICATION_NAME, appName);
    int maxValue = 30000;

    RandomEventGenerator rand = dag.addOperator("random", new RandomEventGenerator());
    rand.setMinvalue(0);
    rand.setMaxvalue(maxValue);

    DemoValueGenerator demo = dag.addOperator("chartValue", new DemoValueGenerator());
    demo.setRandomIncrement(5);
    demo.setRandomIncrement2(20);

    PiCalculateOperator calc = dag.addOperator("picalc", new PiCalculateOperator());
    calc.setBase(maxValue * maxValue);
    dag.addStream("rand_calc", rand.integer_data, calc.input).setLocality(locality);

    WidgetOutputOperator woo =
        dag.addOperator("widget output operator", new WidgetOutputOperator());
    WidgetOutputOperator wooa =
        dag.addOperator("widget output operator2", new WidgetOutputOperator());

    // wire to simple input gadget
    dag.addStream(
            "ws_pi_data", calc.output, woo.simpleInput.setTopic("app." + appName + ".piValue"))
        .setLocality(locality);

    // wire to time series chart gadget
    dag.addStream(
            "ws_chart_data",
            demo.simpleOutput,
            woo.timeSeriesInput.setTopic("app." + appName + ".chartValue").setMin(0).setMax(100))
        .setLocality(locality);

    // wire to another time series chart gadget
    dag.addStream(
            "ws_chart_data2",
            demo.simpleOutput2,
            wooa.timeSeriesInput.setTopic("app." + appName + ".chartValue2"))
        .setLocality(locality);

    // wire to percentage chart gadget
    dag.addStream(
            "ws_percentage_data",
            demo.percentageOutput,
            woo.percentageInput.setTopic("app." + appName + ".percentage"))
        .setLocality(locality);

    // wire to top N chart gadget
    dag.addStream(
            "ws_topn_data",
            demo.top10Output,
            woo.topNInput.setN(10).setTopic("app." + appName + ".topn"))
        .setLocality(locality);

    // wire to progress bar chart gadget
    dag.addStream(
            "ws_progress_data",
            demo.progressOutput,
            wooa.percentageInput.setTopic("app." + appName + ".progress"))
        .setLocality(locality);

    // wire to piechart gadget
    dag.addStream(
            "ws_piechart_data",
            demo.pieChartOutput,
            wooa.pieChartInput.setTopic("app." + appName + ".piechart"))
        .setLocality(locality);
  }