On Mon, Apr 4, 2022 at 11:50 AM Keith Turner <ke...@deenlo.com> wrote:
>
> On Mon, Apr 4, 2022 at 11:17 AM Christopher <ctubb...@apache.org> wrote:
> >
> > However, I'm reluctant to include #2422, because I don't think it's near
> > ready enough, and by the time it is, it will be very last minute, and I
> > don't want to delay 2.1 further for it. Even if it's included as an
> > experimental feature, I think it has huge potential to be disruptive, or to
> > have a lot of churn by the time people actually have a chance to review it
> > thoroughly. Furthermore, I think there are possible alternatives (like a
> > fully client-side implementation, based on offline scanners) that would
> > avoid the tight coupling of a new service to Accumulo's core code. This
>
> There are some advantages to scan servers over direct file access to
> consider.  One is scalability of computation, if a web server is
> serving N client queries with scan servers those can potentially go to
> different scan servers.  With direct file access, all N queries and
> their iterator stacks would have to run in the web server.  Another is
> scalability of caching/memory.  When web servers send queries to scan
> servers using a sticky algorithm for assigning tablets to groups of
> scan servers, it could lead to good cache utilization and sharing that
> may not be possible when running scans directly in the web server. So
> scan servers allow scaling cache and computations for queries
> independently of web servers in way that may not be possible with
> direct file access.
>
> Another advantage to consider is isolation.  With direct file access
> and queries running directly in a web server, a bad query could bring
> down a web server and lots of unrelated queries.  Having a bad query
> bring down a scan server may be less disruptive.
>

I've forked this thread into its own discussion with a new subject
line, because, as I suggested in my original reply, my intent was not
to hijack the 2.1 planning thread with a discussion of the ScanServer
implementation details.

I'm fine with all those benefits (even if all the "could" and "may"
were turned into concrete "will"). My objection is not an objection to
the feature. It's an objection to including the feature in 2.1, based
on:

* readiness of the feature branch,
* availability of time to review/test such a big feature without delaying 2.1,
* its tight coupling to the core code in the implementation, and
* the possibility that solutions may exist with the above benefits
that are less tightly coupled has not yet been explored.

I would be more okay with including it if:

* it is ready,
* it has been tested and reviewed by the wider community,
* its coupling to the core Accumulo code is loosened, ideally if it's
designed to use only API/SPI, and could be released as a separate,
optional add-on. This might require improvements to API/SPI to expose
the features needed to help it function. This could also be done by
sub-classing the AccumuloClient. My concern here is the risk of
technical debt and the extra maintenance costs of increased complexity
for optional features that go unmaintained.

We've been hurt by premature inclusion of optional/experimental
features before that were rushed to release. No matter how awesome the
feature is... if it's niche and optional, we should consider these
risks and work to mitigate them. Otherwise, we'll be stuck with the
technical debt for years to come. With a little bit of caution, we can
make the feature available, without rushing, to satisfy the use case
while reducing the risks.

Also, one point of clarification: when I say "fully client side", I
only mean relative to Accumulo, not necessarily in the client process.
I'm lacking vocabulary to describe what I mean. As I understand it,
the current client code has been modified to connect to ScanServers
sitting off to the side of TabletServers, and the ScanServers are
basically modified TabletServers with less functionality. What I mean
is that instead of coupling the ScanServer to the TabletServer
implementation, and coupling the ScanServer client to the
AccumuloClient, there could be less coupling. The ScanServer itself
could behave like a client to Accumulo and/or HDFS (and maybe even
share some library code that we make public API, like RFile readers)
and it could have its own client (this is just one very rough outline
of an idea that could be explored). That way, the entire thing could
be removed without any change in Accumulo's code, to make it truly
optional (as in, optional to even have on the class path).

Reply via email to