Doris2.0 部署流程、遇到的问题及1.0升级至2.0流程整理

背景

Doris 1.0 版本总是出现副本损坏问题,机器资源充足,FE 和 BE 数据足够,每日的数据量一般,但是总是隔三差五出现入库时副本损坏问题。Doris 已经发布了2.0 版本,本周又发布了新版本 2.0.5。升级 Doris 能否解决副本损坏问题呢?本周做了 Doris 的升级及压测,测试程序运行一周,暂时还没有出现副本损坏问题。

本文记录 Doris 2.0.4 集群部署流程及遇到的问题,此外还验证了从 Doris1.0.0 升级到 Doris2.0.4 时数据的迁移过程。

主要内容:

  1. Doris2.0.4 集群部署流程。
  2. Be 启动时 Cluster Id 无效问题及解决办法。
  3. Be 上报磁盘信息失败时,FE 无法识别 Be 而不能创建分区问题。
  4. Doris1.0.0 升级到 Doris2.0.4 的方法,很简单,部署 2.0.4 之后拷贝 1.0.0 对应角色的数据目录即可。

机器准备

官方文档对环境的要求:

Doris 集群需要的硬件内存和磁盘需要充足,至少 16 G。机器不够,按开发环境,部署 1个 FE 、3 个 BE,Doris 版本 2.0.4 【介质下载两天后又发布了 2.0.5 】:

机器 角色
node A FE
node A BE
node B BE
node C BE

机器需要安装 JDK,且内存充足,尽量少部署其他应用。

安装包下载

安装包根据目标机器对 avx2 指令的支持情况分为两种,查看是否支持 avx2 的命令:

bash 复制代码
cat /proc/cpuinfo |grep avx2

flags 指令集中是否包含 avx2 确定需要下载的名称: 我用的三台机器,有一台支持 avx2,其他两台不支持,需要两个都下载。2.0 的安装包 2.8G,比 1.0 的安装包整整大了一倍,所以找一台配置了 DNS 域名解析的主机后台执行安装包下载操作:

bash 复制代码
wget -b  https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.4-bin-x64.tar.gz

wget -b https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.4-bin-x64-noavx2.tar.gz

等待下载完成后,将安装包发送到其他两台机器上。

环境配置

Doris 程序安装之前,需要执行一些操作系统配置信息。

1、设置打开文件数。执行编辑命令 vim /etc/security/limits.conf ,在文件末尾输入:

bash 复制代码
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
* soft nproc 255446
* hard nproc 255446

2、设置系统中每个进程可以拥有的最大内存映射区域数量 ,vi /etc/sysctl.conf 尾部添加:

bash 复制代码
vm.max_map_count=2000000

3、加载并应用内核,执行 sysctl -p 生效。

4、执行 swapoff -a 命令,关闭系统上的 swap 分区,将其从可用的交换空间中移除。 有一台机器上执行该命令时卡住了,一直没有结果,参考《swapoff -a 卡住问题》 该文然后主要设置 vm.overcommit_memory = 0 后才能执行成功。

后面的启动就比较顺利了。

部署 FE

1、解压安装包并重命名:

bash 复制代码
tar -xvf apache-doris-2.0.4-bin-x64-noavx2.tar.gz
mv apache-doris-2.0.4-bin-x64-noavx2 doris2.0.4

2、Doris 的默认端口都是未被占用的,使用默认配置就可以。直接启动 FE :

bash 复制代码
bin/start-fe.sh --daemon

3、MySQL 客户端登录,初始默认密码为空,直接访问,然后修改密码:

bash 复制代码
mysql -h 192.168.xx.a -P 9030 -uroot -p

##修改 doris 用户 root 的密码
SET PASSWORD FOR 'root' = PASSWORD('XXX');

4、查看 FE 信息 show proc '/frontends' \G : 疑惑的地方,前端 Host 信息,这个 IP 不知道是哪里设置的,反正不是 FE 所在主机的地址。

5、FE 的 Web 管理界面访问地址 192.168.xx.a:8030/home

部署 BE

1、使用默认配置,直接启动 BE :

bash 复制代码
bin/start-be.sh --daemon

2、鉴于 Doris 太大了,除了 nodeA 机器上同时部署了 FE 和BE,其他俩机器上删除 fe 之外的其他目录以节省空间。

3、BE 加入 FE 集群,MySQL 客户端登录 FE 后,通过命令依次将 nodeA 、nodeB、nodeC 三个节点的 BE 都加入 FE 集群:

bash 复制代码
ALTER SYSTEM ADD BACKEND "192.168.xx.a:9050";
ALTER SYSTEM ADD BACKEND "192.168.xx.b:9050";
ALTER SYSTEM ADD BACKEND "192.168.xx.c:9050";
show proc '/backends'\G;

注意,集群部署正常的标志并不仅仅是 Alive : true ,还必须能得到 BE 的磁盘资源信息: 如果出现 AvailCapacity 这个属性是 1.00 B 的时候,就需要注意了 ,FE 在创建分区的时候就不会将这个 BE 视为正常可用的 backend ,数据库建表语句都会出现异常: 最初部署的时候,以为是部署过程有问题,反复重新部署还是不能创建表分区。又部署了1.0 的版本,都是正常的。最后把 FE 的部署位置换了后,集群配置成功了,终于看到了和 1.0 版本相同的 BE 信息。

BE 通信无效 cluster_id

中途碰到 FE 连接不到 BE 的情况: 这个问题的解决办法是编辑 BE 的 storage 下的 cluster_id 文件中的值改成 FE 发送心跳时的集群 ID,然后重启 BE 就可以了。

至于这个问题是怎么产生的呢,官网是这么解释的:

1.0 升级 2.0 的数据

从 1.0 升级到 2.0 的数据迁移,比我想象的容易一点,直接将 1.0 的 FE 和 BE 的数据目录拷贝到 2.0 对应目录即可。

我验证的时候,数据比较少,只有几百条,升级到 2.0 后数据能正常检索。

启示录

集群部署还是很简单的,后面卡在了建表那,查不到卡了半天,一度怀疑新版本有问题。后面想到在同一台机器上部署 FE 和 BE 测测 1.0 版本,正常;又继续只部署一个 FE 和 BE 的2.0 版本,竟然也正常。

卡了好久的问题,竟然换机器就好了,也挺意外的!今天又碰到了 BE 向 FE 的心跳里面磁盘资源信息为 1.000B 的情况,重启了 BE 后又正常了,还没有细究日志。

相关推荐
菜鸟的人工智能之路42 分钟前
桑基图在医学数据分析中的更复杂应用示例
python·数据分析·健康医疗
阡之尘埃7 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
布说在见10 小时前
层次与网络的视觉对话:树图与力引导布局的双剑合璧
信息可视化·数据挖掘·数据分析
全栈开发圈16 小时前
新书速览|Spark SQL大数据分析快速上手
sql·数据分析·spark
spssau16 小时前
多分类logistic回归分析案例教程
分类·数据挖掘·数据分析·回归·回归分析·logistic回归·spssau
我就说好玩18 小时前
2020年美国总统大选数据分析与模型预测
大数据·python·数据挖掘·数据分析·pandas·sklearn
Aloudata19 小时前
在全域数据整合过程中,如何确保数据的一致性和准确性
大数据·数据库·人工智能·数据挖掘·数据分析
安静的_显眼包O_o20 小时前
【机器学习】连续属性离散化与sklearn.preprocessing.KBinsDiscretizer
数据挖掘·数据分析
叫我:松哥20 小时前
基于python多准则决策分析的汽车推荐算法设计与实现
python·算法·数据挖掘·数据分析·汽车·推荐算法
出发行进20 小时前
PySpark本地开发环境搭建
大数据·python·数据分析·spark·anaconda