[
https://issues.apache.org/jira/browse/HADOOP-6248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12756324#action_12756324
]
Chris Douglas commented on HADOOP-6248:
---------------------------------------
bq. As the proposal states, this is a framework, with enough context examples
and tests to show how the framework is used
Frameworks impose a discipline on the end user. They make decisions about the
admissible form of a solution and propose a model for conceiving of problems
within its space. In return, the user isn't merely relieved of the burden of
writing boilerplate code, but they're offered a compelling way to think about
their problem. Map/reduce is a good example. It forces a particular model of
parallel execution on the user, frustrating people who want to use it as a
resource allocator for a different parallel model, but for some problems, it's
an admissible, productive abstraction _in addition to_ a way to avoid writing
all the intermediate code. The latter is nice, but the former is what makes it
successful.
The concepts "context" and "test" in Circus are too vague to admit the
possibility of discipline, and because the tool makes no bold choices, it has
no taste. It's an execution engine equal to any other, a generic "for" loop
with semantics. What is the case for selecting these semantics over any others?
bq. Circus will let an organization write a context that uses a development
cluster of some sort, along with tests that emulate their production jobs, to
ensure that their jobs are running as expected on their development cluster.
Then, by simply switching contexts, the organization can run all of their jobs
on a different version of Hadoop.
This solves the wrong side of the problem, unless the deltas are small, e.g.
one is trying to test whether a release of Hadoop 0.x from provider P will work
like release 0.x from provider Q: a contribution of questionable interest to
Apache Hadoop. Cross-version compatibility still has too many corner cases to
usefully distill into a "context", and similarly "as expected" has too many
dimensions to express as a binary state. Whether performance is acceptable,
configuration appropriate, results accurate, SLAs satisfied, etc. are all
useful questions to ask. "The end user can write a shell script to verify any
of these" is exactly the point I make above. Organizations need to evaluate all
these factors, but I'm skeptical of an attempt to roll all of these questions
into a single, automated tool, particularly if the tool begins with this
ambition.
bq. My game plan is to use Circus to write some interesting system tests that
aren't currently in Hadoop's test plan. [...] I expect to tackle testing distcp
across different versions of Hadoop and HDFS upgrades.
Of course this is tested. It's often tested manually and at scale, but the
problem is deployment and any necessary investigation, not selecting the
distribution and configuring the submitting client.
bq. What are your specific objections to calling bin/hadoop-daemon.sh and
bin/hadoop, except that doing so is one more level of indirection?
It's only one more layer of indirection. As I said earlier, part of this is a
packaging problem: if we had a service API to start/stop/etc. Hadoop from the
client, then one could more easily develop tools like this while adhering to
some sort of contract. Because services are started and stopped via opaque
shell scripts, Hadoop is failing in the way I describe above, by not providing
tool writers with a coherent model for the service. This is the some of the
motivation behind the service lifecycle branch.
So this doesn't just need "more;" its premise is unlikely to yield a tool that
can be evaluated and included in the distribution. If it were scaled back to
solve a particular problem and propose a model for it, it is more likely to
find success, acceptance, and adoption.
> Circus: Proposal and Preliminary Code for a Hadoop System Testing Framework
> ---------------------------------------------------------------------------
>
> Key: HADOOP-6248
> URL: https://issues.apache.org/jira/browse/HADOOP-6248
> Project: Hadoop Common
> Issue Type: New Feature
> Components: test
> Environment: Python, bash
> Reporter: Alex Loddengaard
> Attachments: HADOOP-6248.diff, HADOOP-6248_v2.diff,
> HADOOP-6248_v3.diff
>
>
> This issue contains a proposal and preliminary source code for Circus, a
> Hadoop system testing framework. At a high level, Circus will help Hadoop
> users and QA engineers to run system tests on a configurable Hadoop cluster,
> or distribution of Hadoop. See the comment below for the proposal itself.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.