A: 前期准备工作

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-updatesudo yum install code

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

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安装完成后,执行下述命令

sudoupdatedbyum install redhat-lsbyum install mlocate

B 编译

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

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

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

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

tar -zxvf palo-thirdparty-20180418.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_SOURCEif [ ! -f $CMAKE_CMD ]; then

echo "cmake executable does not exit"exit1

ficd $TP_SOURCE_DIR/$BRPC_SOURCEmkdir build -p &&cd buildrm -rf CMakeCache.txt CMakeFiles/$CMAKE_CMD-v -DBUILD_SHARED_LIBS=0 -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_0patch -p0 < ../../patches/boost-1.64.0-gcc4.8.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 和fesh build.sh --be #只编译besh build.sh --fe #只编译fesh build.sh --fe --be#同时编译be fesh build.sh --fe --be --clean#删除并同时编译be fesh build.sh --fe --clean#删除并编译fesh build.sh --be --clean#删除并编译besh 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 755 /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

# portsforadmin, web, heartbeat service

be_port= 9060be_rpc_port= 9070webserver_port= 8040heartbeat_service_port= 9050# Choose oneif there are morethan 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/24# Default value is empty.

priority_networks= 192.168.1.0/24# 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-1024# sys_log_roll_num= 10# sys_log_verbose_modules=# log_buffer_level= -1# palo_cgroups

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

mkdir -p /home/disk1/palomkdir -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":26789,"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 1 -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 0; 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的例子如下:

1 {2 //Use IntelliSense to learn about possible attributes.3 //Hover to view descriptions of existing attributes.4 //For more information, visit:https://go.microsoft.com/fwlink/?linkid=830387

5 "version": "0.2.0",6 "configurations": [7 {8 "name": "(gdb) Attach",9 "type": "cppdbg",10 "request": "attach",11 "program": "/opt/doris/output/be/lib/palo_be",12 "processId": "${command:pickProcess}",13 "MIMode": "gdb",14 "setupCommands": [15 {16 "description": "Enable pretty-printing for gdb",17 "text": "-enable-pretty-printing",18 "ignoreFailures": true

19 }20 ]21 },22 {23 "name": "(gdb) Launch",24 "type": "cppdbg",25 "request": "launch",26 "program": "/opt/doris/output/be/lib/palo_be",27 "args": [],28 "stopAtEntry": false,29 "cwd": "/opt/doris/output/be",30 "environment": [31 {32 "name": "DORIS_HOME",33 "value": "/opt/doris/output/be"

34 },35 {36 "name": "UDF_RUNTIME_DIR",37 "value": "/opt/doris/output/be/lib/udf-runtime"

38 },39 {40 "name": "LOG_DIR",41 "value": "/opt/doris/output/be/log"

42 },43 {44 "name": "PID_DIR",45 "value": "/opt/doris/output/be/bin"

46 }47 ],48 "externalConsole": false,49 "MIMode": "gdb",50 "setupCommands": [51 {52 "description": "Enable pretty-printing for gdb",53 "text": "-enable-pretty-printing",54 "ignoreFailures": true

55 }56 ]57 }58 ]59 }

6. 点击调试即可。

apache目录 vscode_CentOS 上使用vscode 调试百度大数据分析框架Apache Doris BE相关推荐

  1. 一文了解 Github 上人气最高的十大 JavaScript 框架!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 在这篇文章中,我们将介绍Github上人气最高的十大JavaScript框架. JavaSc ...

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

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

  3. 大数据分析引擎Apache Flink升级成为Apache顶级项目

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

  4. 初探百度大数据分析挖掘平台Jarvis

    在人工功能时代,企业既想通过大数据分析.挖掘技术提升效率,又被大数据量分析.机器学习挖掘等相关技术门槛阻扰,需要一款数据分析挖掘产品跨越这个鸿沟.Jarvis在这个背景下应运而生.Jarvis是支撑大 ...

  5. linux上apache目录在哪,Linux下Apache目录明细

    与Apache服务器相关的重要目录和文件如下: /etc/httpd/是Apache服务器的根目录 /etc/httpd/conf/httpd.conf是Apache服务器的主配置文件,其中包含指定文 ...

  6. ubuntu下vscode调试开发踩过的坑

    最近刚过安装了中文版的ubuntu18.04.1,安装完之后想在ubuntu上安装vscode做c/c++的开发调试,踩了不少坑,在此记录一下,希望大家在这条路上不要再踩同样的坑. 1.安装vscod ...

  7. vscode调试html文件,vscode调试html文件

    1. vscode调试html文件 主要说明使用使用Debugger for Chrome插件如何配置,以及Nodejs的方式调试. 本文的配置方式是基于deepin系统的,适用于所有debian系的 ...

  8. vscode调试html页面status200无法访问此网站 localhost 拒绝了我们的连接请求

    vscode使用debugger for chrome调试web项目和报错解决办法 vscode调试html页面status200无法访问此网站 localhost 拒绝了我们的连接请求 vscode ...

  9. Ubuntu下VSCode调试C++程序以及opencv库和Qt5库

    1.自述 自己用VSCode已经三年多了,大多数是写python程序,偶尔也写C++程序,但也不复杂,也不牵扯其他第三方库,就算牵扯第三方库,也大多是先写好CMakeLists文件,然后用标准的cma ...

最新文章

  1. 用函数式编程思维解析anagrams函数
  2. 项目如何用jetty运行_阿里大牛教你如何用Dubbox+SpringBoot+Docker架构,实现双11项目...
  3. [转载]为什么不推荐使用stop和suspend这两个方法?
  4. LINUX开源监控平台Nagios(服务监控配置)
  5. mysql 索引使用不当_MySQL笔记:select默认使用不当索引导致的巨大性能损失问题_MySQL...
  6. idea类文件前面有个小叉号
  7. 互联网面试八股文之Java基础
  8. H5商城,纯前端静态页面
  9. 黑苹果EFI文件,华硕 B360plus+Corei5-9400F+RX590+ macos10.15.1 99%完美EFI,硬解,ALC887仿生声卡
  10. java文件传输简单方法
  11. HTML+CSS+JS制作炫酷特效代码
  12. postman本地测试post接口
  13. python做软件二次开发好吗_利用Python二次开发Creo
  14. 基于SSM的图书商城的设计与实现(文末附源码)
  15. qiankun 出现[import-html-entry]: error occurs while executing normal script
  16. linux 免费教程下载,Linux系统入门教程
  17. 有好看的女生用的黑色壁纸吗?
  18. zz-tcp参数配置
  19. bindingx 表达式动画
  20. xmlhttp = new XMLHttpRequest();

热门文章

  1. 录制完脚本怎么做接口自动化测试_快速构建轻量级接口自动化框架
  2. python django mysql web页面多级联动_Python Web实战:Python+Django+MySQL实现基于Web版的增删改查...
  3. xlwt设置excel字体、对齐方式、边框、颜色、背景色
  4. linux六个标准目录,Linux基本目录规范——XDG
  5. mysql双主故障自动切换_MySQL主库高可用 -- 双主单活故障自动切换方案
  6. matlab有趣表白程序_小人表白MATLAB代码
  7. Storm之路-WordCount-实例
  8. BZOJ2654: tree 二分答案+最小生成树
  9. Java代码内容概述
  10. docker 镜像导入导出