关于Druid的一些问答

1   Druid是否支持非结构化数据?
Druid不支持非结构化数据,数据摄入时依赖预先定义好的结构对数据进行处理
2   Druid支持什么格式的数据入库
支持json  csv tsv  或者有明确分隔符的原始数据。
3   Druid数据写入失败的原因?
实时 : 实时流数据的写入有一个以当前时间为基准的时间窗口(windowPeriod)设置,若待写入数据的时间不在该时间窗口内,则无法写入Druid
离线  : 离线写入的数据时间需在指定的interval范围内。

4  实时写入方式的Segment没有落地的原因?
  • Druid更新Metadata Storage 失败,需要确保连接MetaData Storage正确
  • 历史节点没有足够的容量用于本地缓存Segment
  • Deep Storage连接配置不正确
5  如何使用HDFS作为Deep Storage?
  • 确保安装包含druid-hdfs-storage组件
  • 在common.runtime.properties的druid.extensions.loadList配置中加入druid-hdfs-storage,且在middleManager配置中加入对应的Hadoop依赖项
  • 在服务启动命令中增加Hadoop classpath依赖,或者在_common目录下增加Hadoop相关配置文件(core-site.xml hdfs-site.xml  mapred-site.xml  yarn-site.xml)

6   数据更新是怎么回事?
Druid可以通过对数据重新摄入生成新的Segment 一旦新的Segment成功生成,新生成的Segment就将替代旧的Segment

7  如何更新历史数据?
Druid中历史数据的更新基于segment 如schema变化(新增或减少字段),metric聚合规则变化,Roll-up聚合粒度改变等,可以利用离线方式重算数据,然后通过重跑batch-ingestion任务的方式覆盖指定时间范围的数据。
8   如何监控批量导入Druid方式的任务?
 以hadoop导入数据方式为例:
1) 首先离线ETL处理后把待写入Druid的数据放置在指定HDFS路径中
2) 然后通过inputSpec发送HTTP POST请求给overlord节点并获取taskId
3) 最后定期利用taskId向overlord节点发送HTTP GET请求检查任务状态
9  数据时间格式如何设置?
auto     由Druid自动判断时间格式,若含有非数据字符,按照iso解析,否则按照millis解析
iso     2016-09-01T12:00:00+08:00
posix  从1970年1月1日开始的秒数
millis  从1970年1月1日开始的毫秒数

Druid是内存数据库么?
早期的Druid的确是设计为内存数据库,所有数据都在内存中,后来为了需要支持更多的数据,Druid采用了内存映射加使用配置管理的方式,就是将最需要被查询的数据放在内存中,超出部分和不常用的数据放在磁盘和SSD中。
什么是Druid的深度存储?
Druid依赖深度存储系统保存Segment文件,如果历史节点挂掉,Druid则可以从深度存储中加载Segment恢复数据支持查询,深度存储系统可以使用HDFS
zookeeper会不会因为单点失效影响Druid
首先 zookeeper可以部署为多节点模式,且通常非常可靠,其次,即使zookeeper全部失败了,Druid的查询功能可以正常对外服务,但是新写入的数据将无法进入系统,因为Druid需要通过zk来管理Segment
coordinator会不会存在单点失效的问题
coordinator的运行采用master/slave模式,即每次只有一个master工作,多个slave节点处于预备状态中,coordinator和zookeeper一样,如果全部失效后,将影响新Segment的分配和管理,但对已有的查询没有影响。
查询是否会经过Coordinator?
coordinator只会参与管理Segment而不参与查询过程,因此查询不会经过coordinator节点。
Druid与Elasticsearch的比较?
Druid通过数据预聚合的方式压缩数据并提升访问速度,但是原始数据经过Roll-up后将丢失,Elasticsearch保存原始数据并通过建立倒排索引的方式对文档索引查询,因此非常适合检索的场景,Druid需要预先定义数据的schema,Elasticsearch则Schema free  ,因此可以写入各种JSON数据。
为何多次并行聚合查询性能会下降?
通常的思路是从判断是否遇到GC瓶颈入手,聚合查询会用到更多的内存,因此比价容易遇到内存使用上限的问题。

在Druid中如何设置Segment的保留时间?
Druid中已生成的Segment会永久的存储在Deep Storage中,但是可以利用coordinator的管理页面配置指定DataSource的Segment在本地服务器上的保留时长 配置参考如下
  • Forever Load  永久保留
  • Interval  Load  只保留指定时间段的数据
  • Period Load 只保留最近指定时长的数据








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值