文档章节

druid.io 使用hdfs作为deep storage 不能保存

一只小江
 一只小江
发布于 2016/03/23 19:07
字数 718
阅读 844
收藏 0

前提:

---a、首先需要你自己搭建一个hadoop集群,该集群自带hdfs功能。

---b、第二点在你的druid的集群每一台机器配置hadoop-client。并且需要修改conf,可以直接将hadoop集群的conf目录拷贝过来。(注意:如果conf中的配置文件使用了机器名,这时你需要拷贝集群中机器的 /etc/hosts 中的必要内容,添加到本机的/etc/hosts中,假设192.168.121.100 NameNode )

步骤:

1、配置config/_common/common.runtime.properties:

druid.storage.type=hdfs

druid.storage.storageDirectory=hdfs:/tmp/druid/Storage

3、使用命令直接查看 hdfs dfs -ls hdfs:/tmp/druid/Storage,发现什么也没有保存,排查问题原因。

4、最后在发现在 config/_common/common.runtime.properties 缺少一项配置,在druid.io的手册中没有提及到,导致问题排查了很久,配置druid.extensions.coordinates=[], 增加一项" io.druid.extensions:druid-hdfs-storage ",保存。

5、重新运行第2步的例子(由于配置了hdfs,所以需要最先运行coordination节点,不然先运行其他节点会卡住)。发现任务运行失败、查看日志失败原因(失败原因需要配置一下index服务的log日志,因为是后台线程不会consle 不会打印具体原因,需要配置 config/overlord/runtime.properties中添加下面两项

druid.indexer.logs.type=local
druid.indexer.logs.directory=/tmp/druid/indexlog

)。配置后重新运行第2步的例子,失败后,可以查看/tmp/druid/indexlog下的log文件。

问题日志如下:

2016-03-23T10:04:36,733 INFO [task-runner-0] io.druid.storage.hdfs.HdfsDataSegmentPusher - Copying segment[wikipedia_2013-08-31T00:00:00.000Z_2013-09-01T00:00:00.000Z_2016-03-23T10:04:28.781Z] to HDFS at location[hdfs://tmp/druid/Storage/wikipedia/20130831T000000.000Z_20130901T000000.000Z/2016-03-23T10_04_28.781Z/0]

2016-03-23T10:04:44,089 WARN [task-runner-0] io.druid.indexing.common.index.YeOldePlumberSchool - Failed to merge and upload

java.lang.IllegalArgumentException: java.net.UnknownHostException: tmp

 at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:377) ~[?:?]

 at org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:237) ~[?:?]

 at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:141) ~[?:?]

 at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:569) ~[?:?]

问题原因是由于hdfs配置目录的问题,重新修改config/_common/common.runtime.properties中的

druid.storage.type=hdfs
# druid.storage.storageDirectory=hdfs://tmp/druid/Storage

#增加NameNode,这里必须要只能hdfs集群的nameNode,如果不知到NameNode,可以使用ip代替


druid.storage.storageDirectory=hdfs://Namenode/tmp/druid/Storage

6、重新运行第二步的例子。运行成功。查看hdfs中已经保存了segment的文件。

root@debian:~/druid-0.8.3# hdfs dfs -ls /tmp/druid/Storage

Found 1 items
drwxr-xr-x   - root hdfs          0 2016-03-23 18:11 /tmp/druid/Storage/wikipedia
root@debian:~/druid-0.8.3#

总结 :deep storage使用时 最重要的两点要注意在配置文件config/_common/common.runtime.properties:

1、" io.druid.extensions:druid-hdfs-storage ",这里要先指定使用hdfs,后面hdfs配置的选项才能生效。

2、druid.storage.storageDirectory=hdfs://Namenode/tmp/druid/Storage ,这里的NameNode很重要,如果要是忘记配了,则同样会失败,这里由于在/etc/hosts 文件中配置了NameNode 转换ip为 192.168.120.100。如果你要是没配置可以替换成ip即可。

© 著作权归作者所有

一只小江
粉丝 100
博文 21
码字总数 51352
作品 0
杭州
程序员
私信 提问
加载中

评论(1)

S
SJYeon
你好 我可以往hdfs里存储数据 但是查询的时候无法从hdfs里查询出来,查询出来的都是historical节点上存储的数据,请问需要配置啥吗
druid.io 使用hdfs作为deep storage 出现scheme: hdfs错误

使用hdfs作为druid.io的deep storage,但是在提交任务时却出现了错误。 错误如下: 2016-03-25T01:57:15,917 INFO [task-runner-0] io.druid.storage.hdfs.HdfsDataSegmentPusher - Copying......

一只小江
2016/03/29
171
0
Apache Druid 单机环境搭建

下载 http://druid.io/downloads.html下载druid-0.10.1-bin.tar.gz. ,mysql-metadata-storage-0.10.1.tar.gz 解压 修改日志配置 /druid/druid-0.10.0/conf-quickstart/druid/_common/log4j2......

翱翔fly
2017/10/19
0
0
druid等 olap框架对比分析

简介 Druid 是一个开源的,分布式的,列存储的,适用于实时数据分析的存储系统,能够快速聚合、灵活过滤、毫秒级查询、和低延迟数据导入。 架构 整体架构 Druid集群包含不同类型的节点,而每...

hblt-j
01/24
0
0
EMR Druid 探索(二)

EMR Druid 探索(二) EMR Druid 上文介绍了 Druid 的特点、使用场景以及性能。EMR 在 3.11.0 引入了 Druid,并专门推出了一种新的集群类型:Druid 集群。在具体使用时,Druid 集群可以与 Ha...

xy_xind
2018/06/01
0
0
Druid 实时数据分析存储系统

简介 Druid 是一个开源的,分布式的,列存储的,适用于实时数据分析的存储系统,能够快速聚合、灵活过滤、毫秒级查询、和低延迟数据导入。 Druid在设计时充分考虑到了高可用性,各种节点挂掉...

beta-o-
2015/11/13
0
12

没有更多内容

加载失败,请刷新页面

加载更多

将博客搬至CSDN

https://blog.csdn.net/qq_38157006

Marhal
16分钟前
1
0
unicode Java中求字符串长度length()和codePointCount()的区别

在计算字符串长度时,Java的两种方法length()和codePointCount()一度让我困惑,运行书上例子得到的长度值是相等的,那为什么要设定两个方法呢? 对于普通字符串,这两种方法得到的值是一样的...

泉天下
16分钟前
2
0
uin-app 一、学习理由

选择uni-app 理由 别人的理由 1. 5+ 有HTML5+和Native.js技术,HTML5+包含常用的跨平台的几百个API,能满足常规开发需求,而Native.js把40w原生api映 射成js对象,这样js可以直接调原生。HTM...

轻轻的往前走
18分钟前
1
0
方括号及其在命令行中的不同用法介绍

通配 方括号最简单的用法就是通配。你可能在知道“ Globbing”这个概念之前就已经通过通配来匹配内容了,列出具有相同特征的多个文件就是一个很常见的场景,例如列出所有 JPEG 文件: ls *.j...

Linux就该这么学
24分钟前
1
0
vecty 基础

gopherjs 是把 go 编译为 js 的工具。 vecty 是基于 gopherjs 的一种类似 React 的开发框架。 安装 gopherjs 和 vecty go get -u github.com/gopherjs/gopherjsgo get -u github.com/gopher......

electricface
25分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部