dremio dac 模块在官方的定义中是dremio 分析中心的意思,代码上包含了,backend,common,daemon, ui
模块的功能
- backend
dremio 的server 部分,在构建打包之后会包含ui 部分的组件(前端),基于jersey 开发的web server ioc 部分利用了
guice,属于一个比较重量的东西,dremio 入口模块都是在此处进行配置以及初始化的,学习此模块有助于了解内部的
机制 - common
目前来说主要是一些注解处理供其他模块使用没有太多复杂的地方 - daemon
此模块属于dremio cli 能力的一部分,比如admin 管理部分就需要使用此功能(dremio 升级需要使用upgrade 命令),同时dremio 的启动也是
利用了此功能,同时也会使用backend 模块的能力
参考daemon admin cli 命令
bin=`dirname "${BASH_SOURCE-$0}"`
bin=`cd "$bin">/dev/null; pwd`
export DREMIO_ENV_SCRIPT="dremio-env"
. "$bin"/dremio-config
if [ -n "$CLIENT_GC_OPTS" ]; then
CLIENT_GC_OPTS=${CLIENT_GC_OPTS/"-Xloggc:<FILE-PATH>"/"-Xloggc:${loggc}"}
CLIENT_GC_OPTS=${CLIENT_GC_OPTS/"-Xlog:gc:<FILE-PATH>"/"-Xloggc:${loggc}"}
DREMIO_JAVA_OPTS="$DREMIO_JAVA_OPTS ${CLIENT_GC_OPTS}"
fi
DREMIO_JAVA_OPTS="$DREMIO_JAVA_OPTS -Xmx${DREMIO_MAX_HEAP_MEMORY_SIZE_MB:-4096}m"
DREMIO_JAVA_OPTS="$DREMIO_JAVA_OPTS $DREMIO_JAVA_CLIENT_EXTRA_OPTS $DREMIO_JAVA_EXTRA_OPTS"
DREMIO_JAVA_OPTS="$DREMIO_JAVA_OPTS $DREMIO_GC_OPTS"
if [ -z "$DREMIO_ADMIN_LOG_DIR" ]; then
if [ -w "$DREMIO_LOG_DIR" ]; then
DREMIO_ADMIN_LOG_DIR="$DREMIO_LOG_DIR"
else
DREMIO_ADMIN_LOG_DIR="$HOME/.dremio/"
fi
fi
Command="$1"
DateTime=$(date '+%Y-%m-%d_%H:%M:%S')
LOG_PARAM="-Ddremio.admin.log.path=${DREMIO_ADMIN_LOG_DIR}/admin_${Command}_${DateTime}.log"
if [ -n "$DREMIO_ADMIN_LOG_VERBOSITY" ]; then
LOG_PARAM="$LOG_PARAM -Ddremio.admin.log.verbosity=${DREMIO_ADMIN_LOG_VERBOSITY}"
fi
# cli 入口命令
exec "$JAVA" $DREMIO_JAVA_OPTS $LOG_PARAM -Dlogback.configurationFile=logback-admin.xml -cp $DREMIO_CLASSPATH \
com.dremio.dac.cmd.AdminCommandRunner $@
- ui 部分
主要包含了ui 以及ui-lib ,ui 才是dremio 的前端部分,ui-lib 是一些公共组件方便ui 部分使用
说明
大致了解dac 模块的项目组成有助于我们深入学习dremio,同时也可以更好的扩展运行dremio (尤其是backend 模块部分),cli 部分基于了
jcommander 进行开发,后边会详细介绍下daemon 模块的运行以及源码
参考资料
dac/daemon/src/main/java/com/dremio/dac/daemon/DremioDaemon.java
https://github.com/dremio/dremio-oss
https://jcommander.org/
https://github.com/cbeust/jcommander