您好,我配置好sector之后,在试用wordcount时出现些问题

Zhaonan Li
2009-06-12
2012-10-08
  • Zhaonan Li

    Zhaonan Li - 2009-06-12

    我的security master slave client 均配置在同一台电脑上,Ubuntu 9.04。

    配置已经成功,可以运行tools里面的工具,并向文件系统的根目录下中./upload了一个wordtest文件和一个word_bucket文件。其中,wordtest文件中有几行英文句子。。

    然后修改那个wordcount.cpp源文件:

    将 files.insert(files.end(), "/htm"); 改为 files.insert(files.end(), "/wordtest");
    并将temp.setOutputPath函数的参数改为: temp.setOutputPath("/", "word_bucket");

    然后运行那个wordcount程序,程序一直处于PROGRESS: 0%的状态,这是怎么回事呢?

    P.S. 我是想用您的Sector实现一个MapReduce的算法,想从研究wordcount的代码入手,所以试用的时候发现了如下问题。

    谢谢您!

     
    • Zhaonan Li

      Zhaonan Li - 2009-06-13

      文件名是wordtest
      内容是:
      aaa bbb ccc ddd
      aaa ccc ddd aaa
      bbb ccc ddd ddd
      eee fff fff aaa

      我不觉得这个样历会引发什么问题阿...
      我还试过文件中之存一行单词,或者只存一个字符串,但是都还是这个错误。

      .....麻烦您了..

       
    • Yunhong Gu

      Yunhong Gu - 2009-06-13

      请你帮我在slave里打印一些输出。根据你现在的输出,我大致能猜到出错的地方。

      在./slave/serv_spe.cpp里,大约488行:

        if (gmp->recvfrom(speip, speport, msgid, &msg) < 0)
           continue;
      
        // client releases the task
        if ((speip == client_ip) && (speport == client_port))
        {
      

      帮我打印一下speip, client_ip, speport, client_port。

      同一个文件,585行左右:
      pthread_mutex_lock(bqlock);
      while (bq->empty())
      pthread_cond_wait(bqcond, bqlock);
      Bucket b = bq->front();
      bq->pop();
      *pendingSize -= b.totalsize;
      pthread_mutex_unlock(bqlock);

        if (b.totalnum == -1)
           break;
      

      打印一下bq.size()和b的内容。

      谢谢!

       
      • Zhaonan Li

        Zhaonan Li - 2009-06-15

        打印出来了,您看下这些调试信息吧。好像spe的IP和端口没获得到阿...

         
    • Zhaonan Li

      Zhaonan Li - 2009-06-14

      那个b不知道怎么输出。其他的输出如下: slave端

      paullzn@paullzn-laptop:~/sector/slave/codeblue2/slave$ ./start_slave
      scaning /home/paullzn/temp/
      This Sector slave is successfully initialized and running now.
      slave process: GMP 37482 DATA 36457
      recv cmd 127.0.0.1 6000 type 204
      SPE ShufflerXXX /result word_bucket 256
      speip :
      speport : 0
      client_ip : 127.0.0.1
      client_port : 48040
      bq.size() : 0
      reportSphere 127.0.0.1 6000 1
      bucket completed 100 127.0.0.1 48040
      recv cmd 127.0.0.1 6000 type 1
      recv cmd 127.0.0.1 6000 type 203
      starting SPEXXX ... 0 39214 wordbucket 2
      rendezvous connect 127.0.0.1 39214
      connected
      new job /wordtest 0 -1
      processing /home/paullzn/temp//wordtest
      completed -1 127.0.0.1 48040

       
    • Yunhong Gu

      Yunhong Gu - 2009-06-15

      你是在if (gmp->recvfrom(speip, speport, msgid, &msg) < 0) 这行之后打印的么?

      如果你有msn或yahoo messenger,可以加我msn gu@lac.uic.edu。

       
      • Zhaonan Li

        Zhaonan Li - 2009-06-15

        我这里,这部分代码是这个样子的。serv_spe.cpp 从510行开始..
        while (true)
        {
        char speip[64];
        int speport;
        SectorMsg msg;
        int msgid;
        int r = gmp->recvfrom(speip, speport, msgid, &msg, false);

          cout &lt;&lt; &quot;speip : \t&quot; &lt;&lt; speip &lt;&lt; endl;
          cout &lt;&lt; &quot;speport : \t&quot; &lt;&lt; speport &lt;&lt; endl;
          cout &lt;&lt; &quot;client_ip : \t&quot; &lt;&lt; client_ip &lt;&lt; endl;
          cout &lt;&lt; &quot;client_port : \t&quot; &lt;&lt; client_port &lt;&lt; endl;
        
          // client releases the task or client has already been shutdown
          if (((r &gt; 0) &amp;&amp; (speip == client_ip) &amp;&amp; (speport == client_port))
             || ((r &lt; 0) &amp;&amp; (!self-&gt;m_DataChn.isConnected(client_ip, client_data_port))))
          {
             Bucket b;
             b.totalnum = -1;
             b.totalsize = 0;
             pthread_mutex_lock(bqlock);
             bq-&gt;push(b);
             pthread_cond_signal(bqcond);
             pthread_mutex_unlock(bqlock);
        
             break;
          }
        

        我没有yahoo messenger, 而且学校这里的网登不了msn。。
        如果您不介意,我们可以邮件联系。我的是paullzn@gmail.com

        非常感谢!

         
    • Yunhong Gu

      Yunhong Gu - 2009-06-16

      bug找到了,请更新SVN下./slave目录下的文件。

      谢谢!

       
    • Yunhong Gu

      Yunhong Gu - 2009-06-12

      slave上有输出么?你可以手动启动start_slave。

      workcount的处理程序在./client/examples/funcs/wordbucket.cpp,你可以打印一些输出在这个程序里,然后在slave上可以看到。

      这个wordcount程序只是一个非常简单的示例程序,有可能一些情况处理不了。

       
      • Zhaonan Li

        Zhaonan Li - 2009-06-12

        slave端的输出是这个:

        scaning /home/paullzn/temp/
        This Sector slave is successfully initialized and running now.
        slave process: GMP 37965 DATA 37506
        recv cmd 127.0.0.1 6000 type 204
        SPE Shuffler / word_bucket 256
        recv cmd 127.0.0.1 6000 type 1
        reportSphere 127.0.0.1 6000 1
        bucket completed 100 127.0.0.1 41621
        recv cmd 127.0.0.1 6000 type 203
        starting SPE ... 0 38909 wordbucket 2
        rendezvous connect 127.0.0.1 38909
        connected
        new job /wordtest 0 -1
        processing /home/paullzn/temp//wordtest
        completed -1 127.0.0.1 41621
        recv cmd 127.0.0.1 6000 type 1
        recv cmd 127.0.0.1 6000 type 1
        recv cmd 127.0.0.1 6000 type 1
        recv cmd 127.0.0.1 6000 type 1
        recv cmd 127.0.0.1 6000 type 1

        client的输出端是:
        start time 1244814938
        JOB 96 -1
        request shuffler 127.0.0.1 37965
        1 spes found! 1 data seg total.
        connect SPE 127.0.0.1 2
        PROGRESS: 0%
        PROGRESS: 0%
        PROGRESS: 0%
        PROGRESS: 0%
        PROGRESS: 0%

        我看那个recv cmd 127.0.0.1 6000 type 1这个输出不是wordbucket做的,
        所以,不知道是不是传输上哪里有问题... 看起来像是输出的时候出问题了
        我上面提到的temp.setOutputPath的配置有问题么?

        wordtest里面就是几行英文而已,应该不至于产生问题...

         
    • Yunhong Gu

      Yunhong Gu - 2009-06-12

      slave打印输出了:

      processing /home/paullzn/temp//wordtest
      completed -1 127.0.0.1 41621

      在处理过程中出错了, -1表示出错。不知道为什么client没有得到出错信息。

      请你试一下把127.0.0.1换成你的机器的真实IP。

       
      • Zhaonan Li

        Zhaonan Li - 2009-06-13

        您好,我把IP改成真实IP之后还是老样子。
        我把两组key/cert对 re-generate了一下,但还是没有改变。

        我看到这个completed -1 这行提示是由serv_spe.cpp输出的。这些代码我目前的水平应该看不下来...

        这个是bug么?..

        麻烦您啦~ 谢谢!

         
    • Yunhong Gu

      Yunhong Gu - 2009-06-13

      把你用来测试的wordtest贴上来,我来测一下。这个和key/certificate没有关系。

       
    • Yunhong Gu

      Yunhong Gu - 2009-06-13

      或者你换一个文件,看看问题是不是还存在。

       
    • Yunhong Gu

      Yunhong Gu - 2009-06-16

      问题可能是一个UDT的bug引起的,不过我还不能确定,因为在我这里没法复制这个错误。请你下载一下最新的SVN代码(只更新UDT目录下的就可以了),看看问题是否还存在。

      下载后全局make clean,再make。

       

Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.





No, thanks