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

Doris安装编译部署(docker编译)

java8以上的前提下

docker安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun

**安装所需的软件包。**yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

使用以下命令来设置稳定的仓库。

$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

启动 Docker。

$ sudo systemctl start docker

通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。

$ sudo docker run hello-world

成功后拉取Doris编译环境
docker pull apache/incubator-doris:build-env-1.2
启动并进入容器中
docker run -it apache/incubator-doris:build-env-1.2
进入对应id的容器

docker exec -it $CONTAINER_ID_flag /bin/bash

下载源代码
wget http://archive.apache.org/dist/incubator/doris/0.12.0-incubating/apache-doris-0.12.0-incubating-src.tar.gz
tar -zxf apache-doris-0.12.0-incubating-src.tar.gz -C /opt/

修改pom文件下载源

fe/pox.xml 修改

            
                cloudera-thirdparty
                https://repository.cloudera.com/content/repositories/third-party/
                上面两行删除改成下面两行
                cloudera-public
                https://repository.cloudera.com/artifactory/public/
            
            
            
            

!-- for cup-maven-plugin -->
            
                cloudera-plugins
                https://repository.cloudera.com/content/groups/public/
               上面两行改成下面两行
                cloudera-public
                https://repository.cloudera.com/artifactory/public/
            
        
    

在安装目录下执行./build.sh 编译Doris

如果需要使用 MySQL 和 LZO,可以如下命令编译

WITH_MYSQL=1 WITH_LZO=1 sh build.sh

编译成功后的二进制文件在 output/ 部署单节点

ls -l output/

docker拷贝到本地
docker container cp -a 容器id:docker路径 本地路径
docker container cp -a 80cb5b3faf52:/opt/apache-doris-0.12.0-incubating-src/output /opt

进入到fe_broker中执行build.sh 编译broker 与编译Doris类似 编译成功后路径
/opt/apache-doris-0.12.0-incubating-src/fs_brokers/apache_hdfs_broker下的output就是编译好的broker

拷贝到本地doris目录下最好与fe be同级目录

启动fe 之前需要设置原数据doris_meta目录 fe/doris_meta

JAVA_OPTS = "-Xmx4096m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log"
meta_dir = /data/app/doris-0.14.7/fe/doris-meta
priority_networks = 本机ip   ip addr 复制ip即可后面的/24一同复制

可以根据FE内存大小调整 -Xmx4096m,为了避免GC建议16G以上,DorisDB的元数据都在内存中保存。

启动成功后jps查看fe进程 然后连接mysql mysql -h 本机ip -P9030 -uroot/admin 两个用户都没密码

编辑be/be.conf 目录自建

storage_root_path = /data/app/doris-0.14.7/be/storage
priority_networks = 本机ip   ip addr 复制ip即可后面的/24一同复制

通过mysql客户端添加BE节点:

mysql> ALTER SYSTEM ADD BACKEND "host:port";

这里IP地址为和priority_networks设置匹配的IP,portheartbeat_service_port,默认为9050

如出现错误,需要删除BE节点,应用下列命令:

alter system decommission backend “be_host:be_heartbeat_service_port”;
alter system dropp backend “be_host:be_heartbeat_service_port”;

然后启动be
web端 ip:8030 中可以查看状态 alive为true则成功部署单节点

启动be报错 File descriptor number is less than 60000 需要修改最大句柄数

echo "* soft nofile 204800"  >> /etc/security/limits.conf
echo "* hard nofile 204800"  >> /etc/security/limits.conf

echo "* soft nproc 204800"  >> /etc/security/limits.conf
echo "* hard nproc 204800 "  >> /etc/security/limits.conf

修改 /etc/sysctl.conf, 加入
echo   fs.file-max = 6553560  >> /etc/sysctl.conf

查看是否成功

cat /etc/security/limits.conf
cat /etc/sysctl.conf


重启生效

reboot  -h  now

broker部署

将源码编译生成的 output 下的 apache_hdfs_broker文件夹拷贝到 三台机器 指定部署路径 /opt/doris 下

scp -r output/apache_hdfs_broker/ 10.218.223.96:/opt/doris/
scp -r output/apache_hdfs_broker/ 10.218.223.97:/opt/doris/
scp -r output/apache_hdfs_broker/ 10.218.223.98:/opt/doris/

  1. 删除原来的 hdfs-site.xml 将自己hadoop的core-site.xml和hdfs-site.xml 放到 /opt/doris/apache_hdfs_broker/conf 目录下

rm -rf conf/hdfs-site.xml
cp /etc/hadoop/conf.cloudera.hdfs/hdfs-site.xml conf/

2.启动

sh bin/start_broker.sh --daemon

3.添加Broker
host 为 FE 所在节点 ip;port 为 fe/conf/fe.conf 中的 query_port;默认使用 root 账户,无密码登录。进入fe,如果端口没改,默认是9030

mysql -h host -P port -uroot

mysql -h 10.218.223.96 -P 9030 -uroot

host 为 Broker 所在节点 ip;port 为 Broker 配置文件中的 broker_ipc_port

ALTER SYSTEM ADD BROKER broker_name “host1:port1”,“host2:port2”,…;

ALTER SYSTEM ADD BROKER broker_name “192.168.29.44:8000”;

  1. 查看Broker状态(isAlive 列应为 true)

SHOW PROC ‘/brokers’;

集群的部署

节点1配置FE(Leader) be
节点2配置FE(Observer)和 BE
节点3配置BE

为啥只有 FE-Follower ,却没有FE-Leader?因为Leader是从Follower中选举出来的,如果自由一个Follower ,那么它就呗选举为Leader

hostname	FE-Follower	FE-Observer	BE	mysql
节点1 			  √ 	  			√ 	√
节点2 	  				  √ 		√ 	 
节点3 	  	  						√

FE的配置
单个配置fe.conf

在fe下创建doris-meta目录,用来存放元数据。
配置conf里的fe.conf。很多都是默认设置。修改的地方:
meta_dir = /opt/doris/DORIS-0.14.7-release/fe/doris-meta。就是创建的doris-meta目录;
http_port = 18030。默认是8030端口,如果自己电脑的被占用了,就换一个端口,此处换了18030。
priority_networks = 192.168.11.37/16。本机的ip地址。(不知道是不是必须设置的,但改了集群是可以用的)
在fe目录下,启动fe。bin/start_fe.sh --daemon。初次启动可以指定helper:bin/start_fe.sh --helper devtest4.com:9010 --daemon
使用jps,查看是否有PaloFe进程,有则启动成功。
使用MySQL client连接。mysql -h hostname -Pport -uroot。默认使用的port是9030,可在fe.conf里看默认的端口号(query_port = 9030
)。mysql -h devtest4.com -P9030 -uroot。
连接成功,则查询fe节点。SHOW PROC '/frontends'\G (不加";")。alive=true则成功。

集群fe的配置

将整个文件夹远程拷贝到另外机器上。scp -r 文件夹 root@ip:/opt/doris
修改 fe/doris-meta/image下的ROLE。name前缀改成当前电脑的ip地址,role为FOLLOWER或OBSERVER。
修改完另外三台电脑后,启动fe。
然后在MySQL中添加关联。

    #添加fe节点
    ALTER SYSTEM ADD FOLLOWER "devtest1.com:9010";
    ALTER SYSTEM ADD FOLLOWER "devtest2.com:9010";
    #删除节点
    alter system drop follower "devtest2.com:9010";
    alter system drop observer "devtest3.com:9010";

添加一个节点之后,可以使用 SHOW PROC '/frontends'; 来查看添加的状态。如果alive都是true则添加成功(可能等几秒)。如果添加不成功就删除节点,再来。

切记

第一次启动fe一定要用–helper启动,否则启动不成功,无法加入集群,必须借助已经启动的FE节点(master或者follower)来扩容新的节点,helper
不能指向 新FE节点 自身 当新的fe第一次启动失败,或无法加入集群时。修改配置后,一定要先清空fe的meta路径,然后再重启fe**


BE的配置

在be下创建storage目录。
修改conf里的be.conf配置文件。storage_root_path = ${DORIS_HOME}/storage;priority_networks = 192.168.xx.xx/16(可通过ip a查看本机的priority_networks)
mysql -h devtest4.com -P9030 -uroot 进入mysql;
添加backend信息。

    #添加
    ALTER SYSTEM ADD BACKEND "devtest1.com:9050";
    #如不小心填错了,可用这个删除:
    alter system decommission backend "devtest1.com:9050";

启动be。bin/start_be.sh --daemon (--daemon在后台启动)

查看be状态。SHOW PROC '/backends'\G。如果alive=true,则启动成功。

BE集群的配置

三个be设置同理。
BE启动遇到的问题
问题1:

初次启动bin/start_be.sh --daemon时,启动不了,出现以下问题

查看日志be.out,有以下日志信息,原因是文件最大句柄数太小。

要做得修改:

运行以下命令(第一次使用echo来进行写入操作,一开始还看不懂,太菜了。第一行的命令是将双引号里的内容“”写入到、/etc/...这个目录下的limits.conf文件里)

    echo "* soft nofile 204800"  >> /etc/security/limits.conf
    echo "* hard nofile 204800"  >> /etc/security/limits.conf
    echo "* soft nproc 204800"  >> /etc/security/limits.conf
    echo "* hard nproc 204800 "  >> /etc/security/limits.conf

    修改 /etc/sysctl.conf, 加入这个设置
    echo   fs.file-max = 6553560  >> /etc/sysctl.conf

查看是否修改成功
cat /etc/security/limits.conf
cat /etc/sysctl.conf
ulimit -a。查看open file的数量,如果是1024,改大一点,我改成两万。
vi /etc/profile。添加行:ulimit -u 204800
source一下就立即生效了,不用重启。
重新连接服务器,查看 ulimit -a 看修改是否成功。

问题2:

也是启动不了,查看日志,有以下信息。

ev_http_server.cpp:91] Check failed: s.ok() Internal error: tcp listen failed, errno98, errmsg=Address already in use

问题http_server已经在启动,说明是webserver_port 端口冲突了,修改be.conf中的端口。重新启动,就好了。
问题3:有一台机器还是端口冲突,修改be.conf里的brpc_port端口

问题4:be启动了,但是接收不到frontend的心跳

查看日志,backend ip问题,看了be.conf配置信息,是priority_networks的ip地址写错了一个数字。改了之后,关闭重新启动。终于所有的be都是alive=true的了。

broker集群设置
配置文件下绑定本机id即可 直接在mysql中添加broker 同fe的操作基本相同
官方文档:常见问题及扩容注意事项

----文章为备忘笔记 如有侵权请告知删除

你可能感兴趣的:(Doris,docker,centos,linux)