reef-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yunseong Lee <yunseong....@me.com>
Subject Re: Question about Reef-webserver
Date Wed, 08 Oct 2014 17:11:30 GMT
Thanks for the explanation in detail Yingda, Markus and Julia.
Now I understand why users are not always able to set the port number.

But I still have a question about binding parameter. I already tried to bind a port number
as you suggested:

  final Configuration httpServerConfiguration = Tang.Factory.getTang().newConfigurationBuilder() 
  .bindNamedParameter(PortNumber.class, "9000") 
  .build(); 

However, since PortNumber is not a public class, it is not available to use in my class so
that I could not bind the parameter.
Would you please let me know if I missed some point?

Thank you.
- Yunseong



I tried the way Julia suggested, but PortNumber is not a public class, 

On October 9, 2014 at 1:07:01 AM, Markus Weimer (weimer@apache.org) wrote:

Hi,  

mostly: What Yingda said.  

Typically, we are on clusters with shared machines where one physical  
machine (and IP address) hosts multiple containers. Assuming that any one  
particular port is available for us isn't possible. Hence, the constructor  
of HttpServerImpl tries different ports until an available one is found. In  
the case of the Driver, we use the found port in order to register the  
application with the resource manager to enable discovery through the RM,  
which is part of the infrastructure of the cluster and therefore a known  
entity.  


The way HttpServerImpl does this searchfor a port is configurable, but it  
starts with com.microsoft.reef.webserver.PortNumber, which defaults  
to 8080. If you want to start the search elsewhere, you can bind a  
different value to that named parameter.  

Hope this helps,  

Markus  

On Wed, Oct 8, 2014 at 7:15 AM, Yingda Chen <ydchen@gmail.com> wrote:  

> We had similar discussions before, and for most usage cases, we depend on  
> YARN to do the http traffic forwarding, which will automatically find the  
> port used by Reef (AM) http server.  
>  
> I agree that allowing user to set port can provide more flexibility, but  
> with flexibility also comes some uncertainty - since we cannot guarantee  
> that the port specified by the user can be used, as another application may  
> already be using that. In fact, on a multi-tenant cluster where multiple  
> Reef applications are running, port-collision is inevitable. I guess we can  
> still do it and make it clear to the user that REEF can only bind the port  
> on a best-effort basis. I am open to that discussion :)  
>  
> -Yingda  
>  
> On Wed, Oct 8, 2014 at 3:21 AM, Yunseong Lee <yunseong.lee@me.com> wrote:  
>  
> > Hi, I am building an application using Reef-webserver and I have a  
> > question.  
> >  
> > Is there a way to set a port number other than the default value(8080)?  
> >  
> > As far as I have found, HttpServer does not have a method to set the port  
> > number.  
> > I found some tests binding PortNumber via Configuration, but since  
> > PortNumber is not a public class  
> > it is not available outside the package.  
> >  
> > In my opinion, it is reasonable to allow user to set the port number.  
> > When another application reserved 8080 port, I found the app and  
> > reef-webserver both go wrong.  
> >  
> > Any thoughts?  
> >  
> > Thank you.  
> > - Yunseong  
>  

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message