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/
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
WITH_MYSQL=1 WITH_LZO=1 sh build.sh
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则成功部署单节点
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
将源码编译生成的 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/
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 10.218.223.96 -P 9030 -uroot
host 为 Broker 所在节点 ip;port 为 Broker 配置文件中的 broker_ipc_port
ALTER SYSTEM ADD BROKER broker_name “192.168.29.44:8000”;
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的操作基本相同
官方文档:常见问题及扩容注意事项