Zeppelin源码分析-独立解释器 JVM 相关分析(4)
来源:互联网 发布:出租屋网络千兆方案 编辑:程序博客网 时间:2024/06/01 11:06
RemoteInterpreterServer 类
该类由 interpreter.sh 脚本启动,在运行时会判断是否是 spark 解释器,如果是的话则使用 spark-submit 命令启动该类,否则则使用普通的 java 命令启动该类。
if [[ "${INTERPRETER_ID}" == "spark" ]]; then
该类的 main 方法根据端口号构造了一个 RemoteInterpreterServer 对象( Thirft 相关代码在构造函数中,其实都是规定的写法,这里就不再赘述了),然后开启该线程( run 方法那句话才真正开启了 Thrift 服务端 ),并一直等待该线程死掉才退出。
public static void main(String[] args) throws TTransportException, InterruptedException { int port = Constants.ZEPPELIN_INTERPRETER_DEFAUlT_PORT; if (args.length > 0) { port = Integer.parseInt(args[0]); } RemoteInterpreterServer remoteInterpreterServer = new RemoteInterpreterServer(port); remoteInterpreterServer.start(); remoteInterpreterServer.join(); System.exit(0);}
该类中是基本上所有的方法都是给 Thirft 的客户端的对象也就是 Client 对象调用的,当 Client 调用相应的方法时,会调用这个类中同名的方法,然后在这个方法中再去调用别的类完成相应的功能,这里对其中一些方法的作用进行总结:
- createInterpreter 方法根据客户端传入的 className , interpreterGroupId 等参数和反射机制构建出一个对应的解释器对象。
- getInterpreter 方法根据该 JVM 中唯一的 InterpreterGroup 对象以及传入的 sessionKey 和 className 参数直接获取到指定的解释器。
- interpret 方法就是最关键的方法,每次调用这个方法时,都会直接向调度队列中提交一个 job,然后一直等待 job 运行结束并将结果返回。
- convert 有两个重载方法,两个重载方法都在干一个事情,就是将 RemoteInterpreterContext 重新转化成 InterpreterContext 对象。
- 其他方法这里就不再赘述。
阅读全文
0 0
- Zeppelin源码分析-独立解释器 JVM 相关分析(4)
- Zeppelin源码分析-独立解释器 JVM 相关分析(1)
- Zeppelin源码分析-独立解释器 JVM 相关分析(2)
- Zeppelin源码分析-独立解释器 JVM 相关分析(3)
- Zeppelin源码分析-Interpreter 相关类(1)
- Zeppelin源码分析-Interpreter 相关类(2)
- Zeppelin源码分析-Interpreter 相关类(3)
- Zeppelin源码分析-调度和资源分析(1)
- Zeppelin源码分析-调度和资源分析(2)
- zeppelin源码分析——server端
- zeppelin源码分析(4)——主要的class分析(下)
- zeppelin源码分析(2)——distribution assembly过程分析
- zeppelin源码分析(0)——zeppelin要解决什么问题
- zeppelin源码分析(4)——interpreter的调度和任务封装
- zeppelin源码分析(5)——notebook的持久化
- zeppelin源码分析(6)——note的执行过程
- zeppelin源码分析(7)——interpreter调试
- zeppelin源码分析(6)——note的执行过程
- JS中的数组
- Java多线程基础--07之 线程休眠
- 257. Binary Tree Paths
- C++内置函数(内嵌函数,内联函数)
- Tomcat 部署 Spring mvc 失败
- Zeppelin源码分析-独立解释器 JVM 相关分析(4)
- Django静态资源和模板配置
- Find The Multiple
- 欢迎使用CSDN-markdown编辑器
- 行业人员为你独家解密IT培训的几种模式
- Linux下33个常用的Find实例
- python 点滴学
- 文章标题
- javascript数组的定义及其属性和方法的使用