前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Doris核心原理] Fe启动过程原理分析1: 从start_fe.sh开始说起

[Doris核心原理] Fe启动过程原理分析1: 从start_fe.sh开始说起

作者头像
小伟
发布2022-07-24 09:32:23
7700
发布2022-07-24 09:32:23
举报
文章被收录于专栏:魔都程序缘魔都程序缘

Doris是如何启动FE的服务的呢? 我们从社区官方FE的部署文档[http://doris.apache.org/master/zh-CN/installing/install-deploy.html#%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2]中得知, 执行以下命令可以启动一个FE进程.

代码语言:javascript
复制
sh bin/start_fe.sh --daemon

那start_fe.sh脚本是如何把Doris FE进程拉起来的呢? 我总结了这个脚本主要做了3件事情, 下面我们依次来揭秘.

  1. 设置Doris启动必须的环境变量

大部分的环境变量都是依赖DORIS_HOME(doris所在目录, 里面包含bin, lib等). 这里主要介绍下关于DORIS_HOME的脚本计算如下:

代码语言:javascript
复制
curdir=`dirname "$0"` 
curdir=`cd "$curdir"; pwd`

省略....

export DORIS_HOME=`cd "$curdir/.."; pwd`

关于以上脚本做如下解释

  • $0: 指的是 sh bin/start_fe.sh --daemon 启动命令中对于shell来说的的第1个参数, 显而易见是bin/start_fe.sh
  • dirname 文件名: 获取文件所在目录名. 此时curdir是bin所在的目录.

@@彩蛋@@: 如果你在系统任意一个目录执行, “bin/start_fe.sh”这段使用相对路径或者绝对路径, curdir值会怎么变化呢?

  • “cd "$curdir"; pwd”, 执行这个脚本后, 就能获取到start_fe.sh所在的全路径
  • “export DORIS_HOME=`cd "$curdir/.."; pwd`”, 我们可以看到目录向上获取, 就是最终DORIS_HOME

2. java检查

在脚本中搜索java关键字, 我们可以看到脚本验证了java版本(至少是java8)、java启动opts、java运行的CLASSPATH等. 脚本如下:

代码语言:javascript
复制
# check java version and choose correct JAVA_OPTS
java_version=$(jdk_version)
final_java_opt=$JAVA_OPTS
if [ $java_version -gt 8 ]; then
    if [ -z "$JAVA_OPTS_FOR_JDK_9" ]; then
        echo "JAVA_OPTS_FOR_JDK_9 is not set in fe.conf" >> $LOG_DIR/fe.out
        exit -1
    fi 
    final_java_opt=$JAVA_OPTS_FOR_JDK_9
fi
echo "using java version $java_version" >> $LOG_DIR/fe.out
echo $final_java_opt >> $LOG_DIR/fe.out
# add libs to CLASSPATH
for f in $DORIS_HOME/lib/*.jar; do
  CLASSPATH=$f:${CLASSPATH};
done
export CLASSPATH=${CLASSPATH}:${DORIS_HOME}/lib

3. 用jar -jar启动FE进程

启动前通过DORIS_HOME确定了上次启动的pid文件, 并检查防止重复启动. 最后将全部的参数传递给org.apache.doris.PaloFe中的main函数, 最终开始启动FE.

代码语言:javascript
复制
if [ ${RUN_DAEMON} -eq 1 ]; then
    nohup $LIMIT $JAVA $final_java_opt org.apache.doris.PaloFe ${HELPER} "$@" >> $LOG_DIR/fe.out 2>&1 </dev/null &
else
    $LIMIT $JAVA $final_java_opt org.apache.doris.PaloFe ${HELPER} "$@" >> $LOG_DIR/fe.out 2>&1 </dev/null
fi
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 魔都程序缘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档