This is a recurring pattern:
"I want to do X with the shell" -> Export a servlet on the regionserver that
outputs JSON, and have the shell fetch it
"I want to expose Y (e.g. slow queries)" -> Export a servlet on the
regionserver that outputs JSON and ...
Perhaps it's time to consider consolidating these interfaces on a single port,
where they differ, and more generally re-embed REST into the processes, like
the recent Thrift server embedding in the RS? This would be a new alternative
to the current REST gateway that would function more like HDFS httpfs: a client
can contact any RS with a RESTful operation on a table, and it will be
redirected via the HTTP standard mechanism to the RS actually hosting the
target region. And beside such a client API, these admin functions like 4368
and the JMX export over HTTP we inherit from Hadoop core.
A gateway component could still make sense here as an aggregator, for use cases
such as "give me a full cluster status dump" or "show me all the slow queries
on the cluster over the past hour", or rethinking how scanning via REST might
work, or where one might still want to control access into the cluster (it
would do request forwarding in that case).
Best regards,
- Andy