系统配置
本节提供了CarbonData系统所需的所有配置的详细信息。
carbon.properties中的系统配置
Property | Default Value | Description |
---|---|---|
carbon.storelocation | /user/hive/warehouse/carbon.store | CarbonData将创建存储的位置,并以自己的格式写入数据。 注意:存储位置应该在HDFS中。可在初始化CarbonContext时被覆盖 |
carbon.ddl.base.hdfs.url | hdfs://hacluster/opt/data | 该属性用于配置HDFS相对路径,carbon.ddl.base.hdfs.url中配置的路径将添加到fs.defaultFS中配置的HDFS路径(hdfs://nameHAservice)。 如果此路径已配置,则用户无需在data load时传递完整路径。 例如:csv文件的绝对路径为hdfs:10.18.101.155:54310/data/cnbc/2016/xyz.csv, 如果fs.defaultFS路径配置为“hdfs://10.18.101.155:54310”,用户可以将carbon.ddl.base.hdfs.url配置为/data/cnbc/。那么,data load用户可以将csv路径指定为/2016/xyz.csv。 |
carbon.badRecords.location | /opt/Carbon/Spark/badrecords | 存储不良数据的路径,可在load数据时被BAD_RECORDS_*相关设置覆盖 |
carbon.data.file.version | 2 | 如果此参数值设置为1,则CarbonData将支持旧格式(0.x版本)的数据加载。 如果该值设置为2(1.x以上版本),则CarbonData将仅支持新格式的数据加载。 |
性能配置
本节提供了CarbonData性能优化所需的所有配置的详细信息。
在carbon.properties中的性能配置
load data 配置
Parameter | Default Value | Description |
---|---|---|
carbon.number.of.cores.while.loading | 6 | 指定在CarbonData中加载数据期间用于数据处理的内核数量。 如果你有更多的CPU数量,那么你可以增加CPU的数量,这会提高性能。 例如,如果我们将值从2增加到4,则CSV读取性能可以增加约1倍。建议大于2 |
carbon.sort.size | 500000 | 记录达到配置的值后将会排序并写入到临时文件。建议大于100 |
carbon.max.driver.lru.cache.size | -1 | 最多可以在driver端加载数据的LRU缓存大小。该值以MB表示。 默认值-1意味着没有缓存的内存限制。只接受大于0的整数值。 |
carbon.max.executor.lru.cache.size | -1 | 最多可以在executor节点加载数据的LRU缓存大小。该值以MB表示。 默认值-1意味着没有缓存的内存限制。只接受大于0的整数值。 如果未设置则取carbon.max.driver.lru.cache.size。 |
carbon.merge.sort.prefetch | true | 启用预读取数据,当load data时从排序临时文件中读取数据合并排序。如果没有足够的内存请设置为false。 |
carbon.update.persist.enable | true | 启用此参数持久化数据。 启用将减少UPDATE操作的执行时间。 |
carbon.load.global.sort.partitions | 0 | 当对数据排序引发时,用于shuffle的partition数量. 如果用户不配置或配置小于1,则使用map tasks的数量作为减少任务。 一般来说,我们建议您的群集中每个CPU核心有2-3个任务。 |
carbon.options.bad.records.logger.enable | false | 是否创建有关不良记录详细信息的日志。 |
carbon.bad.records.action | FORCE | 以下是错误记录的四种类型的操作: FORCE:通过将错误记录存储为NULL来自动纠正数据。 REDIRECT:坏的记录被写入到原始的CSV而不是被加载。 IGNORE:坏记录既不被加载也不被写入原始CSV。 FAIL:如果发现任何不良记录,数据加载失败。可以在load data时被配置覆盖 |
carbon.options.is.empty.data.bad.record | false | 如果为false,则空(”“或 ”或,,)数据将不被视为不良记录,反之亦然。 |
carbon.options.bad.record.path | 指定存储不良记录的HDFS路径。 默认情况下,该值为空。 如果启用了不良记录记录器或REDIRECT记录错误,则必须由用户配置此路径。 | |
carbon.enable.vector.reader | true | 此参数提高了select查询的性能,因为它获取大小为4 * 1024行的列式批次,而不是逐行读取数据。 |
例如,如果有1000万条记录要被加载到CarbonData表,我只有16个内核,64GB的内存。使用默认配置总是在排序步骤中失败。 修改如下所示的carbon.properties:
carbon.number.of.cores.block.sort= 1
carbon.merge.sort.reader.thread= 1
carbon.sort.size=5000
carbon.sort.file.write.buffer.size=5000
carbon.merge.sort.prefetch= FALSE
压缩配置
Parameter | Default Value | Description |
---|---|---|
carbon.number.of.cores.while.compacting | 2 | 用户压缩的cpu数量。 |
carbon.compaction.level.threshold | 4, 3 | 决定多少段要合并。比如如果设置为“2,3”,则会对没2个segments进行级别1的压缩 ,对3个级别1压缩后的segments进一步进行级别2的压缩。 |
carbon.major.compaction.size | 1024 | 用于重量级压缩低于此阈值的segments将被合并。 该值以MB表示。 |
carbon.horizontal.compaction.enable | true | 此属性用于打开/关闭横向压缩。在每次执行DELETE和UPDATE语句之后,如果增量(DELETE / UPDATE)文件超过指定的阈值,可能会发生横向压缩。 |
carbon.horizontal.UPDATE.compaction.threshold | 1 | 此属性指定段中UPDATE增量文件数量的阈值限制。 如果增量文件的数量超过了阈值, 那么段内的UPDATE增量文件就有资格进行横向压缩并压缩到单个UPDATE增量文件中。不能等大于10000. |
carbon.horizontal.DELETE.compaction.threshold | 1 | 此属性指定段中块的DELETE增量文件数量的阈值限制。 如果增量文件的数量超过了阈值, 那么段的特定块的DELETE增量文件就有资格进行横向压缩并压缩成单个DELETE增量文件。不能等大于10000. |
carbon.update.segment.parallelism | 1 | 此属性指定update期间每个段的并行数。 如果存在包含太多要更新的记录的段并且遇到spark作业数据溢出相关错误,则最好增加此属性值。 建议将此值设置为executor数量的倍数以达到平衡。 值在1到1000之间。 |
查询配置
Parameter | Default Value | Description |
---|---|---|
carbon.number.of.cores | 4 | 用户查询的CPU数量 |
carbon.enable.quick.filter | false | 提高过滤查询的性能。 |
杂项配置
load data 配置
Parameter | Default Value | Description |
---|---|---|
carbon.sort.file.write.buffer.size | 10485760 | 在排序过程中使用文件写入缓冲区 |
carbon.lock.type | LOCALLOCK | 此配置指定在并发操作过程中要获取的锁的类型。 有以下类型的锁实现: LOCALLOCK:锁在本地文件系统上创建为文件。此锁用于当一台机器上只运行一个Sparkdriver(或thrift server),并且没有其他CarbonData Spark应用程序同时启动时。 HDFSLOCK:锁在HDFS文件系统上作为文件创建。 此锁用于当启动多个CarbonData Spark应用程序并且没有在集群上运行ZooKeeper,并且HDFS支持基于文件的锁定。 |
carbon.sort.intermediate.files.limit | 20 | 可以开始合并排序的最小数量的中间文件。 |
carbon.block.meta.size.reserved.percentage | 10 | 在CarbonData文件中为写入block元数据保留的空间(百分比)。 |
carbon.csv.read.buffersize.byte | 1048576 | csv读取缓冲区大小。 |
high.cardinality.value | 100000 | 识别并应用非高基数列的压缩。 |
carbon.merge.sort.reader.thread | 3 | 用于读取中间文件进行最终合并的最大线程数。 |
carbon.load.metadata.lock.retries | 3 | 获取用于将数据加载到表的元数据锁的最大重试次数。 |
carbon.load.metadata.lock.retry.timeout.sec | 5 | 重试获取锁之间的时间间隔。 |
carbon.tempstore.location | /opt/Carbon/TempStoreLoc | 存储临时文件的位置,默认System.getProperty(“java.io.tmpdir”) |
carbon.load.log.counter | 500000 | Data loading时记录的日志行数 |
压缩配置
Parameter | Default Value | Description |
---|---|---|
carbon.numberof.preserve.segments | 0 | 该属性设置要保留的segments数量以防止被压缩。例如carbon.numberof.preserve.segments = 2,那么2个最新的segments总是被排除在压缩之外。默认没有segments被保留。 |
carbon.allowed.compaction.days | 0 | 在指定的天数内load data的segment将被合并。如果配置为2,仅在2天内load的segment被合并。默认禁用。 |
carbon.enable.auto.load.merge | false | 在data loading时启用压缩。 |
查询配置
Parameter | Default Value | Description |
---|---|---|
max.query.execution.time | 60 | 一个查询被执行的最大时间。该值是在几分钟内。 |
carbon.enableMinMax | true | Min max is feature added to enhance query performance. To disable this feature, set it false. |
动态配置
Parameter | Description |
---|---|
carbon.options.bad.records.action | 以下是错误记录的四种类型的操作: FORCE:通过将错误记录存储为NULL来自动纠正数据。 REDIRECT:坏的记录被写入到原始的CSV而不是被加载。 IGNORE:坏记录既不被加载也不被写入原始CSV。 FAIL:如果发现任何不良记录,数据加载失败。可以在load data时被配置覆盖 |
carbon.options.is.empty.data.bad.record | 如果为false,则空(”“或 ”或,,)数据将不被视为不良记录,反之亦然。 |
carbon.options.sort.scope | 该属性可以有四个可能的值BATCH_SORT,LOCAL_SORT,GLOBAL_SORT和NO_SORT。 如果设置为BATCH_SORT,则排序范围较小,将创建更多索引树,因此加载速度较快,但查询速度可能较慢。 如果设置为LOCAL_SORT,则排序范围更大,每个数据节点将创建一个索引树,因此加载速度较慢,但查询速度较快。 如果设置为GLOBAL_SORT,则排序范围更大,每个任务将创建一个索引树,因此加载速度较慢,但查询速度较快。 如果设置为NO_SORT,数据将以未排序的方式加载。 |
carbon.options.global.sort.partitions | 当对数据排序引发时,用于shuffle的partition数量. 如果用户不配置或配置小于1,则使用map tasks的数量作为减少任务。 |