Doris 2.0.1 Dockerfile制作

2023-09-18 16:49:52

镜像编译

准备工作

1、创建目录

└── docker-build                                                // 构建根目录 
    └── fe                                                      // FE 构建目录
        ├── dockerfile                                          // dockerfile 脚本
        └── resource                                            // 资源目录
            ├── init_fe.sh                                      // 启动及注册脚本
            └── apache-doris-x.x.x-bin-fe.tar.gz                // 二进制程序包

mkdir -p /opt/dockerfile/doris2/docker-build/be/resource
mkdir -p /opt/dockerfile/doris2/docker-build/fe/resource

-----------------

目录结构不一样 改动较大

-------------------

cp ~/soft/apache-doris-fe-1.2.4.1-bin-x86_64.tar.xz /opt/dockerfile/doris/docker-build/fe/resource

cp ~/soft/apache-doris-be-1.2.4.1-bin-x86_64.tar.xz /opt/dockerfile/doris/docker-build/be/resource

下载 init_fe.sh 

doris/docker/runtime/fe/resource/init_fe.sh

下载 init_be.sh 

doris/docker/runtime/be/resource/init_be.sh

#设置环境变量
FROM openjdk:8u342-jdk
# 下载软件至镜像内,可根据需要替换
ENV JAVA_HOME="/usr/local/openjdk-8/" \
    PATH="/opt/apache-doris/fe/bin:$PATH"
ADD ./resource/apache-doris-fe-1.2.4.1-bin-x86_64.tar.xz /opt/

USER root

RUN apt-get update && \
    apt-get install -y default-mysql-client && \
    apt-get clean && \
    mkdir /opt/apache-doris && \
    cd /opt && \
    mv apache-doris-fe-1.2.4.1-bin-x86_64 /opt/apache-doris/fe

ADD ./resource/init_fe.sh /opt/apache-doris/fe/bin 
COPY ./resource/fe.conf /opt/apache-doris/fe/conf

RUN chmod 755 /opt/apache-doris/fe/bin/init_fe.sh && \
    chmod 755 /opt/apache-doris/fe/bin/start_fe.sh && \
    chmod 755 /opt/apache-doris/fe/bin/stop_fe.sh

# ENTRYPOINT ["/opt/apache-doris/fe/bin/init_fe.sh"]
CMD ./opt/apache-doris/fe/bin/init_fe.sh && tail -f /dev/null
 

/opt/dockerfile/doris/docker-build/fe 目录下执行

docker build . -t apache-doris:1.2.4.1-fe

docker tag apache-doris:1.2.4.1-fe 192.168.1.249:16443/bigdata/apache-doris:1.2.4.1-fe

docker push 192.168.1.249:16443/bigdata/apache-doris:1.2.4.1-fe

打包:

docker save -o apache-doris-1.2.4.1-fe.tar apache-doris:1.2.4.1-fe

load镜像:

docker load -i apache-doris-1.2.4.1-fe.tar

启动:

前期环境准备

需在宿主机执行如下命令

sysctl -w vm.max_map_count=2000000

修改后查看:

sysctl -a|grep vm.max_map_count

1 FE:

docker run -itd \
--name=fe \
--env FE_SERVERS="fe1:${当前机器的内网IP}:9010" \
--env FE_ID=1 \
-p 8030:8030 \
-p 9030:9030 \
-v /data/fe/doris-meta:/opt/apache-doris/fe/doris-meta \
-v /data/fe/log:/opt/apache-doris/fe/log \
--net=host \
apache/doris:2.0.0_alpha-fe-x86_64

docker run -itd --name=fe --env FE_SERVERS="fe1:192.168.1.244:9010" --env FE_ID=1 -p 8030:8030 -p 9030:9030 -v /data/fe/doris-meta:/opt/apache-doris/fe/doris-meta -v /data/fe/log:/opt/apache-doris/fe/log --net=host apache-doris:1.2.4.1-fe

docker ps -a 发现没有启动成功

docker logs fe  查看容器日志

 docker rm fe  删除容器

docker rmi 4fa6fb409922 删除镜像

重新打包

发现是 SELinux 没有禁用

 6、禁用 SELinux

# 临时关闭
setenforce 0
# 永久禁用
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

1 BE:

FROM openjdk:8u342-jdk

# 设置环境变量
ENV JAVA_HOME="/usr/local/openjdk-8/" \
    PATH="/opt/apache-doris/be/bin:$PATH"

# 下载软件至镜像内,可根据需要替换
ADD ./resource/apache-doris-be-1.2.4.1-bin-x86_64.tar.xz /opt/
COPY ./resource/apache-doris-dependencies-1.2.4.1-bin-x86_64/java-udf-jar-with-dependencies.jar /opt/

RUN apt-get update && \
    apt-get install -y default-mysql-client && \
    apt-get clean && \
    mkdir /opt/apache-doris && \
    cd /opt && \
    mv apache-doris-be-1.2.4.1-bin-x86_64 /opt/apache-doris/be && \
    mv /opt/java-udf-jar-with-dependencies.jar /opt/apache-doris/be/lib

ADD ./resource/init_be.sh /opt/apache-doris/be/bin
COPY ./resource/be.conf /opt/apache-doris/be/conf

RUN chmod 755 /opt/apache-doris/be/bin/init_be.sh && \
    chmod 755 /opt/apache-doris/be/bin/start_be.sh && \
    chmod 755 /opt/apache-doris/be/bin/stop_be.sh

ENTRYPOINT ["/opt/apache-doris/be/bin/init_be.sh"]

/opt/dockerfile/doris/docker-build/be 目录下执行

docker build . -t apache-doris:1.2.4.1-be

docker tag apache-doris:1.2.4.1-be 192.168.1.249:16443/bigdata/apache-doris:1.2.4.1-be
docker push 192.168.1.249:16443/bigdata/apache-doris:1.2.4.1-be

打包:

docker save -o apache-doris-1.2.4.1-be.tar apache-doris:1.2.4.1-be

load镜像:

docker load -i apache-doris-1.2.4.1-be.tar

docker run -itd \
--name=be \
--env FE_SERVERS="fe1:${当前机器的内网IP}:9010" \
--env BE_ADDR="${当前机器的内网IP}:9050" \
-p 8040:8040 \
-v /data/be/storage:/opt/apache-doris/be/storage \
-v /data/be/log:/opt/apache-doris/be/log \
--net=host \
apache/doris:2.0.0_alpha-be-x86_64

docker run -itd --name=be --env FE_SERVERS="fe1:${当前机器的内网IP}:9010" --env BE_ADDR="${当前机器的内网IP}:9050" -p 8040:8040 -v /data/be/storage:/opt/apache-doris/be/storage -v /data/be/log:/opt/apache-doris/be/log --net=host apache/doris:2.0.0_alpha-be-x86_64

3台节点  需修改 BE_ADDR

docker run -itd --name=be --env FE_SERVERS="fe1:192.168.1.244:9010" --env BE_ADDR="192.168.1.244:9050" -p 8040:8040 -v /data/be/storage:/opt/apache-doris/be/storage -v /data/be/log:/opt/apache-doris/be/log --net=host apache-doris:1.2.4.1-be

docker run -itd --name=be --env FE_SERVERS="fe1:192.168.1.244:9010" --env BE_ADDR="192.168.1.243:9050" -p 8040:8040 -v /data/be/storage:/opt/apache-doris/be/storage -v /data/be/log:/opt/apache-doris/be/log --net=host apache-doris:1.2.4.1-be

docker run -itd --name=be --env FE_SERVERS="fe1:192.168.1.244:9010" --env BE_ADDR="192.168.1.249:9050" -p 8040:8040 -v /data/be/storage:/opt/apache-doris/be/storage -v /data/be/log:/opt/apache-doris/be/log --net=host apache-doris:1.2.4.1-be

登录容器

docker exec -it acb5a528184b bash

查看FE-Config:  cat /opt/apache-doris/be/conf/be.conf  

修改priority_networks参数,例如当前节点的 IP 地址为 10.10.2.21,则需要更改为 10.10.2.0/24 填入,这里需要填入的是 IP 子网网段地址,并非 IP 地址

sed -i 's/priority_networks = /priority_networks = 192.168.1.0\/24/g' /opt/apache-doris/be/conf/be.conf

更换为当前节点的IP子网网段地址

在容器内执行启动命令

/opt/apache-doris/be/bin/start_be.sh --daemon

查看日志:

tail -500f /opt/apache-doris/be/log/be.out

退出容器 exit

在Doris数据库中添加BE配置

mysql -uroot -P9030 -h192.168.1.244

ALTER SYSTEM ADD BACKEND "192.168.1.244:9050";

使用 mysql-client 连接到 FE,并执行show proc '/backends'\G; 查看 BE 运行情况。如一切正常,isAlive 列应为 true

更多推荐

LLM(二)| LIMA:在1k高质量数据上微调LLaMA1-65B,性能超越ChatGPT

本文将介绍在Lit-GPT上使用LoRA微调LLaMA模型,并介绍如何自定义数据集进行微调其他开源LLM监督指令微调(SupervisedInstructionFinetuning)什么是监督指令微调?为什么关注它?目前大部分LLM都是decoder-only,通常是续写任务,有时候未必符合用户的需求,SFT是通过构造

锐捷交换机vlan隔离(wifi段仅能访问外网,和内网隔离)

因为公司的wifi段,未做隔离,无意间上了网,发现能访问内网网段,这里内网是10、20段,管理网段是100段,于是做了和内网的vlan隔离。拓朴如下,所有vlan的网关都起在核心上,核心上起了DHCP,分配wifi段为80段。所有交换机通过trunk连接。要求把80段和内网的其它网段隔离开,不让它访问:在锐捷核心上配置

深度学习归一化原理及代码实现(BatchNorm2d,LayerNorm,InstanceNorm,GroupNorm)

文章目录概述形式原理理解源代码实现1.BatchNorm2d2.LayerNorm3.InstanceNorm4.GroupNorm概述本文记录总结pytorch中四种归一化方式的原理以及实现方式。方便后续理解和使用。本文原理理解参考自https://zhuanlan.zhihu.com/p/395855181形式四种

【无标题】

文章目录ListView是怎么渲染的?ListView怎么做到控制性能?_ViewportElementRenderViewport先从这一块朴素的代码开启我们的旅程:ListView.builder(itemBuilder:((context,index){returnListTile(title:Text("thi

【PyTorch 攻略 (3/7)】线性组件、激活函数

一、说明神经网络是由层连接的神经元的集合。每个神经元都是一个小型计算单元,执行简单的计算来共同解决问题。它们按图层组织。有三种类型的层:输入层、隐藏层和输出层。每层包含许多神经元,但输入层除外。神经网络模仿人脑处理信息的方式。二、神经网络的组件激活功能确定是否应该激活神经元。神经网络中发生的计算包括应用激活函数。如果一

循环神经网络——下篇【深度学习】【PyTorch】【d2l】

文章目录6、循环神经网络6.7、深度循环神经网络6.7.1、理论部分6.7.2、代码实现6.8、双向循环神经网络6.8.1、理论部分6.8.2、代码实现6.9、机器翻译6.9.1、理论部分6.10、编码器解码器架构6.10.1、理论部分6、循环神经网络6.7、深度循环神经网络6.7.1、理论部分设计多个隐藏层,目的是为

科技云报道:分布式存储红海中,看天翼云HBlock如何突围?

科技云报道原创。过去十年,随着技术的颠覆性创新和新应用场景的大量涌现,企业IT架构出现了稳态和敏态的混合化趋势。在持续产生海量数据的同时,这些新应用、新场景在基础设施层也普遍基于敏态的分布式架构构建,从而对存储技术提出了新的要求。正因如此,分布式存储凭借高安全性、可靠性、可用性、易于扩展等特性,在敏态业务中得到了快速发

python安全工具开发笔记(五)——python数据库编程

一、PythonDBAPI在没有PythonDBAPI之前:有PythonDBAPI之后:PythonDBAPI包含内容PythonDBAPI访问数据库流程二、PythonMysql开发环境三、Python数据库编程实例数据库连接对象connection连接对象:建立Python客户端与数据库的网络连接创建方法:MyS

影响服务器稳定性的因素:

影响服务器稳定性的因素:1、服务器配置。配置是影响稳定性的因素之一,包括cpu、内存、带宽、硬盘、操作系统等,配置低了无法支撑网站服务器的正常运行,卡顿、崩溃,就会影响到服务器的稳定性。2、恶意GJ。如果服务器遭受了ddoslcc等恶意流量GJ,也会影响到服务器的稳定性,假如服务器没有搞好安全防范对策,非常容易因DDo

Linux —— 线程

目录一,线程概念二,Linux进程与线程三,Linux线程控制创建线程线程终止线程等待线程分离linux线程互斥一,线程概念在一程序内,一个执行路线称为线程thread,即线程是一个进程内部的控制序列;一切进程至少都有一个执行线程;线程在进程内部运行,本质是在进程地址空间内运行;在Linux系统中,CPU看到的PCB都

【校招VIP】前端JS之深拷贝和浅拷贝

考点介绍js中的浅拷贝和深拷贝,只是针对复杂数据类型(Objcet,Array)的复制问题。简单来讲浅拷贝和深拷贝都可以实现在原有对象的基础上再生成一份的作用。但是根据新生成的对象能否影响到原对象可以分为浅拷贝和深拷贝。前端JS之深拷贝和浅拷贝-相关题目及解析内容可点击文章末尾链接查看!一、考点题目1.实现浅拷贝的方法

热文推荐