infobright 安装与配置详细教程
infobright 安装与配置详细教程
jeremyli90 发表于7个月前
infobright 安装与配置详细教程
  • 发表于 7个月前
  • 阅读 54
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

Infobright是一个基于独特的专利知识网格技术的列式数据库,能够降低您90%的管理工作量。使用Infobright不需要创建特殊的数据库模式,无需创建和维护索引,无需对数据进行分区,甚至不需要手动调整,知识网格就会在原始数据导入时,自动创建和维护数据,并用以优化每一个查询。在一台PC服务器上,Infobright企业版在对50TB甚至更多数据量进行多并发复杂查询时,能够显示出令人惊叹的速度,相比于MySQL,其查询速度提升了数倍甚至数十倍。在同类产品中,Infobright的单机性能处于领先地位。

Infobright是一个与MySQL集成的开源数据仓库(Data Warehouse)软件,可作为MySQL的一个存储引擎来使用,SELECT查询与普通MySQL无区别。

一、Infobright的基本特征:
优点:
查询性能高:百万、千万、亿级记录数条件下,同等的SELECT查询语句,速度比MyISAM、InnoDB等普通的MySQL存储引擎快5~60倍。
存储数据量大:TB级数据大小,几十亿条记录。
高压缩比:在我们的项目中为18:1,极大地节省了数据存储空间。
基于列存储:无需建索引,无需分区。
适合复杂的分析性SQL查询:SUM, COUNT, AVG, GROUP BY。

限制:
不支持数据更新:社区版Infobright只能使用“LOAD DATA INFILE”的方式导入数据,不支持INSERT、UPDATE、DELETE。
不支持高并发:只能支持10多个并发查询。

 没有提供主从备份和横向扩展的功能: 如果没有主从备份,想做备份的话,也可以主从同时加载数据,但只能校验最终的数据一致性,这会使得从机在数据加载时停服务的时间较长;横向扩展方面,倒不是 Infobright 的错,它本身就不是分布式的存储系统,但如果把它搞成一个分布式的系统,应该是一件比较好玩的事情。 

 

与MySQL对比:
  1、infobright适用于数据仓库场合:即非事务、非实时、非多并发;分析为主;存放既定的事实(基本不会再变),例如日志,或汇总的大量的 数据。所以它并不适合于应对来自网站用户的请求。实际上它取一条记录比mysql要慢很多,但它取100W条记录会比mysql快。
  2、mysql的总数据文件占用空间通常会比实际数据多,因为它还有索引。infobright的压缩能力很强大,按列按不同类型的数据来压缩。
  3、服务形式与接口跟mysql一致,可以用类似mysql的方式启用infobright服务,然后原来连接mysql的应用程序都可以以类似的 方式连接与查询infobright。这对熟练mysql者来说是个福音,学习成本基本为0。

 

二、Infobright 安装与基本用法:
1、以前的版本没有提供rpm包,现在针对red hat 系列产品提供了rpm的安装包。

cd /usr/local/src 
wget http://www.infobright.org/downloads/ice/infobright-4.0.7-0-x86_64-ice.rpm 
rpm -i infobright-4.0.7-0-x86_64-ice.rpm

这样就下载安装OK了。

官方下载地址:http://www.infobright.org/Download/ICE/

我的centos 系统是64位的,所以,下载的是64位的infobright社区版本。企业版本是要收费的,而且费用很昂贵。

如果,你不知道自己的centos是否已经安装,可以通过如下命令来检测:

rpm -qa|grep infobright

或者:

rpm -q infobright

通过以上方式是默认的安装。作为学习研究,我们肯定不希望默认安装。希望,能更改软件的安装位置。比如,将infobright安装到/opt/infobrgiht 目录下面。那么可以在安装的时候通过如下命令实现:

rpm -ivh infobright-4.0.7-0-x86_64-ice.rpm --prefix=/opt/infobright

注意:不要把ICE安装在root或者home目录下面,可能会和mysql引起冲突。

2、相关的配置文件路径
默认安装情况下相关配置文件位置如下:

配置文件: [/etc/my-ib.cnf] 
brighthouse.ini文件: [/usr/local/infobright-4.0.7-x86_64/data/brighthouse.ini] 
数据存放目录datadir: [/usr/local/infobright-4.0.7-x86_64/data] 
缓存目录CacheFolder: [/usr/local/infobright-4.0.7-x86_64/cache] 
socket位置: [/tmp/mysql-ib.sock]  
port端口: [5029]

可以通过执行如下程序来设置以上配置:

/usr/local/infobright/postconfig.sh

然后,根据提示来进行更改配置吧。

注意:这个脚本的运行必须保证infobright没有运行。

3、启动和停止
启动命令:

/etc/init.d/mysqld-ib start

停止命令:

/etc/init.d/mysqld-ib stop

4、卸载
有时候配置出错,又或者学习使用,可能会遇到卸载的情况。命令如下:

rpm -e infobright

5、配置infobright内存大小

vi /usr/local/infobright/data/brighthouse.ini

ServerMainHeapSize为IB所使用内存的最大值(不包括bh_loader),如果是专用DB服务器,可适当调大,保证在业务最高峰,系统swap交换不高即可。

LoaderMainHeapSize由于是列式存储,IB需要将多行数据各列数据组合后写入数据块,如果导入表的列数很多,字段很长,将该值调高,加快导入速率(导入前set autocommit=0,完成后commit+复原,可大幅提高导入效率)。

ControlMessages 为IB错误日志记录类型,实验环境设为4有利于排错,成熟的生产环境设为2或3即可。

KNFolder 为知识网格所在目录,通常情况下大小都很小,直接放在data目录下即可。

根据自身的物理内存大小修改ServerMainHeapSize、ServerCompressedHeapSize、LoaderMainHeapSize的值,有参考:

############  Critical Memory Settings ############ 
# System Memory    Server Main Heap Size     Server Compressed Heap Size   Loader Main Heap Size 
# 32GB                 24000                      4000                       800 
# 16GB                 10000                      1000                       800 
#  8GB                  4000                       500                       800 
#  4GB                  1300                       400                       400 
#  2GB                  600                        250                       320

6、设置字符集

infobright默认情况下不支持中文,为了更好的支持中文,需要设置默认的字符集。

vim /etc/my-ib.cnf

找到如下内容

collation_server=latin1_bin
character_set_server=latin1

将其修改为:

collation_server=utf8_bin
character_set_server=utf8

7、安装启动脚本

cp /usr/local/infobright-4.0.7-x86_64/share/mysql/mysql.server /etc/init.d/mysqld-ib
vim /etc/init.d/mysqld-ib

找到如下两行代码:

conf=@BH_CONF@ 
user=@BH_USER@

修改为:
conf=/etc/my-ib.cnf 
user=mysql

上面的配置文件中使用了 mysql 用户,在配置完成后需要确定下mysql用户是否真的存在:

cat /etc/passwd | grep mysql

如果不存在,则需要执行如下内容进行用户的添加:

groupadd mysql
useradd -s /sbin/nologin -g mysql mysql

接下来就试着启动infobright

/etc/init.d/mysql-ib start

系统无法启动,显示如下信息,:

Starting MySQL/etc/init.d/mysqld-ib: line 175: lsb_release: command not found
........ ERROR!

要解决如上问题执行如下操作即可:


yum install -y redhat-lsb

重新执行启动命令后还是存在报错:


Starting MySQL........ [FAILED]

查看错误日志:

cat /usr/local/infobright-4.0.7-x86_64/data/bh.err

错误日志中的内容为:


150312 18:20:15 [ERROR] Fatal error: Can't change to run as user 'mysql' ; Please check that the user exists!
初步判断是mysql没有权限,可能安装的时候使用的是root安装,具体怎么修改权限暂时未搞通,暂时的方案是修改/etc/init.d/mysqld-ib文件中的user为root,修改后即可正常运行。

相关的其他指令:
/etc/init.d/mysqld-ib stop
/etc/init.d/mysqld-ib restart

添加开机启动:

chkconfig --add mysqld-ib

8、进入infobright
infobright是以MYSQL存储引擎方式运行的。按照以往MYSQL存储引擎必须配置MYSQL才能使用。但是,infobright 不需要。默认自带了MYSQL主程序。通过以下命令即可进入infobright的操作界面:

mysql-ib

这个时候,我们为infobright分配一个能远程连接的账号,如下:

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY '12345678';

这样,我们就可以通过MYSQL的客户端程序,只需要装端口号修改为infobright的默认端口5029即可连接infobright仓库了。

9、创建一个Infobright表
请注意与MYSQL的其他存储引擎的区别。

CREATE DATABASE `dw`CHARACTER SET utf8 COLLATE utf8_bin; 
 
CREATE TABLE `dw`.`dim_day`( 
`DateKey` INT, 
`CalDate` DATE, `CalYear` INT, 
`CalQuarter` VARCHAR(8), 
`CalMonth` INT, 
`CalWeek` VARCHAR(8), 
`CalDay` INT, 
`Holiday` VARCHAR(8), 
`YearQuarter` VARCHAR(8),
 `YearMonth` INT 
) ENGINE=BRIGHTHOUSE DEFAULT CHARSET=utf8 ; 
 
LOAD DATA LOCAL INFILE 'C:\\Users\\biaodianfu\\Desktop\\dim_day.csv' 
INTO TABLE `dw`.`dim_day` CHARACTER SET 'utf8' 
FIELDS ESCAPED BY '\\' TERMINATED BY ','
 LINES TERMINATED BY '\n' 
(`DateKey`, `CalDate`, `CalYear`, `CalQuarter`, `CalMonth`, `CalWeek`, 
`CalDay`, `Holiday`, `YearQuarter`, `YearMonth`);

注:BRIGHTHOUSE存储引擎建表时不能有AUTO_INCREMENT自增、unsigned无符号、unique唯一、主键PRIMARY KEY、索引KEY。 为了不出现中文乱码问题,不管是创建库还是创建表,亦或是导入数据,都需要指定字符集。

10、其他
因为我们只能安装infobright的社区版ICE, IEE是企业版,收费的,挺贵。所以,这个ICE社区版只能通过 LOAD DATA INFILE 导入数据。不支持:INSERT、UPDATE、DELETE。不支持高并发(只能支持10-18个并发查询 ),所以这个只能作为线下数据分析。不能作为线上的对外的一个高并发的解决方案。

标签: Infobright
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 34
码字总数 25695
×
jeremyli90
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: