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. SRM 585 DIV2

    250pt: 一水... 500pt:题意: 给你一颗满二叉树的高度,然后找出出最少的不想交的路径并且该路径每个节点只经过一次. 思路:观察题目中给的图就会发现,其实每形成一个 就会存在一条路径. 我 ...

  2. vs警告 当前源代码跟内置的版本不一致解决办法

    本文转载于:http://blog.csdn.net/bull521/article/details/51334464 vs警告 当前源代码跟内置的版本不一致解决办法 1.删除掉 我的文档/visua ...

  3. WEB前端性能优化常见方法

    1.https://segmentfault.com/a/1190000008829958 (WEB前端性能优化常见方法) 2..https://blog.csdn.net/mahoking/arti ...

  4. oracle修改字符编码

    ALTER DATABASE character set INTERNAL_USE ZHS16GBK;  ALTER DATABASE CHARACTER SET ZHS16GBK;  oracle修 ...

  5. Vue.js组件设计原则

    页面上把每个独立可以交互的区域视为一个组件 每个组件对应一个工程目录,组件所需要的各种资源在这个目录下就近维护 页面不过是组件的容器,组件可以嵌套自由组合形成完整的页面

  6. Android自定义view控件

    转载自: http://blog.163.com/ppy2790@126/blog/static/103242241201382210910473/ 开发自定义控件的步骤: 1.了解View的工作原理 ...

  7. TStringGrid的Rows索引值 和 Cells的 索引值, Row的赋值

    Caption := sgShopList.Rows[sgShopList.RowCount +].CommaText; Caption := sgShopList.Rows[sgShopList.R ...

  8. win32程序显示网页

    说是win32,实际程序中使用了atl的东西.所以新建win32程序时,记得勾选使用atl: 代码如下: #include "stdafx.h" #include "Wi ...

  9. Yahoo! Finance财经数据PYTHON临时读取方法

    本篇文章转自简书:http://www.jianshu.com/p/85d563d326a9 这段时间在看量化策略,找到了一个比较不错的开源项目,但是yahoo金融的数据源一直没有找到,在网上找到了这 ...

  10. 51Nod 1088:最长回文子串(暴力)

    1088 最长回文子串  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串. 输入 ...