V1.1.5之前的版本发布记录

v1.1.5之前的版本发布记录

2017-02-02  v1.1.5

本版本release内容如下:

一、修正大量spark内存泄露的BUG,从而提升YDB的稳定性

修正的内容如下:http://blog.csdn.net/qq_33160722/article/details/54092560

二、优化spark源码,提升spark的响应速度,从而提升YDB的响应速度

优化点如下:http://blog.csdn.net/qq_33160722/article/details/54693063

三、修改Spark源码,彻底解决由于Spark Clean导致的spark不能持续性的进行大并发查询的问题

解决方法如下:http://blog.csdn.net/qq_33160722/article/details/54893760

四、新增block sort排序

通过block sort排序,可以在秒级内对百亿级别的数据进行排序,对于按照时间的日志检索系统来说,是必备功能。

具体性能指标与测试演示视频,请参考如下两篇文章

1.YDBspark SQL在百亿级数据上的性能对比测试  http://blog.csdn.net/qq_33160722/article/details/54447022

2.如何只用4台虚拟机搞定500G300亿条数据的秒级排序 http://blog.csdn.net/qq_33160722/article/details/54834896

五、YDB针对范围查找,我们重写了lucene的查找逻辑,从而提升范围查找的性能

详细描述,请参考如下地址 http://blog.csdn.net/qq_33160722/article/details/54782969

六、大幅提升YDB易用性

通过/*ydb.pushdown('->')*//*('<-')pushdown.ydb*/ 改进了之前YDB查询需要写数组下标的情况,大幅简化SQL拼写的难度

七、迄今为止,YDB最完善的文档,《YDB编程指南》正式发布

腾讯微云下载:http://url.cn/42R4CG8

github下载:https://github.com/ycloudnet/ydb

八、与AMBARI无缝集成

YDB可以内嵌到AMBARI里面进行图形化页面的部署与维护

九、其他小功能

近似文本匹配与近似特征匹配功能的添加

多值列的支持

考虑单词顺序的文本匹配功能的添加

物理删除接口的SQL支持

基于geohash的地理位置检索的支持

kafka消费监控添加 消费速度与进度的监控

十,BUG修正

修正HDFS短暂不可用的情况下的,索引合并的重试BUG

<=< 的条件写反了,>=>的条件写反了

如何获取1.1.5稳定版本

YDB1.1.5稳定版包括ydb本身以及YDB提供的spark两部分,可以从腾讯微云下载 http://url.cn/42R4CG8

如何升级到1.1.5版本

请参考《YDB编程指南》的第九章YDB运维 中的第一节,YDB升级 177页)

2016-10-10 v1.1.4

BUG修正

修正分析的记录条数为0条的时候Yavg报错的BUG

修正IK分词,词库无效的BUG

修正使用过载保护机制下,有时会报Caused by: cn.net.ycloud.ydb.core.util.YdbDocSetCollectorNonFilter$OverException的报错

如果有kafka,可以使用YDB内置的系统表,收集系统报错

新增功能

添加新的分词

charlike: 按照字符char 1~5元分词 (效果较好,term区分了词元,适合车牌,手机号类型的较短文本)

wordlike: 按字与词 1~3元分词 (效果较好,term区分了词元,适合文本类型)

物理删除分区的接口

版本release 地址

新功能

1.地理位置感知搜索

用于实现【搜索我附近的饭店或宾馆】之类的功能

2.多值列示例

有些时候,我们想在一个列里面存储多个值的时候,就可以考虑使用多值列了

比如说,可以将一个人 的多个标签值 存储在一个记录里面,一个人的每天的行为数据 放在一个

3.近似相似匹配

有一种搜索是这样的搜索,我指定一系列的特征,如 高矮,胖瘦,年龄段,性别,时间等一系列目击者看到的嫌疑人特征,但是有可能有些目击者描述的不准确,所以不能进行精确匹配,如果能与大部分的匹配条件都相似,一两个条件没匹配上,但已经足以相似了,那么也要返回匹配结果。

4.考虑单词顺序的模糊匹配

默认YDB提供了haoma,simpletext等类型进行模糊匹配。

他们本质上是通过分词进行匹配,并不考虑匹配的词的顺序,如果要进行模糊匹配并且又要保证匹配的先后顺序,可以使用该功能。

5.相似文本搜索

并不是所有的文本匹配都要一字不落的完全匹配。

有一种场景,如果能有80%的词语都匹配上,即认为两个文本相似

新功能使用方法请参考ya100\example中的示例方法。

改进

1.SQL解析更换-由正则的方式更换为java cc

2.监控页面的分区直接由hdfs路径获取,而不在通过心跳

简化导入过程

之前的版本离线导入,通过导入表(映射表)导入数据。由于导入表的创建比较复杂,很多用户容易在上面出错。故从1.1.4版本开始,延云YDB可以不创建中间导入表(映射表),可以直接将hive表中的数据直接导入到ydb中,在表的数量很多的客户以及需要使用动态列的客户,可以再导入表上节约时间。

直接导入写法示例:

insert overwrite table  ydbpartion

select 'ydb_example_shu', '3000w', '',

YROW(

'phonenum',phonenum,

'usernick',usernick,

'ydb_sex',ydb_sex,

'ydb_province',ydb_province,

'ydb_grade',ydb_grade,

'ydb_age',ydb_age,

'ydb_blood',ydb_blood,

'ydb_zhiye',ydb_zhiye,

'ydb_earn',ydb_earn,

'ydb_prefer',ydb_prefer,

'ydb_consume',ydb_consume,

'ydb_day',ydb_day,

'amtdouble',amtdouble,

'amtlong',amtlong,

'content',content

)

from ydb_import_txt;

改善SQL转义问题,让SQL看着不在别扭

之前的YSQL里面单引号需要转义,如

ydbpartion=\'3000w\'  and ydb_sex=\'\' and ydb_grade=\'本科\' and (ydb_age=\'2030\' or ydb_blood=\'O\') and  (amtlong like \'([3000 TO 4000] )\')

现在可以直接换成双引号,而不需要反斜杠进行转义

ydbpartion="3000w"  and ydb_sex="" and ydb_grade="本科" and (ydb_age="2030" or ydb_blood="O") and  (amtlong like "([3000 TO 4000] )")

UI页面改进

work工作进程列表 -添加挂掉的进程的识别与提示

UI页面添加 SPARK页面的跳转链接

支持nohup方式的命令行执行SQL

之前采用hivebeeline,由于hive beelinebug,不能在后台执行,故我们用java jdbc重新包装了一下,一遍客户通过后台定时任务执行文件中的SQL,具体用法如下

./sql.sh -f ./a.sql

null与空值匹配的完善

进一步明确null值与空字符串 概念上的区别,并且给出示例如何匹配null与空字符串

支持用户自定义动态列

除了延云YDB内置的动态列外,用户可以通过配置文件自行拓展新的动态列。

2016-10-10 v1.1.3 (首个稳定版)

从阿里海狗,开源的mdrill,到腾讯的Hermes,最后到延云YDB,五年的风风雨雨,我们走过。

万亿数据秒级即席查询与分析,我们一直在坚持,不断的优化与改进。

直至今日,我们推出延云YDB的首个stable版。

介绍文档与软件下载地址如下:https://yunpan.cn/c6KINvxiIHVSr

1,数据规模从几百万、几千万、几亿、几百亿到一万亿。

2,行业:公安、交通、互联网、证券、军队、汽车、运营商、社保,车联网,物流,民航,政府反腐,舆情。

3,内存从4G16G64G128G256G再到512G

4,数据表维度从几列、十几列,几千列,到十二万列。

55个月,来自40多家公司,近百项真实业务场景。

6,从阿里云的ECS,vmwari虚拟机,到intelX86系统,再到IBMOPEN POWER小型机,Centos,到红旗linux,再到Mac OS

7,硬盘从SAS、到SSD,两块,六块到十二块。

8,机器规模从1台,4台,10台到50台。

9,从CDH,HDP,再到红象hadoop,原版原生Hadoop

10,多种格式导入测试,txt,zip,parquet,rcfile,sequencefile,hbase

2016-07-17 v1.1.2

新增功能如下

//直接追加数据

insert into  table ydb_example_shu select *,'3000w','' from ydb_import_txt;

//覆盖数据

insert overwrite  table ydb_example_shu select *,'3000w','' from ydb_import_txt;

//在追加数据前,先执行按条件删除

insert into  table ydb_example_shu select *,'3000w','ydb_sex=\'\'  and ydb_blood=\'A\'' from ydb_import_txt;

第六:我们还能对接kakfa,可以通过kafka导入。详见《2.如何通过kafka实时导入数据.txt

第七:YDB中的数据可以按照条件进行删除

--按条件删除

select Ycount('*',ya100_pipe) from ydb_example_shu where Yfilter('ydb_example_shu','ydbpartion=\'3000w\' and ydb_sex=\'\' and ydb_blood=\'A\' and  ydbkv=\'ydb.delete.query:true\' ',ya100_pipe) and Ycombine('ydb_example_shu','*',ya100_pipe) limit 10;

--整个分区清理,数据清空,但是分区还在

select Ycount('*',ya100_pipe) from ydb_example_shu where Yfilter('ydb_example_shu','ydbpartion=\'3000w\' and ydbkv=\'ydb.truncate:true\'  ',ya100_pipe) and Ycombine('ydb_example_shu','*',ya100_pipe) limit 10;

--binlog立即刷到磁盘上

select Ycount('*',ya100_pipe) from ydb_example_shu where Yfilter('ydb_example_shu','ydbpartion=\'3000w\' and ydbkv=\'ydb.force.sync.binlog:true\'  ',ya100_pipe) and Ycombine('ydb_example_shu','*',ya100_pipe) limit 10;

--刷新缓冲区的数据,让其能被搜索到,(binlog会持久化但数据并不会立即持久化到hdfs

select Ycount('*',ya100_pipe) from ydb_example_shu where Yfilter('ydb_example_shu','ydbpartion=\'3000w\' and ydbkv=\'ydb.force.sync.ram:true\'  ',ya100_pipe) and Ycombine('ydb_example_shu','*',ya100_pipe) limit 10;

--主动触发,将内存中的数据刷盘操作,(数据会被搜索到,并且持久化到磁盘)

select Ycount('*',ya100_pipe) from ydb_example_shu where Yfilter('ydb_example_shu','ydbpartion=\'3000w\' and ydbkv=\'ydb.force.sync:true\'  ',ya100_pipe) and Ycombine('ydb_example_shu','*',ya100_pipe) limit 10;

--暂停kafka的消费3600

select Ycount('*',ya100_pipe) from ydb_example_shu where Yfilter('ydb_example_shu','ydbpartion=\'3000w\' and ydbkv=\'ydb.reader.pause:true\' and ydbkv=\'ydb.reader.pause.secs:3600\'  ',ya100_pipe) and Ycombine('ydb_example_shu','*',ya100_pipe) limit 10;

--恢复 暂停的kafka的消费,kafka继续消费数据

select Ycount('*',ya100_pipe) from ydb_example_shu where Yfilter('ydb_example_shu','ydbpartion=\'3000w\' and ydbkv=\'ydb.reader.pause:true\' and ydbkv=\'ydb.reader.pause.secs:0\'  ',ya100_pipe) and Ycombine('ydb_example_shu','*',ya100_pipe) limit 10;

--http方式的按照条件删除

http://ycloudtest:1210/sql=select Ycount('*',ya100_pipe) from ydb_example_shu where Yfilter('ydb_example_shu','ydbpartion=\'3000w\' and ydb_sex=\'\' and ydb_blood=\'A\' and  ydbkv=\'ydb.delete.query:true\' ',ya100_pipe) and Ycombine('ydb_example_shu','*',ya100_pipe) limit 10;

select count(*) from ydb_example_shu where ydbpartion='3000w' and ydb_sex=''  and ydb_blood='A' and  ydbkv='ydb.delete.query:true' limit 0,100

--http方式的整个分区的清理,数据清空,但是分区还在

http://ycloudtest:1210/sql=select count(*) from ydb_example_shu where ydbpartion='3000w' and  ydbkv='ydb.truncate:true' limit 0,100

--binlog立即刷到磁盘上

http://ycloudtest:1210/sql=select count(*) from ydb_example_shu where ydbpartion='3000w' and  ydbkv='ydb.force.sync.binlog:true' limit 0,100

--http方式的刷新缓冲区的数据,让其能被搜索到,(binlog会持久化但数据并不会立即持久化到hdfs

http://ycloudtest:1210/sql=select count(*) from ydb_example_shu where ydbpartion='3000w' and  ydbkv='ydb.force.sync.ram:true' limit 0,100

--http方式的触发刷盘操作,(数据会被搜索到,并且持久化到磁盘)

http://ycloudtest:1210/sql=select count(*) from ydb_example_shu where ydbpartion='3000w' and  ydbkv='ydb.force.sync:true' limit 0,100

--暂停kafka的消费3600

http://ycloudtest:1210/sql=select count(*) from ydb_example_shu where ydbpartion='3000w' and  ydbkv='ydb.reader.pause:true' and ydbkv='ydb.reader.pause.secs:3600' limit 0,100

--恢复 暂停的kafka的消费,kafka继续消费数据

http://ycloudtest:1210/sql=select count(*) from ydb_example_shu where ydbpartion='3000w' and  ydbkv='ydb.reader.pause:true' and ydbkv='ydb.reader.pause.secs:0' limit 0,100

以下两个方法通常组合使用,先进行异步清理,然后1天后,清理物理分区

轻量级实现 一般20分钟左右生效,一般定时任务清理历史数据用,数据清空,但是分区还在

http://ycloudtest:1210/droppartion?tablename=ydb_example_shu&partions=3000w

直接物理删除,为了避免正在查询的SQL报错,建议先采取上面的方法删除后,1小时后在执行下面的语法,删除后该分区物理上就不在了

http://ycloudtest:1210/droppartion?tablename=ydb_example_shu&partions=3000w&isforce=true

2016-05-20 v1.1.1

已知BUG 修正,提升稳定性

无缝支持帆软等支持hive接口的报表工具

2016-04-07 v1.1.0

v1.101.09bug fix版本

2016-03-06 v1.0.9(重大改进)

鉴于用户反馈,ydb依赖storm,而storm的安装部署较难,学习成本较高,故为了简化ydb的部署难度,从1.09版本开始,ydb的任务调度迁移至spark上,不再使用Storm

本次改动如下

1.ydb去掉Jstorm,改为基于spark部署。

2.ya100ydb深度集成,程序上合二为一。

3.简化部署步骤,减少学习成本,基于spark5分钟内快速部署。

新版ya100ydb部署方法如下

建议的spark版本为 spark1.6

一、修改配置

修改ya100_env.sh

export SPARK_HOME=/data/ycloud/spark1.6

export YA100_EXECUTORS=8

export YA100_CORES=2

export YA100_DRIVER_MEMORY=1000m

export YA100_MEMORY=2000m

修改ydb_site.yaml

ydb.hdfs.path: "/data/xxx/ydbpath"

ydb.reader.rawdata.hdfs.path: "/data/xxx/rawdata“

storm.zookeeper.servers:

- "10.44.20.175"

二、启动ya100

./start.sh

三、启动完毕后初始化

./init.sh

四、停止ya100

./stop.sh

五、查看ydb服务页面

http://xx.xx.xx.xx:8080

2016-02-22 v1.0.8

1.延云新产品Ya100加速器发布上线

2.ydb1.08版本发布上线,代码细节优化,部分BUG修正。

2016-01-14 v1.0.7

本次新增与改动如下:

1,支持多个merger servrer

为了应对集群规模越来越大造成的单节点的merger server压力过大,可以通过 ydb.request.split: 4参数,随机选择一定数量的worker担任merger server.

2ydb on spark支持多集群

ydb on spark可以支持同一个表,跨多个ydb集群查询,用以应对单个ydb集群在集群规模达百台规模以后hdfszookeeper等系统响应变慢等因素,通过这种方式ydb可以支持线性扩展到数千台集群规模,额不用担心到达这个规模后zookeepernamenode的问题。

3.完善ydb on spark是使用用例

SparkExampleBasic ydb on spark基本使用用例

SparkExampleJoin ydb on spark中的高性能的join使用用例

4.添加参数,可以配置当有部分worker失效依然可以查询

允许部分对数据准确性不敏感的业务使用。可以通过ydb.topoplgy.worker.allowfail.count来配置,在某一时间允许出现多少个worker宕机后依然可以查询ydb.

5.重构核心代码,提升计算性能。

6.通过文件导入数据不在要求用户来控制数据粒度,不在要求用户保持均衡,而是自动进行文件切分,保证多个节点之间的数据均衡。

新的json导入接口为

http://127.0.0.1:8080/insertdir?hdfsdir=/data/myntest/jsondata_example.txt

新的按照分隔符导入配置与接口为

可以在ydb_site.yaml里添加如下配置

ydb.reader.list: "default,filesplit"

ydb.reader.read.class.filesplit: "cn.net.ycloud.ydb.server.reader.HdfsTxtDataReader"

ydb.reader.parser.class.filesplit: "cn.net.ycloud.ydb.server.reader.FileSplitParser"

然后调用如下的接口完成批量导入

http://127.0.0.1:8080/insertdir?reader=filesplit&tablename=ydb_example_shu&partion=20160110&splitInfo=,&hdfsdir=/data/ydb/shu_discp

7,读与写的buffer合并,原先是分开的,现在在索引创建完毕后,刚刚生成的索引文件是在buffer中的,这样就不需要在读取这个索引的时候,再次从hdfs中读取索引了,从而提升查询效率。

8,在页面中添加表的数据预览功能sql view

9,优化删分区数据的处理逻辑

10,修正实时导数据会有百万分之一数据丢失的BUG

bug原因为,原先的数据ID时根据crc32生成的,偶尔会碰到crc32碰撞,导致数据被覆盖。

2016-01-01 v1.0.6

谁说ydb只能做简单的SQL的查询,1.06开始ydb全面支持on Spark.

ydb除了本身的优点外,通过spark将支持count distinct ,多表关联,超过1W条的分组统计,SQL嵌套查询,从1.0.6开始。

本次新增如下功能:

继续完善1.05版本的 ydb on spark功能以及修正部分BUG

2015-12-28 v1.0.5

本次新增如下功能:

使用hive来读取ydb的数据进行分析。

使用spark来读取ydb的数据进行分析。

通过编程来导出到其他系统中的接口。

Mapreduce- InputFormat接口。

2015-12-19 v1.0.4

1,修正jar包冲突的BUG

2.新增mapreduce离线导入数据的功能

2015-12-09 v1.0.3

文件与多表关联过滤,可以从kafka消费数据

2015-12-03 v1.0.2

新增导出功能,数据可以导出到hdfs

2015-11-30 v1.0.1

延云YDB首版发布上线