创建HBASE数据库时候不得不注意的几处设置
系统相关属性设置:
HTableDescriptortableDesc=newHTableDescriptor("test");
//日志flush的时候是同步写,还是异步写
tableDesc.setDurability(Durability.SYNC_WAL);
//MemStore大小tableDesc.setMemStoreFlushSize(256*1024*1024);
HColumnDescriptorcolDesc=newHColumnDescriptor("f");
//块缓存,保存着每个HFile数据块的startKeycolDesc.setBlockCacheEnabled(true);
//块的大小,默认值是65536//加载到内存当中的数据块越小,随机查找性能更好,越大,连续读性能更好
colDesc.setBlocksize(64*1024);
//bloom过滤器,有ROW和ROWCOL,ROWCOL除了过滤ROW还要过滤列族colDesc.setBloomFilterType(BloomType.ROW);
//写的时候缓存bloom
colDesc.setCacheBloomsOnWrite(true);
//写的时候缓存索引
colDesc.setCacheIndexesOnWrite(true);
//存储的时候使用压缩算法
colDesc.setCompressionType(Algorithm.SNAPPY);
//进行compaction的时候使用压缩算法colDesc.setCompactionCompressionType(Algorithm.SNAPPY);
//压缩内存和存储的数据,区别于SnappycolDesc.setDataBlockEncoding(DataBlockEncoding.PREFIX);
//写入硬盘的时候是否进行编码
colDesc.setEncodeOnDisk(true);
//关闭的时候,是否剔除缓存的块
colDesc.setEvictBlocksOnClose(true);
//是否保存那些已经删除掉的
kvcolDesc.setKeepDeletedCells(false);
//让数据块缓存在LRU缓存里面有更高的优先级
colDesc.setInMemory(true);
//最大最小版本colDesc.setMaxVersions(3);
colDesc.setMinVersions(1);
//集群间复制的时候,如果被设置成REPLICATION_SCOPE_LOCAL就不能被复制了colDesc.setScope(HConstants.REPLICATION_SCOPE_GLOBAL);
//生存时间colDesc.setTimeToLive(18000);
tableDesc.addFamily(colDesc);