[jira] [Created] (ZEPPELIN-4228) Interpreter name contains spaces and cannot be deleted

2019-07-07 Thread liuxun (JIRA)
liuxun created ZEPPELIN-4228:


 Summary: Interpreter name contains spaces and cannot be deleted
 Key: ZEPPELIN-4228
 URL: https://issues.apache.org/jira/browse/ZEPPELIN-4228
 Project: Zeppelin
  Issue Type: Bug
Reporter: liuxun


Add new interpreter type, this interpreter type cannot be deleted if the 
interpreter name contains spaces



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


[jira] [Created] (ZEPPELIN-3649) When multiple people edit the same note, there is no prompt message.

2018-07-22 Thread liuxun (JIRA)
liuxun created ZEPPELIN-3649:


 Summary: When multiple people edit the same note, there is no 
prompt message.
 Key: ZEPPELIN-3649
 URL: https://issues.apache.org/jira/browse/ZEPPELIN-3649
 Project: Zeppelin
  Issue Type: Improvement
  Components: zeppelin-server
Reporter: liuxun


When multiple people edit the same note through different zeppelin-web, 
zeppelin has no prompt message.
This way the notes are easily covered by different people, resulting in 
incomplete notes.

I suggest that when the first person opens note-1, if a second person also 
opens note-1, the second person's note should prompt, "This note is being 
edited by someone", so that You can avoid two people writing the same note at 
the same time, covering each other, causing the loss of note content.

Please discuss whether you need to implement this feature.  If need to 
implement this feature, I am glad to.



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


[jira] [Created] (ZEPPELIN-3626) Cluster management and client module design

2018-07-15 Thread liuxun (JIRA)
liuxun created ZEPPELIN-3626:


 Summary: Cluster management and client module design
 Key: ZEPPELIN-3626
 URL: https://issues.apache.org/jira/browse/ZEPPELIN-3626
 Project: Zeppelin
  Issue Type: Sub-task
  Components: zeppelin-server
Affects Versions: 0.9.0
Reporter: liuxun
Assignee: liuxun


h4. Cluster management service

The cluster management service uses the Raft algorithm library copycatServer to 
form a service cluster with consistent service status in the Zeppelin cluster.
 # The cluster management service runs in each Zeppelin-Server;

 # The cluster management service establishes a cluster by using the 
copycatServer class of the Raft algorithm library, maintains the 
ClusterStateMachine, and manages the service state metadata of each 
Zeppelin-Server through the PutCommand, GetQuery, and DeleteCommand operation 
commands.

 # Launch the Thrift service in the cluster management service to enable the 
cluster interpreter process to be created by remote calls in each 
Zeppelin-Server;

h4. Cluster management client

The cluster management client connects to the cluster management service for 
metadata operations of services and processes through the Raft algorithm 
library copycatClient.
 # The cluster management client runs in each Zeppelin-Server and Zeppelin 
Interpreter process;

 # The cluster management client manages the Zeppelin-Server and Zeppelin 
Interpreter process state (metadata information) in the ClusterStateMachine by 
using the copycatClient class of the Raft library to connect to the 
copycatServer. When the Zeppelin-Server and Zeppelin Interpreter processes are 
started, They are added to the ClusterStateMachine and are removed from the 
ClusterStateMachine when the Zeppelin-Server and Zeppelin Interpreter processes 
are closed.

 # In a distributed environment, network anomalies, network delays, or service 
exceptions may occur. After copycatClient submits metadata to the cluster, it 
checks whether the submission is successful. After the submission fails, the 
metadata is saved in the local message queue. Retrying by copycatClient through 
a separate commit thread;

h4. Cluster monitoring module

The cluster monitoring module checks if each Zeppelin-Server and Zeppelin 
Interpreter process in the cluster is active
 # The cluster monitoring module runs in each Zeppelin-Server and Zeppelin 
Interpreter process, periodically sending heartbeat data of the service or 
process to the cluster;

 # When the cluster monitoring module runs in Zeppelin-Server, it collects the 
CPU and MEMORY usage of the server, and sends the resource usage rate to the 
cluster's ClusterStateMachine. When the cluster interpreter process needs to be 
created, the server is idle from the resource. Created in ;

 # Resource usage statistics strategy, in order to avoid the instantaneous high 
peak and low peak of the server, the cluster monitoring will collect the 
average resource usage in the most recent period for reporting, and improve the 
reasonable line and effectiveness of the server resources as much as possible;

 # When the cluster monitoring module runs in Zeppelin-Server, it checks the 
heartbeat data of each Zeppelin-Server and Zeppelin Interpreter process. If it 
times out, it considers that the service or process is abnormally unavailable 
and removes it from the cluster.



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


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

2018-07-13 Thread liuxun (JIRA)
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)


[jira] [Created] (ZEPPELIN-3613) Cluster Session module design

2018-07-11 Thread liuxun (JIRA)
liuxun created ZEPPELIN-3613:


 Summary: Cluster Session module design
 Key: ZEPPELIN-3613
 URL: https://issues.apache.org/jira/browse/ZEPPELIN-3613
 Project: Zeppelin
  Issue Type: Sub-task
  Components: zeppelin-server
Affects Versions: 0.9.0
Reporter: liuxun
 Fix For: 0.9.0


h3. Since the Interpreter process in Zeppelin is a resident process, the 
Zeppelin-Server service natively saves the runtime environment of the user, 
Note, and the Thrift remote connection of the corresponding interpreter process 
through the Session, but in a distributed environment, you It is not possible 
to determine which Zeppelin-Server service the user will log in to through the 
domain name, so the Zeppelin-Server service must be able to support users who 
are still on the A server to continue to use it in the B server. For this 
reason, we have two implementations:
 # Cluster unified cache Session

The Session created in each Zeppelin-Server service is stored in a unified 
manner through Cluster MetaData, and the session information is obtained from 
Cluster MetaData regardless of which Zeppelin-Server service the user logs in.

Advantages and Disadvantages: The code size is large, and it is complicated to 
synchronize the session state logic in each server. The metadata stored in 
Cluster MetaData is also more;

 # Rebuild Session

The user who originally uses the A server will have the user's session. When 
the user logs in to the B server, the Zeppelin-Server service of the B server 
re-establishes the user in the B server according to the user and the Note 
information combined with the Interpreter metadata in the Cluster MetaData. 
Session

Advantages and Disadvantages: The code implementation is relatively simple, and 
there is no need to synchronize the session state in each server. The process 
of rebuilding the Session is very fast and simple;



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


[jira] [Created] (ZEPPELIN-3612) Cluster High availability module design

2018-07-11 Thread liuxun (JIRA)
liuxun created ZEPPELIN-3612:


 Summary: Cluster High availability module design
 Key: ZEPPELIN-3612
 URL: https://issues.apache.org/jira/browse/ZEPPELIN-3612
 Project: Zeppelin
  Issue Type: Sub-task
  Components: zeppelin-server
Affects Versions: 0.9.0
Reporter: liuxun
 Fix For: 0.9.0


h3. In the case of a partial Zeppelin-Server service process or server 
exception, the service can continue to be served; the Zeppelin-Server service 
can sense the availability of all Interpreter processes in the server cluster;
 # *Raft protocol*

The Raft protocol ensures that only N/2+1 servers in the cluster need to be in 
a normal state without affecting the service.

 # *Interpreter process monitoring*

The Interpreter process creates a process heartbeat thread through the 
ClusterMonitor class, and periodically sends the Interpreter process heartbeat 
information and the IP and port information of the Thrift interface to the 
cluster.

When the Interpreter process is closed, the process of deleting the process 
metadata is sent to the cluster.

The process health check thread is created in the Zeppelin-Server through the 
ClusterMonitor class. The heartbeat of all Interpreter processes in the Cluster 
MetaData is periodically checked. If the timeout expires, the process metadata 
is deleted to prevent the Interpreter process from being abnormal.

 # *Interpreter process rebuild*

When the interpreter process is created, the Zeppelin-Server detects the 
session information of the Interpreter process. First, it checks whether the 
process is valid. If it is not available, the corresponding session is cleared 
and the Interpreter process is re-created. Preventing an Interpreter process 
from being abnormal or a server exception on the process causes Interpreter to 
be unavailable.



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


[jira] [Created] (ZEPPELIN-3611) High utilization module design

2018-07-11 Thread liuxun (JIRA)
liuxun created ZEPPELIN-3611:


 Summary: High utilization module design
 Key: ZEPPELIN-3611
 URL: https://issues.apache.org/jira/browse/ZEPPELIN-3611
 Project: Zeppelin
  Issue Type: Sub-task
  Components: zeppelin-server
Affects Versions: 0.9.0
Reporter: liuxun
 Fix For: 0.9.0


h3. When you create an Interpreter process in Zeppelin-Server, you can create 
an Interpreter process in another Zeppelin-Server from a remote server with 
cluster resources, and establish a session.
 # *Server resource reporting*

Zeppelin-Server collects server hardware CPU and memory usage, periodically 
reports to the cluster, and stores metadata in Cluster MetaData.

 # *Create an interpreter process remotely*

When Zeppelin-Server creates an Interpreter process, first find out the server 
with idle resources from Cluster MetaData, and create an Interpreter process 
remotely through Thrift.

 # *Reuse the Interpreter process*

When Zeppelin-Server creates an Interpreter process, it first looks up the 
Cluster MetaData to see if the required Interpreter process already exists. If 
it already exists, it obtains the IP and port of the Interpreter process's 
Thrift through the Cluster MetaData to create the user's note and Interpreter. 
Session association;



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


[jira] [Created] (ZEPPELIN-3610) Cluster Raft module design

2018-07-11 Thread liuxun (JIRA)
liuxun created ZEPPELIN-3610:


 Summary: Cluster Raft module design
 Key: ZEPPELIN-3610
 URL: https://issues.apache.org/jira/browse/ZEPPELIN-3610
 Project: Zeppelin
  Issue Type: Sub-task
  Components: zeppelin-server
Affects Versions: 0.9.0
Reporter: liuxun
 Fix For: 0.9.0


By using the Raft protocol, multiple Zeppelin-Server groups are built into a 
Zeppelin cluster, the cluster State Machine is maintained through the Raft 
protocol, and the services in the cluster are agreed upon. The Zeppelin-Server 
and Zeppelin-Interperter services and processes are stored in the Cluster 
MetaData. Metadata information;



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


[jira] [Created] (ZEPPELIN-3471) Needs clustering features like hdfs to improve the availability of zeppelin

2018-05-17 Thread liuxun (JIRA)
liuxun created ZEPPELIN-3471:


 Summary: Needs clustering features like hdfs to improve the 
availability of zeppelin
 Key: ZEPPELIN-3471
 URL: https://issues.apache.org/jira/browse/ZEPPELIN-3471
 Project: Zeppelin
  Issue Type: New Feature
  Components: zeppelin-server
Reporter: liuxun


# At present, Zeppelin's Interpreter is only started on the same machine of the 
Zeppelin server. It cannot provide load balancing capability and more 
reasonable server resource utilization for high availability and a large number 
of users.
 # Zeppelin-server needs to provide multiple copy services on multiple servers;
 # Each zeppelin-server manages the life cycle of Interpreter processes running 
on this machine;
 # The Interpreter process can be started on any server through any 
zeppelin-web;



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