分享

求助关于hbase+solr的磁盘策略问题

邓立辉 发表于 2015-11-11 11:32:59 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 9634
刚接触大数据不久,考虑以后数据多了会导致硬盘空间耗尽,所以需要磁盘策略来删除覆盖数据。
1、hbase提供什么机制来做数据删除覆盖的功能么?我网上查的比较感觉靠谱的就是表的数据有效期,通过设置这个会删除过时的数据。不知道什么好方法么?
2、solr的数据删除覆盖,我对solr了解的更少,不知道solr有什么机制,在网上看到data-config.xml里有个deletedPkQuery,我还没弄太明白。
求助,谁能给指点指点,谢谢

已有(4)人评论

跳转到指定楼层
邓立辉 发表于 2015-11-11 17:14:13
没人额,我看来我得自己写删除策略了
回复

使用道具 举报

s060403072 发表于 2015-11-11 19:01:39
邓立辉 发表于 2015-11-11 17:14
没人额,我看来我得自己写删除策略了

都有配置的,过期数据删除
回复

使用道具 举报

s060403072 发表于 2015-11-11 19:08:12
下面希望对楼主有一定的帮助

hbase:
setTimeToLive:指定最大的TTL,单位是ms,过期数据会被自动删除。


##################################################

当数据库中的文档被删除时,Solr的索引应该被清除。Entity配置的deletedPkQuery就用于这个目的。
工作原理:
执行deletedPkQuery,获取当前Entity被删除的pk;
如果Entity有父Entity,则pk对应的父Entity应该更新;
获取父Entity对应的pk,加入到父Entity的Modified pk中;
否则当前Entity就是根Entity,返回deletedRow;
对deletedRow,执行删除操作
对modifiedPk,执行更新操作


#########################################
solr删除方式,当然把下面方式融入到代码中可以实现




有时候需要删除 Solr 中的数据(特别是不重做索引的系统中,在重做索引期间)。删除一些 Solr 无效数据(或不合格数据)。

删除 solr 中的数据有几种方式:

1、先来看 curl 方式:

curl http://localhost:8080/solr/update --data-binary "<delete><query>title:abc</query></delete>" -H 'Content-type:text/xml; charset=utf-8'  

#删除完后,要提交  

curl http://localhost:8080/solr/update --data-binary "<commit/>" -H 'Content-type:text/xml; charset=utf-8'  
2、用自带的 post.jar,在 apache-solr-XXX\example\exampledocs 目录下:

java -Ddata=args  -jar post.jar "<delete><id>42</id></delete>"  

#怎么使用 post.jar 查看帮助  

java -jar post.jar -help  
3、直接用 url,使用 stream 相关参数:

比如:

http://localhost:8080/solr/update/?stream.body=<delete><id>123</id></delete>&stream.contentType=text/xml;charset=utf-8&commit=true

stream 相关参数还有:stream.file=(服务器本地文件),stream.url 分别指到你的删除文本,这里是直接字符串内容用 stream.body 参数。commit 参数是指提交,提交了才能看到删除效果。

小结:其实,方式1、2原理一样,直接 POST xml 数据过去。方式3就是直接可以告诉服务器从那些地方取删除的 xml 内容。

删除指令有两种,一是:用 <id></id> 包装;二是:<query></query> 包装。指令都很明显,一个是 id 值(是在 schema.xml 的 uniqueKey 所指字段的值,而不是索引内部的 docId);query 值是查询串,如:title:"solr lucene"


Solr 删除全部索引:http://localhost:8080/solr/update/?stream.body=<delete><query>*:*</query></delete>&stream.contentType=text/xml;charset=utf-8&commit=true

solr 删除指定ID的索引:http://localhost:8080/solr/update/?stream.body=<delete><id>1</id></delete>&stream.contentType=text/xml;charset=utf-8&commit=true



回复

使用道具 举报

邓立辉 发表于 2015-11-12 09:26:27
s060403072 发表于 2015-11-11 19:08
下面希望对楼主有一定的帮助

hbase:

非常感谢 s060403072

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条