[ 
https://issues.apache.org/jira/browse/SAMZA-348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14134414#comment-14134414
 ] 

Chris Riccomini commented on SAMZA-348:
---------------------------------------

bq. the user might lose track of what the exact config is

For this, I was thinking that configure-job.sh could have a --read switch, to 
get all existing configs for a job. I agree it's super useful to have the AM 
expose them as well, which we can continue to do.

bq. Avoid all concurrency issues.

Isn't there still a concurrency issue if two writers update the AM UI at the 
same time?

bq. We can reflect the current config accurately (for example - if within 
LinkedIn, the user only modifies the config via cfg2, then there's an extra 
overhead of keeping that in sync with the actual config - since config 
mutations might be done via the AM).

For this kind of use case, I was figuring we'd have configure-job.sh behave a 
lot like run-job.sh does today: take a URI and a factory, and resolve configs. 
For example, something like:

{noformat}
$ configure-job.sh --uri kafa://localhost:1025 --job.name foo --job.id bar 
--config-file=file://... --config-factory=PropertiesConfigFactory
{noformat}

You could have configure-job.sh run against a static config file every time 
run-job.sh is run. This would essentially mirror how Samza currently works.

One other thought: if we depend on a UI (in YARN or otherwise), we get into a 
problem where we might need to edit config while the job is down (the UI is 
unavailable).

I haven't really fully baked any of this, but this is just along the lines of 
what I'm thinking right now. I think it's OK to live with concurrency issues 
for config, but for offsets, it could be problematic. I haven't spent much time 
thinking about how to fix that yet.

> Configure Samza jobs through a stream
> -------------------------------------
>
>                 Key: SAMZA-348
>                 URL: https://issues.apache.org/jira/browse/SAMZA-348
>             Project: Samza
>          Issue Type: Bug
>    Affects Versions: 0.7.0
>            Reporter: Chris Riccomini
>              Labels: project
>         Attachments: DESIGN-SAMZA-348-0.md, DESIGN-SAMZA-348-0.pdf
>
>
> Samza's existing config setup is problematic for a number of reasons:
> # It's completely immutable once a job starts. This prevents any dynamic 
> reconfiguration and auto-scaling. It is debatable whether we want these 
> feature or not, but our existing implementation actively prevents it. See 
> SAMZA-334 for discussion.
> # We pass existing configuration through environment variables. YARN exports 
> environment variables in a shell script, which limits the size to the varargs 
> length on the machine. This is usually ~128KB. See SAMZA-333 and SAMZA-337 
> for details.
> # User-defined configuration (the Config object) and programmatic 
> configuration (checkpoints and TaskName:State mappings (see SAMZA-123)) are 
> handled differently. It's debatable whether this makes sense.
> In SAMZA-123, [~jghoman] and I propose implementing a ConfigLog. This log 
> would replace both the checkpoint topic and the existing config environment 
> variables in SamzaContainer and Samza's YARN AM.
> I'd like to keep this ticket's scope limited to just the implementation of 
> the ConfigLog, and not re-designing how Samza's config is used in the code 
> (SAMZA-40). We should, however, discuss how this feature would affect dynamic 
> reconfiguration/auto-scaling.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to