A: 前期准备工作

1. 安装vscode,详细请参见vscode官网https://code.visualstudio.com/docs/setup/linux,摘要如下:

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
yum check-update
sudo yum install code

2. 下载palo源代码,本次是基于0.8.1版本编译的

下载地址为:https://github.com/baidu/palo/archive/v0.8.1-beta.tar.gz

下载第三方依赖包: http://doris-opensource.bj.bcebos.com/doris-thirdparty-20181102.tar.gz?authorization=bce-auth-v1/069fc2786e464e63a5f1183824ddb522/2018-11-02T09:27:57Z/-1/host/b30621ca2be77596cec9477f6cfb3608b681206d73084338d1b2f1204a3e3848

3. 安装GCC 4.8.2+,Oracle JDK 1.8+,Python 2.7+,确认 gcc, java, python 命令指向正确版本, 设置 JAVA_HOME 环境变量

4. 安装其他依赖包

sudo yum install -y gcc-c++ libstdc++-static ant cmake byacc flex automake libtool binutils-devel bison

如果是0.8.2或master版本,还需要执行下面的命令:

ubuntu安装命令为:

sudo apt-get install libssl-dev

Centos安装命令为:

yum install -y openssl-devel

5. step 4安装完成后,执行下述命令

sudo updatedb
yum install redhat-lsb
yum install mlocate

B 编译

以下操作步骤在/home/workspace/palo0.8.1目录下进行

1. 解压A-2下载的0.8.1的源码

tar palo-0.8.-beta.tar.gz -d /home/workspace/palo0.8.1 

2. 解压第三方包到/home/workspace/palo0.8.1/thirdparty/src/ 目录下

tar -zxvf palo-thirdparty-.tar.gz -d /home/workspace/palo0.8.1/thirdparty/src/

3. 编译第三方依赖包

 sh  /home/workspace/palo0.8.1/thirdparty/build-thirdparty.sh

如果是0.8.2版本之后的版本,请修改build-thirdparty.sh的build_brpc函数,加上DPROTOBUF_PROTOC_EXECUTABLE的路径传参,否则在编译BRPC时会找不到protobuf的执行文件,报错

# brpc
build_brpc() {
check_if_source_exist $BRPC_SOURCE
if [ ! -f $CMAKE_CMD ]; then
echo "cmake executable does not exit"
exit
fi cd $TP_SOURCE_DIR/$BRPC_SOURCE
mkdir build -p && cd build
rm -rf CMakeCache.txt CMakeFiles/
$CMAKE_CMD -v -DBUILD_SHARED_LIBS= -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR \
-DBRPC_WITH_GLOG=ON -DCMAKE_INCLUDE_PATH="$TP_INSTALL_DIR/include" \
-DCMAKE_LIBRARY_PATH="$TP_INSTALL_DIR/lib;$TP_INSTALL_DIR/lib64" \
-DPROTOBUF_PROTOC_EXECUTABLE=$TP_INSTALL_DIR/bin/protoc ..
make -j$PARALLEL && make install
}

在本人的编译过程中,遇到boost-1.6.4编译无法通过的情况,解决办法为:

cd /home/workspace/palo0.8.1/thirdparty/src/boost_1_64_0
patch -p0 < ../../patches/boost-1.64.-gcc4..patch

执行完成后,重新执行

sh  /home/workspace/palo0.8.1/thirdparty/build-thirdparty.sh

4. 编译palo产品代码

sh /home/workspace/palo0.8.1/build.sh

注意:这个编译有以下几条指令:

sh build.sh  #同时编译be 和fe
sh build.sh --be #只编译be
sh build.sh --fe #只编译fe
sh build.sh --fe --be#同时编译be fe
sh build.sh --fe --be --clean#删除并同时编译be fe
sh build.sh --fe --clean#删除并编译fe
sh build.sh --be --clean#删除并编译be
sh build.sh --be --fe --clean#删除并同时编译be fe

如果不出意外,应该会编译成功,最终的部署文件将产出到 /home/workspace/palo0.8.1/output/ 目录下。如果还遇到其他问题,可以参照palo的安装文档https://github.com/baidu/palo/wiki/Palo-Install,常见错误一节。

C 部署调试 

1. 给be编译结果文件授权

chmod  /home/workspace/palo0.8.1/output/be/lib/palo_be

注意: /home/workspace/palo0.8.1/output/be/lib/palo_be为be的执行文件,默认编译是带-g的,也就是包含调试符号的。

2. 创建数据存放目录

通过查看/home/workspace/palo0.8.1/output/be/conf/be.conf

# INFO, WARNING, ERROR, FATAL
sys_log_level = INFO # ports for admin, web, heartbeat service
be_port =
be_rpc_port =
webserver_port =
heartbeat_service_port = # Choose one if there are more than one ip except loopback address.
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/
# Default value is empty.
priority_networks = 192.168.1.0/ # data root path, seperate by ';'
storage_root_path = /home/disk1/palo;/home/disk2/palo # Advanced configurations
# sys_log_dir = ${PALO_HOME}/log
# sys_log_roll_mode = SIZE-MB-
# sys_log_roll_num =
# sys_log_verbose_modules =
# log_buffer_level = -
# palo_cgroups

需要创建这两个文件夹,这是be数据存放的地方

mkdir -p /home/disk1/palo
mkdir -p /home/disk2/palo

3. 打开vscode,并打开be源码所在目录,在本案例中打开目录为/home/workspace/palo0.8.1/

4. 安装vscode ms c++调试插件

5. 创建launch.json文件,文件内容如下:

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "/home/workspace/palo0.8.1/output/be/lib/palo_be",
"args": [],
"stopAtEntry": false,
"cwd": "/home/workspace/palo0.8.1/",
"environment": [{"name":"PALO_HOME","value":"/home/workspace/palo0.8.1/output/be/"},
{"name":"UDF_RUNTIME_DIR","value":"/home/workspace/palo0.8.1/output/be/lib/udf-runtime"},
{"name":"LOG_DIR","value":"/home/workspace/palo0.8.1/output/be/log"},
{"name":"PID_DIR","value":"/home/workspace/palo0.8.1/output/be/bin"}
],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}

其中,environment定义了几个环境变量PALO_HOME  UDF_RUNTIME_DIR LOG_DIR  PID_DIR,这是palo_be运行时需要的环境变量,如果没有设置,启动会失败。

注意:如果希望是attach(附加进程)调试,配置代码如下:

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "attach",
"program": "/home/workspace/palo0.8.1/output/lib/palo_be",
"processId":,
"MIMode": "gdb",
"internalConsoleOptions":"openOnSessionStart",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}

配置中 "request": "attach",    "processId":26789,这两个配置节是重点: 分别设置gdb的调试模式为attach,附加进程的processId,否则会失败。如何查找进程id,可以在命令行中输入以下命令:

ps -A | grep palo_be

如图:

其中的26789即为当前运行的be的进程id.

如果当前用户不是root用户,会出现vscode启动gdb失败的情况,实际上vscode attach调试的原理是,启动一个脚本,在这个脚本中启动gdb并attach 到processId,具体脚本形如:

echo $$ > /tmp/Microsoft-MIEngine-Pid-inqdl1a1.ccl ;
cd /opt/doris/output/be/lib ;
DbgTerm=`tty` ;
set -o monitor ;
trap 'rm /tmp/Microsoft-MIEngine-In-ak1nvfsv.e7p
/tmp/Microsoft-MIEngine-Out-zt0opgme.h06
/tmp/Microsoft-MIEngine-Pid-inqdl1a1.ccl
/tmp/Microsoft-MIEngine-Cmd-vfkimaay.df7'
EXIT ;
read -n -p \"Superuser access is required to attach to a process.
Attaching as superuser can potentially harm your computer. Do you want to continue? [y/N]\" yn;
if [[ ! $yn =~ ^[Yy]$ ]] ; then exit ; fi;
/usr/bin/pkexec /usr/bin/gdb --interpreter=mi --tty=$DbgTerm < /tmp/Microsoft-MIEngine-In-ak1nvfsv.e7p > /tmp/Microsoft-MIEngine-Out-zt0opgme.h06 & clear;
pid=$! ;
echo $pid > /tmp/Microsoft-MIEngine-Pid-inqdl1a1.ccl ;
wait $pid;

但是如果当前用户的权限不是root,就会出现无法启动gdb,vscode无法连接上vscode,启动后毫无反映。解决办法为:

#第一种解决方法
sudo /usr/share/code/code --unity-launch #默认/root目录作为工作目录
#第2种解决方法
sudo /usr/share/code/code --user-data-dir {YOUR SOURCE DIR}

一个完整的lainch.json的例子如下:

 {
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Attach",
"type": "cppdbg",
"request": "attach",
"program": "/opt/doris/output/be/lib/palo_be",
"processId": "${command:pickProcess}",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "/opt/doris/output/be/lib/palo_be",
"args": [],
"stopAtEntry": false,
"cwd": "/opt/doris/output/be",
"environment": [
{
"name": "DORIS_HOME",
"value": "/opt/doris/output/be"
},
{
"name": "UDF_RUNTIME_DIR",
"value": "/opt/doris/output/be/lib/udf-runtime"
},
{
"name": "LOG_DIR",
"value": "/opt/doris/output/be/log"
},
{
"name": "PID_DIR",
"value": "/opt/doris/output/be/bin"
}
],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}

6. 点击调试即可。

CentOS 上使用vscode 调试百度大数据分析框架Apache Doris BE的更多相关文章

  1. Windows 上用IntelliJ Idea调试百度大数据分析框架Apache Doris FE

    A. 环境准备 1. 安装jdk1.8+, Intelij IDEA 2. linux上编译好fe前端代码,主要目的是获取自动生成的代码,加入到前段工程里面去用于在idea中编译fe工程.具体编译请参 ...

  2. 那些日常琐事(iPhone上的细小提示,大数据分析)

         今天早上蹲坑玩手机的时候,无意间看到了iPhone 给我一些提醒,震惊了我.也许你们会说,没什么大惊小怪的,当然做程序的都知道苹果公司早就记载了我们日常生活中很多数据,只是苹果公司目前还没做 ...

  3. 大数据分析引擎Apache Flink

    Apache Flink是一个高效.分布式.基于Java实现的通用大数据分析引擎,它具有分布式 MapReduce一类平台的高效性.灵活性和扩展性以及并行数据库查询优化方案,它支持批量和基于流的数据分 ...

  4. centos 下使用vscode 调试egg.js 注意事项

    这两天在centos下,直接用vscode运行egg.js的例子.遇到个问题就是当安装了vscode-egg插件,会遇到一个现象.就是同样的代码,Windows下调试可以顺利进行,但是centos有时 ...

  5. 分享一个.NET平台开源免费跨平台的大数据分析框架.NET for Apache Spark

    今天早上六点半左右微信群里就看到张队发的关于.NET Spark大数据的链接https://devblogs.microsoft.com/dotnet/introducing-net-for-apac ...

  6. 国人之光:大数据分析神器Apache Kylin

    一.简介 Apache Kylin是一个开源的.分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献 ...

  7. vscode调试js,安装了nodejs之后还出现无法在Path上找到运行时的node

    vscode 调试js,安装了nodejs之后还出现无法在Path上找到运行时的node. 重启vscode解决

  8. Quick BI助力云上大数据分析---深圳云栖大会

    在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家陌停对大数据智能分析产品 Quick BI 进行了深入的剖析.大会现场的精彩分享也赢得观众们的一直认可和热烈的反响. 大数据分析之路的挑 ...

  9. asp.net core 错误定位 & vs2017 远程调试部署在centos上的asp.net core程序

        前言 程序运行中会出现各种BUG. 排除BUG有三种方式. 一.访问页面直接报错误信息 出于安全,服务器是关闭这个功能的.在centos上可以用 命令设置环境变量来解决:   export A ...

随机推荐

  1. Binary Tree Level Order Traversal,层序遍历二叉树,每层作为list,最后返回List<list>

    问题描述: Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to ...

  2. codeforces 356 div2 C.Bear and Prime 100 数学

    C. Bear and Prime 100 time limit per test 1 second memory limit per test 256 megabytes input standar ...

  3. display:box,按比列划分,水平均分,及垂直等高

    一.按比例划分 <div class="test"> <p id="p1">Hello</p> <p id=" ...

  4. java set初始化问题

    set在执行add方法时,多次报空指针异常,后来发现Set初始化时,如果是 Set<Type> set = null; 这样的话,在执行 set.add(element)的时候会报空指针异 ...

  5. ddt中的data,unpack,file_data实现数据驱动--数据分离

    ddt:Class decorator for subclasses of ``unittest.TestCase``. -----``unittest.testcase``子类的类修饰器. 首先介绍 ...

  6. c# 如何调用python脚本

    1.net4.5: http://www.jb51.net/article/84418.htm 2.net4.0: https://www.cnblogs.com/shiyingzheng/p/605 ...

  7. myeclipse出现src作为报名一部分src.com.*

    打开历史悠久的项目,所有类报错,发现src变成了报名的一部分. 右击src->Build Path->Use as Source Folder即可. WebRoot中同理.

  8. C# Lock关键字

    lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁. lock语句根本使用的就是Monitor.Enter和Monitor.Exit,也就是说lock(this) ...

  9. Spring Boot 集成 FreeMarker 详解案例(十五)

    一.Springboot 那些事 SpringBoot 很方便的集成 FreeMarker ,DAO 数据库操作层依旧用的是 Mybatis,本文将会一步一步到来如何集成 FreeMarker 以及配 ...

  10. Android Studio 编译报错:Process 'command 'D:\SDK\AS\sdk\build-tools\23.0.0\aapt.exe'' finished with non-zero exit value 1

    AGPBI: {"kind":"error","text":"No resource identifier found for a ...