Uploaded image for project: 'Hadoop Common'
  1. Hadoop Common
  2. HADOOP-3969

Provide Mechanism to optionally expose public org.apache.hadoop.util.Services APIs

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Major
    • Resolution: Incomplete
    • None
    • None
    • None
    • None

    Description

      Enhance manageability of Hadoop Services by providing Jute, Thrift, REST, ... APIs to select methods in the Service class (or potentially others).
      This will allow external tools written in a myriad of languages to query the state of Hadoop Servers and/or interact with them.

      This can be encapsulated in the Service class by defining a very simple interface and then optionally instantiating such an implementation provided in the Configuration.

      Some methods to be implemented include all the public methods in Service:

      ping()
      isRunning()
      terminate()
      getServiceState()
      verifyServiceState()
      isTerminated(),
      

      INTERFACE:

      package org.apache.hadoop.util;
      
      public interface ExposeServiceAPIs {
      
         /**
         * @param service - the service whose APIs are to be exposed
        * @param  serviceName - a symbolic name for the service
        * @param configuration - the hadoop configuration object
       **/
        public void initialize(Service service, String serviceName, Configuration conf) throws IOException,
        public boolean start();
        public boolean stop();
      } ;
      
      

      Two straightforward implementations of this would be:

      1. Servlet that exposes the APIs via REST
      2. Thrift DDL of the service APIs and an implementation in Java + bindings in C++, Java, Perl, Python, Ruby, PHP

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              wyckoff Pete Wyckoff
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: