一、编译源码

(1)拉取编译镜像docker pull apache/incubator-doris:build-env-1.2

(2)Mac电脑上拉取源码git clone https://github.com/apache/incubator-doris.git

  切换到指定分支git fetch origin branch-0.12:branch-0.12

  git checkout branch-0.12

(3)建议使用Docker挂载Mac电脑上的源码编译,这样产出的二进制文件在宿主机上。同时将本地.m2目录挂载到Docker,这样Docker不用重新下载Maven依赖库

  编译镜像id e847e7ed9a3c
  加速编译  build.sh 中的 PARALLEL 参数调整为 4 根据编译机子性能适当调整
(4)运行编译Docker
  docker run -it -v /Users/mac/.m2:/root/.m2 -v /Users/mac/JavaProject/incubator-doris:/root/incubator-doris apache/incubator-doris:build-env-1.2
(5)Docker里进入项目目录执行编译FE和BE

  sh build.sh --fe --be --clean
  (可选)编译broker
  cd fs_brokers/apache_hdfs_broker/ && sh build.sh

  编译成功后如下所示,文件在output目录下

  
二、Docker镜像创建 -FE和BE
(1)准备资料
  把编译好的fe和be拷贝到项目下docker目录中,从各自的output目录拷贝到docker目录下
  下载linux版jdk1.8版本---jdk1.8.0_291,放入docker目录下
  把webroot目录拷贝到fe目录下,前端静态文件
  
(2)在项目的docker目录下创建Docker FE镜像,名称Dockerfile_fe
  构建Docker镜像:docker build -t lenmom/doris:fe-0.9.0 -f Dockerfile_fe  .
FROM centos:centos7.5.1804

RUN mkdir /home/palo/run/ -p

# copy jdk and palo binary
COPY jdk1.8.0_291/ /home/palo/run/jdk1.8.0_291/
COPY fe/ /home/palo/run/fe/ # set java home
ENV JAVA_HOME /home/palo/run/jdk1.8.0_291/ # set fe port: http/thrift/mysql/bdbje
EXPOSE 8030 9020 9030 9010 # fe log and meta-data
#VOLUME ["/home/palo/run/fe/conf" i"/home/palo/run/fe/log" "/home/palo/run/fe/palo-meta"] WORKDIR /home/palo/run/fe/ #CMD ["/bin/sh","/home/palo/run/fe/bin/start_fe.sh"]

(3)在项目的docker目录下创建Docker BE镜像,名称Dockerfile_be

  构建Docker镜像:docker build -t lenmom/doris:be-0.9.0 -f Dockerfile_be .

FROM centos:centos7.5.1804
#FROM ubuntu:18.04 RUN mkdir -p /home/palo/run/ RUN yum -y update \
&& yum install -y binutils-devel \
&& yum -y clean all \
&& rm -rf /var/cache/yum # copy be
COPY be/ /home/palo/run/be/ # set be port: thrift/rpc/http/heartbeat
EXPOSE 9060 9070 8040 9050 # be log,conf and data
#VOLUME ["/home/palo/run/be/conf", "/home/palo/run/be/log", "/home/palo/run/be/data/"] WORKDIR /home/palo/run/be/
RUN ldd lib/palo_be #CMD ["/bin/sh","/home/palo/run/be/bin/start_be.sh"]

三、创建Docker镜像

(1)创建并运行三个BE容器

  创建BE容器。注:查看Docker容器地址方式docker inspect --format='{{.NetworkSettings.IPAddress}}' doris-be1,需要先运行容器
  IP地址:172.17.0.4
  docker run -it --name doris-be1 -p 9051:9050 -p 8041:8040 -p 9061:9060 -p 9071:9070 lenmom/doris:be-0.9.0
  IP地址:172.17.0.5
  docker run -it --name doris-be2 -p 9052:9050 -p 8042:8040 -p 9062:9060 -p 9072:9070 lenmom/doris:be-0.9.0
  IP地址:172.17.0.6
  docker run -it --name doris-be3 -p 9053:9050 -p 8043:8040 -p 9063:9060 -p 9073:9070 lenmom/doris:be-0.9.0
  注:每个Docker容器需要修改信息
  [1]创建目录
  创建 mkdir -p /home/palo/run/be/storage

  [2]项目目录下修改conf/be.conf
  修改为容器IP地址/子网掩码:priority_networks=容器IP/24
  启动BE:bin/start_be.sh --daemon

  停止BE:bin/stop_be.sh --daemon
 
(2)创建并运行一个FE容器。注:因为FE需要知道BE地址,所以在之后创建
  注:查看Docker容器地址方式docker inspect --format='{{.NetworkSettings.IPAddress}}' doris-fe,需要先运行容器
  docker run -it --name doris-fe -p 9030:9030 -p 8030:8030 -p 9010:9010 -p 9020:9020 --link doris-be1 --link doris-be2 --link doris-be3 lenmom/doris:fe-0.9.0
  注:每个Docker容器需要修改信息
  [1]创建目录
  创建 mkdir -p /opt/fe/doris-meta
  创建 mkdir -p /home/palo/run/fe/log
  [2]修改conf/fe.conf
  修改为容器IP地址/子网掩码:priority_networks=容器IP/24
  修改meta_dir=/opt/fe/doris-meta
  开启物化视图支持 enable_materialized_view=true
  [3] JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上
  启动FE: bin/start_fe.sh --daemon
  开启Fe的Report:mysql执行 set is_report_success=true;
(3)(可选)镜像导入导出
  镜像保存到本地
  sudo docker save -o doris-fe-0.9.0-docker.img lenmom/doris:fe-0.9.0
  导入本地镜像
  sudo docker load --input doris-be-0.9.0-docker.img
(4)安装Mysql客户端,连接测试用
  FE容器更新yum     yum update
  yum install mysql
  初始化mysql密码
  mysql -h 127.0.0.1 -P 9030 -uroot
  SET PASSWORD FOR 'root' = PASSWORD('root');
(5)FE中添加删除BE节点(mysql操作)
  在FE中查看BE节点信息:SHOW PROC '/backends'
  添加BE:
  ALTER SYSTEM ADD BACKEND "172.17.0.2:9050";
  ALTER SYSTEM ADD BACKEND "172.17.0.3:9050";
  ALTER SYSTEM ADD BACKEND "172.17.0.4:9050";
  删除BE(不推荐):
  ALTER SYSTEM DROP BACKEND "172.17.0.3:9050";
 四、测试
(1)建数据库 CREATE DATABASE test;
(2)建表
CREATE TABLE test.table_hash
(
k1 TINYINT,
k2 DECIMAL(10, 2) DEFAULT "10.5",
v1 CHAR(10) REPLACE,
v2 INT SUM
)
ENGINE=olap
AGGREGATE KEY(k1, k2)
COMMENT "my first doris table"
DISTRIBUTED BY HASH(k1) BUCKETS 32;

(3)查询

  select * from test.table_hash limit 1;
  
 
 
其它操作备注
本机拷贝内容到docker:docker cp /Users/mac/JavaProject/test fe:/opt/fe
 
 
 
 

使用Docker编译安装运行Doris的更多相关文章

  1. Phonegap项目创建 编译 安装 运行

    一.创建 Phonegap项目 1. cd workspace 2.创建phonegap项目 cordova create 目录 识别符 显示名 例如:cordova create hello com ...

  2. PostgreSQL(一) 编译安装运行

    原创,如转发需注明出处. 多年没写博客,一直用的个人笔记软件,最近准备阅读PostgreSQL源码,故记录.(这两年PostgreSQL数据库在某些环境下是比较火的,原因想必大家都清楚.) Postg ...

  3. docker下安装运行mysql的过程以mysql5.7为例

    一.查找mysql资源 docker search mysql 其实这步顶多是看看有哪些mysql资源,除非你自己commit过一个特定的版本,否则直接执行下一步 二.安装mysql docker p ...

  4. 在docker上安装运行mysql实例

    ps:实验环境是:CentOS Linux release 7.3  64位1.获取mysql镜像从docker hub的仓库中拉取mysql镜像docker pull mysql查看镜像docker ...

  5. 2-21-源码编译安装LAMP

      编译安装LAMP所需要及其所使用的源码版本: httpd version:httpd-2.4.16 apr version:apr-1.5.2 pcre version:pcre-8.37 apr ...

  6. docker showdoc安装

    自动脚本安装 前言 自动脚本脚本利用docker来安装运行环境,适用于linux服务器.如果你的服务器没有docker服务,脚本会尝试安装之.安装docker的过程可能有些慢.如果你已经安装过dock ...

  7. Docker容器编译安装Redis

    Docker容器编译安装Redis 1.创建容器 -i 交互模式 -d 后端运行 -h 容器的hostname --name 容器名 --network 网卡 --ip IP地址 -p 端口映射 -- ...

  8. linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

    红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版 ...

  9. Spark编译安装和运行

    一.环境说明 Mac OSX Java 1.7.0_71 Spark 二.编译安装 tar -zxvf spark-.tgz cd spark- ./sbt/sbt assembly ps:如果之前执 ...

  10. Heka 编译安装后 运行报错 panic: runtime error: cgo argument has Go pointer to Go pointer

    Heka 编译安装后 运行报错 panic: runtime error: cgo argument has Go pointer to Go pointer 解决办法: 1.  Start heka ...

随机推荐

  1. nginx之常见错误

    在此只介绍源码安装nginx的时候,发生的一些常见的错误 1. nginx访问出现File not found 1) php-fpm找不到SCRIPT_FILENAME中执行的PHP文件 更改配置文件 ...

  2. XJTUPC2023

    J. 大秦酒店欢迎您 题解 我们考虑莫队 首先我们预处理出处于位置\(x\)的颜色下一次出现的位置\(nxt[x]\)以及上一次出现的位置\(pre[x]\) 莫队上维护一下信息: \(Ans\):\ ...

  3. MySql 9 in Docker 主从切换

    继上一篇<MySql 9 in Docker 利用克隆插件搭建主从>我们说了主从复制后, 那么我们接下来说说如何手动的进行主从切换. 动手~ 1. 原主库设置 切断应用对主库的访问 主库设 ...

  4. 逍遥模拟器+Fiddler抓包 (附带软件)

    获取软件地址: 链接:https://pan.baidu.com/s/1zE9AECWOZlw_VDVMAnkBhQ?pwd=c0kq 提取码:c0kq 一.逍遥模拟器安装 1. 安装逍遥模拟器: 2 ...

  5. django内置序列化组件(drf前身)

    目录 一.django内置序列化组件(drf前身) 一.django内置序列化组件(drf前身) 一.django内置序列化组件(drf前身) 这里的内置序列化组件,其实就是实现将后端数据,存放到字典 ...

  6. Linux新用户登录时出现“-bash-4.2$”的解决办法

    Linux服务器新建的用户在登录时显示"-bash-4.2$",而不是"user@hostname"的显示方式,出现此问题的原因是在添加普通用户时,用户家目录下 ...

  7. Qt/C++视频监控Onvif工具/组播搜索/显示监控画面/图片参数调节/OSD管理/祖传原创

    一.前言 能够写出简单易用而又不失功能强大的组件,一直是我的追求,简单主要体现在易用性,不能搞一些繁琐的流程和一些极难使用的API接口,或者一些看不懂的很难以理解的函数名称,一定是要越简单越好.功能强 ...

  8. Ubuntu系统查看文件夹目录

    方法1: 进入文件夹里面我们可以使用 按下Ctrl + L 可以看到文件的路径了 然后复制即可. 方法2: 可以鼠标右键点击最下面的属性,然后复制位置里面的路径即可

  9. WorldWind源码剖析系列:WorldWind瓦片调度策略说明

    1 基于源码的分析 首先我们来看WorldWind中摄像头变化相关的几个方法的内部逻辑. 1.1 NltTerrainAccessor. GetElevationAt 方法声明:public over ...

  10. 即时通讯技术文集(第34期):IM群聊技术合集(Part1) [共15篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第34 期. [- 1 -] 快速裂变:见证微信强大后台架构从0到1的演进历程(一) [链接]  ...