MatrixDB数据库安装测试

标签: 无 分类: 未分类 创建时间:2022-04-03 04:11:55 更新时间:2024-12-03 13:01:37

前言

系统版本:Linux version 4.18.0-147.el8.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)),就是CentOS8

参考文章:
1.关于时序数据库的一些思考 Prometheus、Influxdb和opentsdb是三款业内比较知名且实际生产使用的时序数据库了,总的来说三款各有优缺点
2.物联网、工业互联网大数据的特点 物联网数据有其显著不同特点,比如:数据是时序的,一定带有时间戳;数据是结构化的;数据极少有更新操作;数据源是唯一的;相对互联网应用;用户关注的是一段时间的趋势;数据是有保留期限的;数据的查询分析往往是基于时间段和某一组设备的;除存储查询外,往往需要实时分析计算操作;流量平稳、可预测;数据处理的特殊性;数据量巨大

1.安装依赖

1
2
3
4
5
6
7
8
## MatrixDB需要Python 3.6,请使用下列命令安装并将Python 3.6设为默认版本:
yum install centos-release-scl
yum install rh-python36
scl enable rh-python36 bash
## 安装parquet依赖
yum install -y epel-release || yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1).noarch.rpm
yum install -y https://apache.jfrog.io/artifactory/arrow/centos/$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)/apache-arrow-release-latest.rpm
yum install -y arrow-libs-3.0.0 parquet-libs-3.0.0
参考文章:
1.视频请参考MatrixDB安装与部署 视频教程

2.修改机器配置

1
2
3
4
5
6
7
8
9
10
## 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
## 关闭SELinux
sed s/^SELINUX=.*$/SELINUX=disabled/ -i /etc/selinux/config
setenforce 0
## 设置主机名(可选)
hostnamectl set-hostname mdw
## 修改/etc/hosts文件,将主机名映射为一个本地网卡地址 (可选)
192.168.100.10 mdw

3.安装数据库

从官网下载安装包,可能需要申请,缺省会安装在/usr/local/matrixdb目录下:

1
2
## 在实际安装过程中,请将文件名替换成最新下载的rpm包名
yum install matrixdb-4.4.1.community-1.el7.x86_64.rpm

4.安装Python依赖包

请用root用户执行下述命令安装MatrixDB所依赖的python包

1
2
3
4
5
## 必须执行
source /usr/local/matrixdb/greenplum_path.sh
yum install gcc python3-devel
pip3 install --upgrade setuptools
pip3 install argparse psutil pygresql pyyaml

5.数据库部署

这个我就不截图了,打开:http://:8240/ 地址,跟着官网,一步一步的做就好了,没有什么难的,就算是不跟着官网做,自己直接下一步,下一步,就可以了。

问题

我因为有虚拟机已经安装了CentOS8,不愿意更换,后来没办法了,所以下面的问题,都是CentOS8上出现的问题,我加了官方交流群,结果也没有人出来说个明白,最后建议我先使用CentOS7.8或者是CentOS7.9都可以,合着我白费力气了,所以最后我还是搞了一个CentOS7的虚拟机,重新尝试安装和配置

因为MatrixDB是在CentOS7上的,我的是CentOS8,所以有点问题,解决过程可以看问题。我这里只说结果好了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
## 安装python36
yum install python36
## 设置默认的命令行,将python指向python36
alternatives --config python

## 安装epel源
yum install -y epel-release
## 配置阿里云的源,如果配置了,可以不用修改配置,我这里干脆就直接将多个源启动了。
cd /etc/yum.repos.d

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
## 启用其中的centosplus、PowerTools源等, 将 enabled 设置为1
vi /etc/yum.repos.d/CentOS-Base.repo

## 安装apache-arrow源
yum install -y https://apache.jfrog.io/artifactory/arrow/centos/$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)/apache-arrow-release-latest.rpm
## 修改源中的路径
vi /etc/yum.repos.d/Apache-Arrow.repo
## 将其中的 $releasever/$basearch/,改为 7/x86_64/
baseurl=https://apache.jfrog.io/artifactory/arrow/centos/7/x86_64

## 安装 arrow-libs parquet-libs
yum install -y arrow-libs parquet-libs


## 安装readline,并创建软连接,因为matrixdb需要这个东西,而且只是6
yum install readline-devel
cd /usr/lib64/
sudo ln -s libreadline.so.7.0 libreadline.so.6

1.安装rh-python36

官网上给出了安装 rh-python36 的依赖,我查了资料,这个rh-pyhon36应该是RedHat的一个python版本,这是针对centos7的,而且自从CentO停止更新和支持之后,使用阿里云的CentOS镜像,就已经无法安装 centos-release-scl 这个源了。

1
2
3
4
5
6
7
8
## 安装python36
yum install centos-release-scl
yum install rh-python36
scl enable rh-python36 bash
## 安装parquet依赖
yum install -y epel-release || yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1).noarch.rpm
yum install -y https://apache.jfrog.io/artifactory/arrow/centos/$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)/apache-arrow-release-latest.rpm
yum install -y arrow-libs-3.0.0 parquet-libs-3.0.0

经过尝试,在我使用阿里云源的时候,我无法安装 centos-release-SCL 源,也无法安装rh-python36,我尝试直接安装 python36 版本。

1
2
3
4
5
6
7
## 安装
dnf install python36
## 配置默认的python版本,并选择python36的安装位置的序号,安装之后的路径是 /usr/bin/python3
sudo alternatives --config python
## or
sudo update-alternatives --config python

2.arrow-libs-3.0.0

除了python之外,还有就是要安装arrow-libs和parquest-libs,因为我用的是阿里云的源,这里也遇到了问题,无法找到 arrow-libs 包。我尝试安装arrow仓库,执行:dnf config-manager –set-enabled powertools 命令时,又必须安装powertools仓库,我这里也没有,只能一步步的解决了。

我按照参考文章4,安装了Apache Arrow,执行 dnf config-manager –set-enabled powertools 出现没有仓库,于是我又按照参考文章5、6安装PowerTools仓库,设置不惜调用了 dnf upgrade,结果出现了 为仓库 ‘appstream’ 下载元数据失败 : Cannot prepare internal mirrorlist: No URLs in mirrorlist,也就是说,其实dnf upgrade更新了yum.repos.d源文件,但是是最新的CentOS的源已经下架了,无法访问了,所以还是不行的。我在参考文章6中,找到了设置 enabled=1的方法,启用 PowerTools 源的方法。

1
2
3
4
5
6
7
8
9
10
## 重新下载阿里云的源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
## 修改
vi /etc/yum.repos.d/CentOS-Base.repo
## 将 enabled=0 改为
enabled=1
## 移除
dnf remove apache-arrow-release-6.0.1-1.el8.noarch
## 重新执行
dnf install -y https://apache.jfrog.io/artifactory/arrow/centos/$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1)/apache-arrow-release-latest.rpm

报错了,显示404,也就是 https://apache.jfrog.io/ui/native/arrow/centos/8/x86_64/repodata/repomd.xml 不存在,arrow 只能支持CentOS7。

解决方案也就来了,将$(cut -d: -f5 /etc/system-release-cpe | cut -d. -f1) 直接换成7就好了。https://apache.jfrog.io/ui/native/arrow/centos/7/x86_64/repodata/repomd.xml

1
2
3
4
## 编辑
vi /etc/yum.repos.d/Apache-Arrow.repo
## 将其中的 $releasever/$basearch/,改为 7/x86_64/
baseurl=https://apache.jfrog.io/artifactory/arrow/centos/7/x86_64
参考文章:
1.在阿里云 Alibaba Cloud linux 2系统上安装 centos-release-scl 普通CentOS也适用 这是CentOS7的安装,直接使用了 rpm ,不知道centos8 适不适用
2.安装zabbix5.0时,yum -y install centos-release-scl显示“没有可用软件包 centos-release-scl”no package(本人初学,勿cue,嘻嘻) 先安装了阿里的 Centos-7.repo 源,然后再安装了centos-release-scl
3.Centos 7安装python3(PY3.6) 这里也是安装了 centos-release-scl 和 rh-python36
3.怎样在 RHEL 8 和 CentOS 8 上安装 Python 3.6 和 pip 安装pyhont36,设置默认的python版本和pip版本。
4.Install Apache Arrow
5.Enable PowerTools Repository on CentOS 8 / Rocky Linux 8 / RHEL 8
6.How to enable PowerTools repository in CentOS 8? You can also just open /etc/yum.repos.d/CentOS-PowerTools.repo with a text editor and set enabled= to 1 instead of 0’. 你可以找到 CentOS-PowerTools.repo 然后设置 enabled= 1。
7.CentOS-PowerTools.repo

3.无法安装arrow-libs-3.0.0

解决了上面的问题,还是无法安装arrow-libs。

1
2
3
4
5
6
[root@hadoop01 yum.repos.d]# yum install arrow-libs-3.0.0
上次元数据过期检查:0:00:27 前,执行于 2022年04月04日 星期一 01时07分01秒。
错误:
问题: 冲突的请求
- 没有东西可提供 libutf8proc.so.1()(64bit)(arrow-libs-3.0.0-1.el7.x86_64 需要)
(尝试添加 '--skip-broken' 来跳过无法安装的软件包 或 '--nobest' 来不只使用软件包的最佳候选)

【解决】
我直接跳过了版本,直接安装了arrow-libs.

1
yum install arrow-libs
参考文章:
1.CentOS 镜像 阿里云官方的关于切换源的方法,CentOS6、7、8
2.CentOS 8换国内软件源(阿里云)

4.没有东西可提供 /usr/bin/python

虽然我经过问题解决,安装了python36,安装了 arrow-libs parquet-libs,使用官方下载的安装包:yum install matrixdb-4.4.1.community-1.el7.x86_64.rpm 安装数据库的时候,还是报错了。我不禁开始骂人了,这个数据库说的倒是挺牛的,可是安装起来这么麻烦,网上的资料又非常的少,而且都是官方的文档,连一篇其他的转载都找不到,可能真是很少有人知道怎么安装吧。

1
2
3
4
5
6
问题: 冲突的请求
- 没有东西可提供 /usr/bin/python(matrixdb-4.4.1.community-1.el7.x86_64 需要)
- 没有东西可提供 libevent-2.0.so.5()(64bit)(matrixdb-4.4.1.community-1.el7.x86_64 需要)
- 没有东西可提供 libperl.so()(64bit)(matrixdb-4.4.1.community-1.el7.x86_64 需要)
- 没有东西可提供 libreadline.so.6()(64bit)(matrixdb-4.4.1.community-1.el7.x86_64 需要)
(尝试添加 '--skip-broken' 来跳过无法安装的软件包 或 '--nobest' 来不只使用软件包的最佳候选)

【尝试】
尝试安装 readline-devel,然后创建了 libreadline.so.6 指向 libreadline.so.7.0 的软链接,结果还是不行,还是找不到libreadline.so.6,这个问题就搁置了。

1
2
3
4
5
6
7
8
9
10
## 安装
yum install readline-devel
## 创建软连接,主要就是用 7 指向 6
cd /usr/lib64/
sudo ln -s libreadline.so.7.0 libreadline.so.6

## 安装
yum install libevent
## 安装perl
yum install perl

5.无法离线安装

我尝试用官方提供的离线仓库包,进行离线安装,也还是不可以正常的安装,出现的还是依赖问题,问题再次被搁置了。

1
2
3
4
5
6
7
8
yum install --disablerepo=* --enablerepo=ymatrix ./matrixdb-4.4.1.community-1.el7.x86_64.rpm
ymatrix 506 kB/s | 106 kB 00:00
错误:
问题: 冲突的请求
- 没有东西可提供 libnsl.so.1()(64bit)(matrixdb-4.4.1.community-1.el7.x86_64 需要)
- 没有东西可提供 /usr/bin/python(matrixdb-4.4.1.community-1.el7.x86_64 需要)
- 没有东西可提供 libreadline.so.6()(64bit)(matrixdb-4.4.1.community-1.el7.x86_64 需要)
(尝试添加 '--skip-broken' 来跳过无法安装的软件包 或 '--nobest' 来不只使用软件包的最佳候选)
参考文章:
1.服务端安装 官方提供的离线安装包。

6.手动安装rpm包

手动安装了 arrow-libs-3.0.0-1.el7.x86_64.rpm 和 parquet-libs-3.0.0-1.el7.x86_64.rpm 两个包,也是报错

1
2
3
rpm -ivh arrow-libs-3.0.0-1.el7.x86_64.rpm

rpm -ivh parquet-libs-3.0.0-1.el7.x86_64.rpm

结果再次安装,还是报python的依赖不满足。

1
2
3
4
5
6
7
8
[root@mdw soft]# yum install ./matrixdb-4.4.1.community-1.el7.x86_64.rpm
上次元数据过期检查:0:43:00 前,执行于 2022年04月07日 星期四 02时45分21秒。
错误:
问题: 冲突的请求
- 没有东西可提供 /usr/bin/python(matrixdb-4.4.1.community-1.el7.x86_64 需要)
- 没有东西可提供 libreadline.so.6()(64bit)(matrixdb-4.4.1.community-1.el7.x86_64 需要)
(尝试添加 '--skip-broken' 来跳过无法安装的软件包 或 '--nobest' 来不只使用软件包的最佳候选)

7.字段名不支持大写

创建表的时候,不支持大写,当把siteno改为 SiteNo,结果就会报错:SQL 错误 [42P10]: ERROR: TagKey specification error: “SiteNo”. Please re-check option.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
---- 创建表
CREATE TABLE realtime_4
(
siteno int NOT NULL,
recordtime timestamp NOT NULL,
Alarm int NULL
)
USING Mars
WITH (tagkey="siteno", timekey="recordtime")
Distributed by (siteno);

---- 错误的
CREATE TABLE realtime_5
(
SiteNo int NOT NULL,
recordtime timestamp NOT NULL,
Alarm int NULL
)
USING Mars
WITH (tagkey="SiteNo", timekey="recordtime")
Distributed by (SiteNo);

【解决】
字段名默认小写 如果想要强制大写 可以在列名上加” , 如: “RecordTiime”

1
2
3
4
5
6
7
8
9
CREATE TABLE realtime_6
(
"SiteNo" int NOT NULL,
recordtime timestamp NOT NULL,
Alarm int NULL
)
USING Mars
WITH (tagkey="SiteNo", timekey="recordtime")
Distributed by ("SiteNo");

8.数据库不显示

在Dbeaver中,我昨天创建了一个数据库,并且创建了一张表,后来再打开,发现已经不见了,但是再次创建同名的数据库,却提示说数据库已经存在了。

【解决】
主要问题就是不知道为什么,原先在进行数据库连接的时候,数据库空着,那么就会理出全部的数据库,昨天还好好的,今天就只能列出一个postgresql数据库了,再新建一个数据库连接就好了。

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。