IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Apache Doris安装过程 -> 正文阅读

[大数据]Apache Doris安装过程

0.系统与版本要求

Linux 操作系统版本需求

Linux 系统版本
CentOS7.1 及以上
Ubuntu16.04 及以上

虽然要求centos7以上,但是实测在centos8安装会出现某些依赖一直安装不上的问题,因此建议安装在centos7上

软件需求

软件版本
Java1.8 及以上
GCC4.8.2 及以上

开发测试环境

模块CPU内存磁盘网络实例数量
Frontend8核+8GB+SSD 或 SATA,10GB+ *千兆网卡1
Backend8核+16GB+SSD 或 SATA,50GB+ *千兆网卡1-3 *

生产环境

模块CPU内存磁盘网络实例数量(最低要求)
Frontend16核+64GB+SSD 或 RAID 卡,100GB+ *万兆网卡1-5 *
Backend16核+64GB+SSD 或 SATA,100G+ *万兆网卡10-100 *

注1:

FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。
BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3副本)计算,然后再预留额外 40% 的空间用作后台 compaction 以及一些中间数据的存放。
一台机器上可以部署多个 BE 实例,但是只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差

测试环境也可以仅适用一个 BE 进行测试。实际生产环境,BE 实例数量直接决定了整体查询延迟。
所有部署节点关闭 Swap。

注2:FE 节点的数量

FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称 Follower,具体含义见 元数据设计文档)。
FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
Follower 的数量必须为奇数,Observer 数量随意。
根据以往经验,当集群可用性要求很高是(比如提供在线业务),可以部署 3 个 Follower 和 1-3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer。

1. 创建用户(非必要选项)

useradd sudouser 

设置密码

passwd sudouser

赋予超级用户权限

# 2、赋予root权限
# 方法一: 修改 /etc/sudoers 文件,找到%wheel一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL
# 然后修改用户,使其属于root组(wheel),命令如下:
usermod -g root sudouser
# 修改完毕,现在可以用sudouser帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。

# 方法二: 修改 /etc/sudoers 文件,找到root一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
sudouser   ALL=(ALL)     ALL
# 修改完毕,现在可以用sudouser帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。

2.创建执行环境&设置环境变量

创建执行环境

sudo yum groupinstall 'Development Tools' && sudo yum install cmake3 byacc flex automake libtool bison binutils-devel zip unzip ncurses-devel curl git wget python2 glibc-static libstdc++-static java-1.8.0-openjdk npm

设置环境变量

Maven

wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz --no-check-certificate
tar -xzvf apache-maven-3.8.4-bin.tar.gz
mv apache-maven-3.8.4 /usr/lib/

# 环境变量
vi /etc/profile

# maven
export MAVEN_HOME=/usr/lib/apache-maven-3.8.4/
export PATH=$PATH:$MAVEN_HOME/bin

source /opt/rh/devtoolset-7/enable

cmake

要用cmake3

ln -s /usr/bin/cmake3 /usr/bin/cmake

java

vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

python

要用python2

npm

1).安装gcc

yum install gcc gcc-c++

2).下载node国内镜像(推荐)

wget https://npm.taobao.org/mirrors/node/v10.14.1/node-v10.14.1-linux-x64.tar.gz

3).解压并重命名文件夹

tar -xvf  node-v10.14.1-linux-x64.tar.gz
mv node-v10.14.1-linux-x64 /usr/local/node

4).添加环境变量

vi /etc/profile

在文件最后添加以下配置:

# npm
export NODE_HOME=/usr/local/node  
export PATH=$NODE_HOME/bin:$PATH

5).刷新配置

source /etc/profile

6).验证结果:

node -v
npm -v

3.拉取源码

下载源码

wget https://dlcdn.apache.org/incubator/doris/0.14.0-incubating/apache-doris-0.14.0-incubating-src.tar.gz
tar -xzvf apache-doris-0.14.0-incubating-src.tar.gz

4.安装第三方依赖

在这一步之前,建议首先跳到第6步,可能出现的问题,检查一下是否有依赖版本不符合要求

cd thirdparty

第三方依赖下载连接错误、失效等问题
Doris 所依赖的第三方库的下载连接都在 thirdparty/vars.sh 文件内。随着时间推移,一些下载连接可能会失效。如果遇到这种情况。可以使用如下两种方式解决:

1) 手动修改 thirdparty/vars.sh 文件

手动修改有问题的下载连接和对应的 MD5 值。

2) 使用第三方下载仓库(推荐):

export REPOSITORY_URL=https://doris-thirdparty-repo.bj.bcebos.com/thirdparty
sh build-thirdparty.sh

REPOSITORY_URL 中包含所有第三方库源码包和他们的历史版本。

5.编译

sh build.sh
# 此步骤会把FE与BE都编译完毕
# 此步骤会根据网速不同,速度不同,但是大约需要一小时左右

编译之后输出至output目录,有3个子目录:be、fe、udf,只需要拷贝output目录到其他服务器即可

6.遇到的问题

6.1 GCC版本过低:

升级到gcc 7.3

yum -y install centos-release-scl 
yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils 
scl enable devtoolset-7 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 7.3的话:

echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile

6.2 Failed to download DataTables.zip\s2n-0.10.0.tar.gz

except-md5 f7f18a9f39d692ec33b5536bff617232 
actual-md5 7698e7ae6c1d53d5e1f256b4fc8d5a44  /root/data/apache-doris-0.14.0-incubating-src/thirdparty/src/DataTables.zip
Archive DataTables.zip will be removed and download again.
Failed to download DataTables.zip
vi var.sh 
将DataTables.zip的MD5值进行替换

6.3 Failed to unzip DataTables.zip

需要在本地进行解压后上传到服务器对应位置,并进行更名

~/src/DataTables-1.10.25

vi var.sh # 将DataTables的名称由DataTables-1.10.23改为DataTables-1.10.25

vi var.sh # 将s2n的名称由s2n-0.10.0改为s2n-tls-0.10.0cd 

6.4 CMake 3.1 or higher is required. You are running version xxxx

yum remove cmake
yum  install cmake3
#创建软连接
ln -s /usr/bin/cmake3  /usr/bin/cmake

6.5 有可能会报Bootstrap3.3.7/与jQuery3.3.1/目录无法找到的问题

其实就是路径没找对,只需要去Bootstrap

7.部署

因为是测试环境,所以此次部署1个FE,3个BE。

机器01机器02机器03
FE、BEBEBE

在机器01上创建目标目录

mkdir /data/serve/doris

配置 FE

将编译完的output/ 下的fe目录拷贝至该目录下。

配置文件为 fe/conf/fe.conf。其中注意:meta_dir:元数据存放位置。默认在 fe/doris-meta/下。需手动创建该目录。
注意:生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好),测试开发环境可以使用默认配置
fe.confJAVA_OPTS默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。

cd /data/software/doris/fe
mkdir doris-meta

启动FE

sh bin/start_fe.sh --daemon

FE进程启动进入后台执行。日志默认存放在 fe/log/ 目录下。如启动失败,可以通过查看 fe/log/fe.log或者 fe/log/fe.out 查看错误信息。

有可能的错误一:

edit_log_port 9010端口被占用,重新更换edit_log_port端口

vi conf/fe.conf

有可能的错误二 :

单节点FE迁移启动失败

vi conf/fe.conf
# 增加一行配置后重新启动
metadata_failure_recovery=true

连接FE

可以用查看本机的hostname来进行连接,也可以使用本机的私有IP进行连接

mysql -uroot -hkbox101 -P9030

能连上说明FE配置成功

配置&启动BE

拷贝 BE 部署文件到所有要部署 BE 的节点
将源码编译生成的 output 下的 be 文件夹拷贝到 BE 的节点的指定部署路径下。

修改所有 BE 的配置

修改 be/conf/be.conf。主要是配置 storage_root_path:数据存放目录。默认在be/storage下,需要手动创建该目录。多个路径之间使用英文状态的分号 ; 分隔(最后一个目录后不要加 ;)。可以通过路径区别存储目录的介质,HDD或SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号,隔开。
注意:如果是SSD磁盘要在目录后面加上.SSD,HDD磁盘在目录后面加.HDD

*** 错误信息可以在be.info中查看***

错误一:

Check failed: s.ok() Internal error: tcp listen failed, errno=98, errmsg=Address already in use

BE webserver_port端口配置:

如果 be 部署在 hadoop 集群中,注意调整 be.conf 中的 webserver_port = 8040 ,以免造成端口冲突

启动BE

sh bin/start_be.sh --daemon

添加BE

ALTER SYSTEM ADD BACKEND "kbox101:9050";

查看BE运行情况

SHOW PROC '/backends'\G

显示结果:

*************************** 1. row ***************************
            BackendId: 12002
              Cluster: default_cluster
                   IP: xx.xx.xx.xx
             HostName: kbox101
        HeartbeatPort: 9050
               BePort: 9060
             HttpPort: 8085
             BrpcPort: 8060
        LastStartTime: 2021-11-23 15:14:09
        LastHeartbeat: 2021-11-23 15:24:50
                Alive: true
 SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 0
     DataUsedCapacity: .000 
        AvailCapacity: 1.000 B
        TotalCapacity: .000 
              UsedPct: 0.00 %
       MaxDiskUsedPct: 0.00 %
               ErrMsg: 
              Version: 0.14.0-release-Unknown
               Status: {"lastSuccessReportTabletsTime":"N/A"}
1 row in set (0.03 sec)

Alive的值为true,说明连接成功。

8.可参考的技术文档

Doris12版安装编译部署(docker编译)

记录apache doris使用过程中出现的问题

集群部署

Apache Doris 环境安装部署

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章           查看所有文章
加:2021-11-29 16:23:14  更:2021-11-29 16:25:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:46:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码