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

Reply via email to