carbondata测试报告
此文档是测试carbondata(1.4)与parquet(1.10)在spark sql搜索引擎上执行的对比情况
硬件配置
CPU:Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz X 12
Memory : 128G
HardDisk : 12 X 4T,SATA盘
spark服务硬件配置
CPU:Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz X 10
Memory : 50G
HardDisk : 3 X 4T,SATA盘
carbon配置项
carbon.storelocation=hdfs://logSave/carbon/carbonStore
carbon.ddl.base.hdfs.url=hdfs://logSave/data
carbon.sort.file.buffer.size=100
carbon.number.of.cores.while.loading=10
carbon.sort.size=100000
carbon.enableXXHash=true
carbon.number.of.cores.block.sort=5
carbon.number.of.cores.while.alterPartition=2
carbon.number.of.cores.while.compacting=2
carbon.compaction.level.threshold=4,3
carbon.load.global.sort.partitions=1024
carbon.major.compaction.size=1024
carbon.number.of.cores=4
carbon.inmemory.record.size=120000
carbon.enable.quick.filter=false
carbon.lock.type=LOCALLOCK
carbon.sort.intermediate.files.limit=20
carbon.sort.temp.compressor=GZIP
spark配置项
spark.master spark://xxx:7077
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 8g
spark.sql.autoBroadcastJoinThreshold 2147483624
spark.scheduler.mode FAIR
spark.default.parallelism 100
spark.kryoserializer.buffer.max 2047
spark.executor.extraJavaOptions -XX:+CMSClassUnloadingEnabled -XX:MaxTenuringThreshold=5 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:PermSize=2048M -XX:MaxPermSize=4096m -XX:+UseCompressedOops
spark.eventLog.enabled true
spark.eventLog.dir hdfs://logSave/tmp/historydir
spark.sql.autoBroadcastJoinThreshold 2147483647
spark.rpc.askTimeout 300
spark.driver.extraJavaOptions -Dcarbon.properties.filepath=/home/dmp/spark-2.2.1-bin-hadoop2.7/conf/carbon.properties
spark.executor.extraJavaOptions -Dcarbon.properties.filepath=/home/dmp/spark-2.2.1-bin-hadoop2.7/conf/carbon.properties
数据情况
测试表名:base_parquet
数据格式:parquet
数据大小:279.7 G
数据条数:2784634688
数据维度:26维
服务器:18台,只有17台有数据,当时掉了一台,所以做转化时任务数为17,查询时为18台
转化情况
由于现在直接使用carbondata 开放的sdk接口输出不了carbondata,所以先使用简单的生成carbondata的方式。insert into select..
parquet转parquet
时间:26min
parquet转carbondata(建表语句默认配置)
时间:30min
大小:193G
parquet转carbondata_2(建表语句对手机号建了索引)
时间:35min
大小:204.3 G
表
base_parquet 别名:b1
base_carbondata_manager 别名:b2
base_carbondata_manager_2 别名:b3
sql语句
测试说明:根据日志留存的情况,把最小查询力度放到小时分区进行查询。现进行最小力度的测试对比。
Q1:select count(1) from t;
Q2:select * from t where msisdn=’xxxxx’;
Q3:select * from t where msisdn=’xxxxx’ and sourceip=’xxxxx’ and destip=’xxxxx’;
Q4:select * from t where destip='xxxxx' and sourceport=xxxxx;
Q5:select * from t where url=’http://eventlog.beacon.qq.com‘;
Q6:select sourceip,count(1) as ct from t group by sourceip order by ct desc limit 10;
表/耗时(s) | Q1 | Q2 | Q3 | Q4 | Q5 | Q6 |
---|---|---|---|---|---|---|
b1 | 1.016 | 40.947 | 34.911 | 27.976 | 29.742 | 31.528 |
b2 | 1.404 | 9.056 | 4.139 | 15.028 | 14.925 | 15.042 |
b3 | 1.063 | 5.941 | 3.353 | 15.621 | 9.934 | 13.909 |
从以上对比来看,carbondata查询性能明显高于parquet。
网友评论