incubator-hama-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Hama Wiki] Trivial Update of "PiEstimator" by edwardyoon
Date Tue, 15 Feb 2011 05:56:06 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Hama Wiki" for change notification.

The "PiEstimator" page has been changed by edwardyoon.
http://wiki.apache.org/hama/PiEstimator?action=diff&rev1=8&rev2=9

--------------------------------------------------

    * One task acts as master and collects the results through the BSP communication interface.
  
  {{{
- public class SerializePrinting {
-   private static String TMP_OUTPUT = "/tmp/test-example/";
- 
-   public static class HelloBSP extends BSP {
-     public static final Log LOG = LogFactory.getLog(HelloBSP.class);
-     private Configuration conf;
-     private final static int PRINT_INTERVAL = 5000;
- 
      public void bsp(BSPPeerProtocol bspPeer) throws IOException,
          KeeperException, InterruptedException {
-       int num = Integer.parseInt(conf.get("bsp.peers.num"));
-       FileSystem fileSys = FileSystem.get(conf);
+       int in = 0, out = 0;
+       for (int i = 0; i < iterations; i++) {
+         double x = 2.0 * Math.random() - 1.0, y = 2.0 * Math.random() - 1.0;
+         if ((Math.sqrt(x * x + y * y) < 1.0)) {
+           in++;
+         } else {
+           out++;
+         }
+       }
  
+       byte[] tagName = Bytes.toBytes(bspPeer.getPeerName());
+       byte[] myData = Bytes.toBytes(4.0 * (double) in / (double) iterations);
+       BSPMessage estimate = new BSPMessage(tagName, myData);
-       int i = 0;
-       for (String otherPeer : bspPeer.getAllPeerNames()) {
-         if (bspPeer.getPeerName().equals(otherPeer)) {
-           LOG.info("Hello BSP from " + (i + 1) + " of " + num + ": "
-               + bspPeer.getPeerName());
  
+       bspPeer.send(masterTask, estimate);
+       bspPeer.sync();
-           SequenceFile.Writer writer = SequenceFile.createWriter(fileSys, conf,
-               new Path(TMP_OUTPUT + i), LongWritable.class, Text.class,
-               CompressionType.NONE);
-           writer.append(new LongWritable(System.currentTimeMillis()), new Text(
-               "Hello BSP from " + (i + 1) + " of " + num + ": "
-                   + bspPeer.getPeerName()));
-           writer.close();
  
+       double pi = 0.0;
+       int numPeers = bspPeer.getNumCurrentMessages();
+       BSPMessage received;
+       while ((received = bspPeer.getCurrentMessage()) != null) {
+         pi += Bytes.toDouble(received.getData());
-         }
+       }
  
-         Thread.sleep(PRINT_INTERVAL);
-         bspPeer.sync();
-         i++;
+       if (bspPeer.getPeerName().equals(masterTask)) {
+         pi = pi / numPeers;
+         writeResult(pi);
        }
      }
- 
-     public Configuration getConf() {
-       return conf;
-     }
- 
-     public void setConf(Configuration conf) {
-       this.conf = conf;
-     }
- 
-   }
- 
-   public static void main(String[] args) throws InterruptedException,
-       IOException {
-     // BSP job configuration
-     HamaConfiguration conf = new HamaConfiguration();
- 
-     BSPJob bsp = new BSPJob(conf, SerializePrinting.class);
-     // Set the job name
-     bsp.setJobName("serialize printing");
-     bsp.setBspClass(HelloBSP.class);
- 
-     // Set the task size as a number of GroomServer
-     BSPJobClient jobClient = new BSPJobClient(conf);
-     ClusterStatus cluster = jobClient.getClusterStatus(false);
-     bsp.setNumBspTask(cluster.getGroomServers());
- 
-     FileSystem fileSys = FileSystem.get(conf);
-     if (fileSys.exists(new Path(TMP_OUTPUT))) {
-       fileSys.delete(new Path(TMP_OUTPUT), true);
-     }
-     BSPJobClient.runJob(bsp);
- 
-     System.out.println("Each task printed the \"Hello World\" as below:");
-     for (int i = 0; i < cluster.getGroomServers(); i++) {
-       SequenceFile.Reader reader = new SequenceFile.Reader(fileSys, new Path(
-           TMP_OUTPUT + i), conf);
-       LongWritable timestamp = new LongWritable();
-       Text message = new Text();
-       reader.next(timestamp, message);
-       System.out.println(new Date(timestamp.get()) + ": " + message);
-       reader.close();
-     }
-   }
- }
  }}}
  

Mime
View raw message