背景介绍:
近期研发大数据产品遇到一个需求,面对大数据平台中的巨量数据,用户需要对不同表的数据进行聚合查询,包括join,group,count等操作,需要快速的得到结果。目前主要面向离线数据,暂时不考虑实时数据。现行技术选型是基于CDH的大数据平台,通过Mapreduce或者spark引擎进行计算,实时计算效果不太理想。
分析和思考:
这种场景是一种典型的OLAP场景,在大数据底座上完成快速的数据分析工作。目前在市面上有很多种解决方案,通常有以下几种:
1.基于CDH的Parquet存储+Impala,实现对离线数据的快速查询(若有实时数据场景,考虑kudu+impala)
2.引入MPP(Massively Parallel Processing)引擎,例如:Greenplum和starrocks产品,可以独立于hadoop生态而存在。
接下来需要对上面三种工具parquet+impala,greenplum,starrocks进行验证比较。
方案比较:
测试数据:准备了两张表分别为SAD(700,0000条数据),ITEM(SAD的子表,通过SAD_ID关联,300,0000条数据)
测试场景:join+group+order操作
测试语句:
a.数据导入到hive数仓,以parquet格式存储,通过impala 查询
数据导入(oracle-->hive):
sqoop脚本+hive脚本
b. 安装greenplum,数据导入到greenplum
主机规划:1master+2segment (暂时不建立standby主机)
安装注意: 1.三台主机都要修改系统内核信息,安装应用程序
2.三台主机要实现免密登录
3.数据存储目录(文中的/opt/)一定指定到相关数据盘目录,并且赋予gpadmin用户所有
4.其他操作基本上在master上通过命令实现(提前配置了三台主机间的免密登录,master上直接操作其他segment主机)
附:greenplum是基于postgreqsql的,操作命令:
启动命令:切换到gpadmin用户,master主机上执行gpstart
连接命令:psql -d gp_sydb -h mpp-cluster-master -p 5432 -U gpadmin
数据库列表: l
切入demo库:c demo
库中所有表:d
退出:q
查询:select count(1) from public."ITEM";
关闭green plum:gpstop
数据导入:oracle-->greenplum 在master主机上安装cloudcanal工具(可以配置两个节点,master上安装主程序,worker01上再安装一个sidcar节点,提升计算性能),提升数据迁移效率,注意调整任务的参数,如:fullbatchsize,可以手动调整查看效果,达到最佳效果
常见错误:Failed to flush data to StarRocks,解决方法
c. 安装starrocks,数据导入到starrocks
主机规划:1fe+3be (fe也作为一个be)
安装注意: 1.三台主机都要copy安装应用程序
2.三台主机要实现免密登录,
3.FE启动,必须切换到root
master主机上/data/software/fe/bin
在master下启动fe:bin/start_fe.sh --daemon
启动mysql客户端:mysql -uroot -P 9030 -h52.130.81.91
默认密码为空
查看状态:
show frontends G
4.BE启动,必须切换到root
master主机上/data/software/be/bin
worker01主机上/data/software/be/bin
worker02主机上/data/software/fe/bin
bin/start_be.sh --daemon
查看BE状况:
show backends G
5.starrocks基于mysql,操作命令和mysql相似:mysql -uroot -P 9030 -h*.*.*.*
数据导入:oracle-->starrocks, 使用cloudcanla实现oracle到starrocks的数据迁移
结论:
第2次测试结果2184
第3次测试结果1771
第4次测试结果2049
第5次测试结果1824
第6次测试结果2055
第7次测试结果1791
第8次测试结果2177
第9次测试结果2046
第10次测试结果2176
第2次测试结果1445
第3次测试结果1441
第4次测试结果1517
第5次测试结果1493
第6次测试结果1406
第7次测试结果1473
第8次测试结果1584
第9次测试结果1569
第10次测试结果1468
第1次测试结果3867
第2次测试结果820
第3次测试结果959
第4次测试结果2324
第5次测试结果976
第6次测试结果1439
第7次测试结果1889
第8次测试结果1253
第9次测试结果1215
第10次测试结果1133
第2次测试结果980
第3次测试结果1112
第4次测试结果1362
第5次测试结果901
第6次测试结果1126
第7次测试结果1322
第8次测试结果1199
第9次测试结果1420
第10次测试结果1480