Thanks, Shane. Can you also link to this mailing list discussion from the
JIRA ticket?


--
Reynold Xin, AMPLab, UC Berkeley
http://rxin.org



On Sat, Sep 21, 2013 at 9:01 PM, Shane Huang <[email protected]>wrote:

> I summarized the opinions about Config in this post and added a comment on
> SPARK-544.
> Also post here below:
>
> 1) Define a Configuration class which contains all the options available
> for Spark application. A Configuration instance can be de-/serialized
> from/to a formatted file. Most of us tend to agree that Typesafe Config
> library is a good choice for the Configuration class.
> 2) Each application (SparkContext) has one Configuration instance and it is
> initialized by the application which creates it (either coded in app (apps
> could explicitly read from io stream or command line arguments), or system
> properties, or env vars).
> 3) For an application the overriding rule should be code > system
> properties > env vars. Over time we will deprecate the env vars and maybe
> even system properties.
> 4) When launching an Executor on a slave node, the Configuration is firstly
> initialized using the node-local configuration file as default (instead of
> the env vars at present), and then the Configuration passed from
> application driver context will override specific options specified in
> default. Certain options in app's Configuration will always override those
> in node-local, because these options need to be the consistent across all
> the slave nodes, e.g. spark.serializer. In this case if any such options is
> not set in app's Config, a value will be provided by the system. On the
> other hand, some options in app's Config will never override those in
> node-local. as they're not meat to be set in app, e.g. spark.local.dir
>
>
> On Wed, Sep 18, 2013 at 1:42 AM, Matei Zaharia <[email protected]
> >wrote:
>
> > Hi Shane,
> >
> > I agree with all these points. Improving the configuration system is one
> > of the main things I'd like to have in the next release.
> >
> > > 1) Usually the application developers/users and platform administrators
> > > belongs to two teams. So it's better to separate the scripts used by
> > > administrators and application users, e.g. put them in sbin and bin
> > folders
> > > respectively
> >
> > Yup, right now we don't have any attempt to install on standard system
> > paths.
> >
> > > 3) If there are multiple ways to specify an option, an overriding rule
> > > should be present and should not be error-prone.
> >
> > Yes, I think this should always be Configuration class in code > system
> > properties > env vars. Over time we will deprecate the env vars and maybe
> > even system properties.
> >
> > > 4) Currently the options are set and get using System property. It's
> hard
> > > to manage and inconvenient for users. It's good to gather the options
> > into
> > > one file using format like xml or json.
> >
> > I think this is the main thing to do first -- pick one configuration
> class
> > and change the code to use this.
> >
> > > Our rough proposal:
> > >
> > >   - Scripts
> > >
> > >   1. make an "sbin" folder containing all the scripts for
> administrators,
> > >   specifically,
> > >      - all service administration scripts, i.e. start-*, stop-*,
> > >      slaves.sh, *-daemons, *-daemon scripts
> > >      - low-level or internally used utility scripts, i.e.
> > >      compute-classpath, spark-config, spark-class, spark-executor
> > >   2. make a "bin" folder containing all the scripts for application
> > >   developers/users, specifically,
> > >      - user level app  running scripts, i.e. pyspark, spark-shell, and
> we
> > >      propose to add a script "spark" for users to run applications
> (very
> > much
> > >      like spark-class but may add some more control or convenient
> > utilities)
> > >      - scripts for status checking, e.g. spark and hadoop version
> > >      checking, running applications checking, etc. We can make this a
> > separate
> > >      script or add functionality to "spark" script.
> > >   3. No wandering scripts outside the sbin and bin folders
> >
> > Makes sense.
> >
> > >   -  Configurations/Options and overriding rule
> > >
> > >   1. Define a Configuration class which contains all the options
> > available
> > >   for Spark application. A Configuration instance can be de-/serialized
> > >   from/to a json formatted file.
> > >   2. Each application (SparkContext) has one Configuration instance and
> > it
> > >   is initialized by the application which creates it (either read from
> > file
> > >   or passed from command line options or env SPARK_JAVA_OPTS).
> > >   3. When launching an Executor on a node, the Configuration is firstly
> > >   initialized using the node-local configuration file as default. The
> > >   Configuration passed from application driver context will override
> any
> > >   options specified in default.
> >
> > This sounds great to me! The one thing I'll add is that we might want to
> > prevent applications from overriding certain settings on each node, such
> as
> > work directories. The best way is to probably just ignore the app's
> version
> > of those settings in the Executor.
> >
> > If you guys would like, feel free to write up this design on SPARK-544
> and
> > start working on it. I think it looks good.
> >
> > Matei
>
>
>
>
> --
> *Shane Huang *
> *Intel Asia-Pacific R&D Ltd.*
> *Email: [email protected]*
>

Reply via email to