Search in sources :

Example 1 with RemoteInterpreter

use of org.apache.zeppelin.interpreter.remote.RemoteInterpreter in project zeppelin by apache.

the class InterpreterFactory method connectToRemoteRepl.

private Interpreter connectToRemoteRepl(String interpreterSessionKey, String className, String host, int port, Properties property, String interpreterSettingId, String userName, Boolean isUserImpersonate) {
    int connectTimeout = conf.getInt(ConfVars.ZEPPELIN_INTERPRETER_CONNECT_TIMEOUT);
    int maxPoolSize = conf.getInt(ConfVars.ZEPPELIN_INTERPRETER_MAX_POOL_SIZE);
    String localRepoPath = conf.getInterpreterLocalRepoPath() + "/" + interpreterSettingId;
    LazyOpenInterpreter intp = new LazyOpenInterpreter(new RemoteInterpreter(property, interpreterSessionKey, className, host, port, localRepoPath, connectTimeout, maxPoolSize, remoteInterpreterProcessListener, appEventListener, userName, isUserImpersonate, conf.getInt(ConfVars.ZEPPELIN_INTERPRETER_OUTPUT_LIMIT)));
    return intp;
}
Also used : RemoteInterpreter(org.apache.zeppelin.interpreter.remote.RemoteInterpreter)

Example 2 with RemoteInterpreter

use of org.apache.zeppelin.interpreter.remote.RemoteInterpreter in project zeppelin by apache.

the class InterpreterFactory method createRemoteRepl.

Interpreter createRemoteRepl(String interpreterPath, String interpreterSessionKey, String className, Properties property, String interpreterSettingId, String userName, Boolean isUserImpersonate, InterpreterRunner interpreterRunner) {
    int connectTimeout = conf.getInt(ConfVars.ZEPPELIN_INTERPRETER_CONNECT_TIMEOUT);
    String localRepoPath = conf.getInterpreterLocalRepoPath() + "/" + interpreterSettingId;
    int maxPoolSize = conf.getInt(ConfVars.ZEPPELIN_INTERPRETER_MAX_POOL_SIZE);
    String interpreterRunnerPath;
    String interpreterGroupName = interpreterSettingManager.get(interpreterSettingId).getName();
    if (null != interpreterRunner) {
        interpreterRunnerPath = interpreterRunner.getPath();
        Path p = Paths.get(interpreterRunnerPath);
        if (!p.isAbsolute()) {
            interpreterRunnerPath = Joiner.on(File.separator).join(interpreterPath, interpreterRunnerPath);
        }
    } else {
        interpreterRunnerPath = conf.getInterpreterRemoteRunnerPath();
    }
    RemoteInterpreter remoteInterpreter = new RemoteInterpreter(property, interpreterSessionKey, className, interpreterRunnerPath, interpreterPath, localRepoPath, connectTimeout, maxPoolSize, remoteInterpreterProcessListener, appEventListener, userName, isUserImpersonate, conf.getInt(ConfVars.ZEPPELIN_INTERPRETER_OUTPUT_LIMIT), interpreterGroupName);
    remoteInterpreter.addEnv(env);
    return new LazyOpenInterpreter(remoteInterpreter);
}
Also used : Path(java.nio.file.Path) RemoteInterpreter(org.apache.zeppelin.interpreter.remote.RemoteInterpreter)

Example 3 with RemoteInterpreter

use of org.apache.zeppelin.interpreter.remote.RemoteInterpreter in project zeppelin by apache.

the class InterpreterFactoryTest method testRemoteRepl.

@Test
public void testRemoteRepl() throws Exception {
    interpreterSettingManager = new InterpreterSettingManager(conf, depResolver, new InterpreterOption(true));
    ArrayList<InterpreterInfo> interpreterInfos = new ArrayList<>();
    interpreterInfos.add(new InterpreterInfo(MockInterpreter1.class.getName(), "mock1", true, new HashMap<String, Object>()));
    interpreterSettingManager.add("mock1", interpreterInfos, new ArrayList<Dependency>(), new InterpreterOption(), Maps.<String, InterpreterProperty>newHashMap(), "mock1", null);
    Properties intp1Properties = new Properties();
    intp1Properties.put("PROPERTY_1", "VALUE_1");
    intp1Properties.put("property_2", "value_2");
    interpreterSettingManager.createNewSetting("mock1", "mock1", new ArrayList<Dependency>(), new InterpreterOption(true), intp1Properties);
    factory = new InterpreterFactory(conf, null, null, null, depResolver, false, interpreterSettingManager);
    List<InterpreterSetting> all = interpreterSettingManager.get();
    InterpreterSetting mock1Setting = null;
    for (InterpreterSetting setting : all) {
        if (setting.getName().equals("mock1")) {
            mock1Setting = setting;
            break;
        }
    }
    InterpreterGroup interpreterGroup = mock1Setting.getInterpreterGroup("user", "sharedProcess");
    factory.createInterpretersForNote(mock1Setting, "user", "sharedProcess", "session");
    // get interpreter
    assertNotNull("get Interpreter", interpreterGroup.get("session").get(0));
    assertTrue(interpreterGroup.get("session").get(0) instanceof LazyOpenInterpreter);
    LazyOpenInterpreter lazyInterpreter = (LazyOpenInterpreter) (interpreterGroup.get("session").get(0));
    assertTrue(lazyInterpreter.getInnerInterpreter() instanceof RemoteInterpreter);
    RemoteInterpreter remoteInterpreter = (RemoteInterpreter) lazyInterpreter.getInnerInterpreter();
    assertEquals("VALUE_1", remoteInterpreter.getEnv().get("PROPERTY_1"));
    assertEquals("value_2", remoteInterpreter.getProperty("property_2"));
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Dependency(org.apache.zeppelin.dep.Dependency) Properties(java.util.Properties) RemoteInterpreter(org.apache.zeppelin.interpreter.remote.RemoteInterpreter) Test(org.junit.Test)

Example 4 with RemoteInterpreter

use of org.apache.zeppelin.interpreter.remote.RemoteInterpreter in project zeppelin by apache.

the class InterpreterFactoryTest method interpreterRunnerTest.

@Test
public void interpreterRunnerTest() {
    InterpreterRunner mockInterpreterRunner = mock(InterpreterRunner.class);
    String testInterpreterRunner = "relativePath.sh";
    // This test only for Linux
    when(mockInterpreterRunner.getPath()).thenReturn(testInterpreterRunner);
    Interpreter i = factory.createRemoteRepl("path1", "sessionKey", "className", new Properties(), interpreterSettingManager.get().get(0).getId(), "userName", false, mockInterpreterRunner);
    String interpreterRunner = ((RemoteInterpreter) ((LazyOpenInterpreter) i).getInnerInterpreter()).getInterpreterRunner();
    assertNotEquals(interpreterRunner, testInterpreterRunner);
    testInterpreterRunner = "/AbsolutePath.sh";
    when(mockInterpreterRunner.getPath()).thenReturn(testInterpreterRunner);
    i = factory.createRemoteRepl("path1", "sessionKey", "className", new Properties(), interpreterSettingManager.get().get(0).getId(), "userName", false, mockInterpreterRunner);
    interpreterRunner = ((RemoteInterpreter) ((LazyOpenInterpreter) i).getInnerInterpreter()).getInterpreterRunner();
    assertEquals(interpreterRunner, testInterpreterRunner);
}
Also used : RemoteInterpreter(org.apache.zeppelin.interpreter.remote.RemoteInterpreter) Properties(java.util.Properties) RemoteInterpreter(org.apache.zeppelin.interpreter.remote.RemoteInterpreter) Test(org.junit.Test)

Example 5 with RemoteInterpreter

use of org.apache.zeppelin.interpreter.remote.RemoteInterpreter in project zeppelin by apache.

the class InterpreterSetting method createInterpreters.

// ////////////////////////// IMPORTANT ////////////////////////////////////////////////
// /////////////////////////////////////////////////////////////////////////////////////
// /////////////////////////////////////////////////////////////////////////////////////
// This is the only place to create interpreters. For now we always create multiple interpreter
// together (one session). We don't support to create single interpreter yet.
List<Interpreter> createInterpreters(String user, String interpreterGroupId, String sessionId) {
    List<Interpreter> interpreters = new ArrayList<>();
    List<InterpreterInfo> interpreterInfos = getInterpreterInfos();
    Properties intpProperties = getJavaProperties();
    for (InterpreterInfo info : interpreterInfos) {
        Interpreter interpreter = new RemoteInterpreter(intpProperties, sessionId, info.getClassName(), user);
        if (info.isDefaultInterpreter()) {
            interpreters.add(0, interpreter);
        } else {
            interpreters.add(interpreter);
        }
        LOGGER.info("Interpreter {} created for user: {}, sessionId: {}", interpreter.getClassName(), user, sessionId);
    }
    // require SessionConfInterpreter
    if (group.equals("livy")) {
        interpreters.add(new SessionConfInterpreter(intpProperties, sessionId, interpreterGroupId, this));
    } else {
        interpreters.add(new ConfInterpreter(intpProperties, sessionId, interpreterGroupId, this));
    }
    return interpreters;
}
Also used : RemoteInterpreter(org.apache.zeppelin.interpreter.remote.RemoteInterpreter) ArrayList(java.util.ArrayList) Properties(java.util.Properties) RemoteInterpreter(org.apache.zeppelin.interpreter.remote.RemoteInterpreter)

Aggregations

RemoteInterpreter (org.apache.zeppelin.interpreter.remote.RemoteInterpreter)27 Test (org.junit.Test)17 Properties (java.util.Properties)8 AbstractInterpreterTest (org.apache.zeppelin.interpreter.AbstractInterpreterTest)8 InterpreterContext (org.apache.zeppelin.interpreter.InterpreterContext)7 InterpreterSetting (org.apache.zeppelin.interpreter.InterpreterSetting)7 HashMap (java.util.HashMap)6 Interpreter (org.apache.zeppelin.interpreter.Interpreter)5 ExecutionContext (org.apache.zeppelin.interpreter.ExecutionContext)4 LocalResourcePool (org.apache.zeppelin.resource.LocalResourcePool)4 File (java.io.File)3 ArrayList (java.util.ArrayList)3 LinkedList (java.util.LinkedList)3 GUI (org.apache.zeppelin.display.GUI)3 AuthenticationInfo (org.apache.zeppelin.user.AuthenticationInfo)3 Path (java.nio.file.Path)2 AngularObjectRegistry (org.apache.zeppelin.display.AngularObjectRegistry)2 MockInterpreterA (org.apache.zeppelin.interpreter.remote.mock.MockInterpreterA)2 IOException (java.io.IOException)1 StringReader (java.io.StringReader)1