由于项目需要,近期一直在研究华为开源的carbondata项目,目前carbondata已经成为apache的顶级项目,项目活跃程度也比较高。
Carbondata介绍
纵观目前的大数据生态圈,针对于ad-hoc查询并没有什么好的解决方案,且查询效率不高。Carbondata针对ad-hoc给出了解决方案,但是目前版本这个方案并不完善。为什么说并不完善,后续会给大家解答,我们先来说下carbondata的优点
查询
- 两级索引,减少IO:适合ad-hoc查询,任意维度组合查询场景
- 第一级:文件索引,用于过滤hdfs block,避免扫描不必要的文件
- 第二级:Blocklet索引,用于过滤文件内部的Blocklet,避免骚烤不必要的Blocklet
- 延迟解码,向量化处理:适合全表扫描、汇总分析场景
数据管理
- 数据增量入库,多级排序可调:有用户权衡入库时间和查询性能
- 字典编码配置(Dictionary Encoding Configuration)
- 反向索引配置(Inverted Index Configuration)
- 排序列配置(Sort Columns Configuration)
- 增量更新,批量合并:支持快速更新事实表或维表,闲时做Compaction合并
大规模
- 计算与存储分离:支持从GB到PB大规模数据,万亿数据秒级响应
部署
- Hadoop Native格式:与大数据生态无缝集成,利用已有hadoop集群资产
- 与Spark2.x版本集成 carbondata 1.4.0新增了挺多强大的功能,主要关注的点是在datamap上,不过目前datamap对于单表的支持是比较好的,但是对于多表join的datamap支持还不够完善,还是有蛮多问题的。
单表的datamap目前包括:preaggregate、timeseries、bloomfilter、lucene
|
|
多表datamap目前1.4.0官方文档并没有给出,我是通过carbondata jira的问题找到其创建方式的,多表的datamap预计在1.5.0版本才能使用,目前问题较多,这里暂时不建议使用,等1.5.0版本出来之后再试试看。1.5.0版本官方等版本计划是8-9月份完成。
与Spark2.2.1+Hadoop2.7.2 On Yarn集成
前置条件
- Hadoop HDFS 和 Yarn 需要安装和运行。
- Spark 需要在所有的集群节点上安装并且运行。
- CarbonData 用户需要有权限访问 HDFS.
可以通过https://dist.apache.org/repos/dist/release/carbondata/1.4.0/下载你对应的spark版本,目前carbondata支持的spark版本有两个:2.1.0、2.2.1
下载apache-carbondata-1.4.0-bin-spark2.2.1-hadoop2.7.2.jar
|
|
依赖包拷贝
|
|
创建carbonlib目录且生成tar.gz压缩包
|
|
[注]:如果想要测试多表的datamap mv功能,需要编译carbondata-apache-carbondata-1.4.0-rc2/datamap/mv下的core和plan两个工程,生成carbondata-mv-core-1.4.0.jar以及carbondata-mv-plan-1.4.0.jar并拷贝到$SPARK_HOME/jars和$SPARK_HOME/carbonlib,并重新执行上述第三步的内容。
拷贝carbondata.properties
拷贝carbon.properties.template到$SPARK_HOME/conf目录且命名为carbon.properties
配置spark-default.conf
|
|
验证
启动thrift server服务
|
|
执行后,任务会提交到yarn上,可以通过8088端口的web界面查看到。
如果在不配置spark-default.conf的情况下,其实也是可以运行的,不过是以单机模式运行,不会提交成yarn任务,通过4040端口可以查看到spark任务的运行情况
使用beeline链接
|
|
以上就是基于Spark on yarn模式的carbondata集成,carbondata同时也支持Spark独立模式的集成安装。具体可参考下面的链接。
参考连接:
http://carbondata.iteblog.com/installation-guide.html
https://carbondata.apache.org/installation-guide.html