You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zeppelin.apache.org by "liuxun (JIRA)" <ji...@apache.org> on 2018/07/13 09:06:00 UTC

[jira] [Created] (ZEPPELIN-3623) Create a cluster interpreter process module design

liuxun created ZEPPELIN-3623:
--------------------------------

             Summary: Create a cluster interpreter process module design
                 Key: ZEPPELIN-3623
                 URL: https://issues.apache.org/jira/browse/ZEPPELIN-3623
             Project: Zeppelin
          Issue Type: Sub-task
          Components: zeppelin-server
    Affects Versions: 0.9.0
            Reporter: liuxun
            Assignee: liuxun
             Fix For: 0.9.0


h3.  
 # Create an interpreter process in the specified Zeeppelin-Server via Thrift

{{zeppelin/zeppelin-interpreter/src/main/thrift/ClusterManagerService.thrift}}

 # Create interpreter process parameters remotely
  struct ClusterInterpreterParam {
    1: string host,
    2: i32 port,
    3: string userName,
    4: string noteId,
    5: string replName
  }
 # Create a cluster interpreter process function
  service ClusterManagerService {
    bool startInterpreterProcess(1: ClusterInterpreterParam clusterInterpreterParam);
  }
The Interpreter process in Zeppelin-Server is created or used in the getOrCreateClusterIntpProcess() function of the ManagedInterpreterGroup class, so the process of creating the cluster interpreter process is put into this function;

*The logic for creating a cluster interpreter is as follows*:

 ** The user performs a note operation on the Zepplin-Server-A server;

 ** If the remoteInterpreterProcess instance is not created in the getOrCreateClusterIntpProcess() function, find the Zepplin-Server with the idle resources from the metadata of the cluster.

 ** If the server with idle resources is the Zepplin-Server-A native, the Interpreter Process instance is created directly locally;

 ** If the server with idle resources is not Zepplin-Server-A, Zepplin-Server-A calls the callStartInterpreterProcess() function interface of the Zepplin-Server-B server through the Thrift interface, and the Interpreter Process instance is performed by getOrCreateClusterIntpProcess() in the Zepplin-Server-B server. Creation.

 ** In particular, the remote creation process needs to be aware that because the Interpreter Process instance is created locally or remotely in the same code logic, in order to avoid the getOrCreateClusterIntpProcess() infinite loop call, a createClusterInptProcess boolean variable is added, if there are multiple Zepplin-Servers. The composedClusterInptProcess is equal to true in the cluster environment. It is equal to false in the single server environment. The createClusterInptProcess boolean variable is set to false in the Zepplin-Server-B server when the callStartInterpreterProcess() function is called, so getOrCreateClusterIntpProcess() It is possible to create an Interpreter Process instance locally on the Zepplin-Server-B server;

 ** After the Interpreter Process instance is created locally on the Zepplin-Server-B server, the Interpreter Process instance will report its Thrift IP and port to the Zeppelin cluster metadata. The remoteInterpreterProcess in the Zepplin-Server-A server is connected to the cluster metadata. The Thrift IP and port can establish a remote connection across servers;



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)