druid/hadoop批量索引/map reduce/yarn/没有远程,只有本地

ma8fv8wu  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(350)

已解决

我们需要把validation.jar放到hadoop/share/hadoop/common/lib/(从https://mvnrepository.com/artifact/javax.validation/validation-api *).
结合文档所说的:在您的druid的索引任务json中将“mapreduce.job.classloader”设置为“true”。
你会让它工作起来:)--Druid0.9.2和Hadoop2.7.3

  • )不知道为什么,我可以看到druid将其类路径中的所有jar上传到hadoop(validation.jar就在那里)。也许jvm从自定义类加载器(?)加载javax.*库的方式有限制

以下内容仅供历史参考,以帮助搜索。

更新

我的错。我忘了把dockerfile中的core-site.xml等复制到Druid安装的正确位置。
我解决了这个问题,现在它将作业发送到hadoop。

然而,现在我遇到了另一个问题。作业执行失败。java.lang.reflect.invocationtargetexception,位于io.druid.indexer.jobhelper.runjobs(jobhelper。java:369)~[druid-index-hadoop-0.9.2。jar:0.9.2].

与这里报道的类似:https://groups.google.com/forum/#!主题/Druid发展/\ujxvlbykd0e。但至少在stacktrace(权限)中有更多的提示。我的案子不太清楚。有人有同样的问题吗?

!!!再次更新!!!

我想这就是我的案子。相同的:https://groups.google.com/forum/#!topic/druid用户/4hydroqzn8h8
我通过hadoop的timeline服务器查看mr的日志来确认:

让我试着修复它,然后更新这个帖子。
更新:找到此:https://groups.google.com/forum/#!主题/druid用户/u6zmkhm3wiu
更新:没有。设置“mapreduce.job.classloader”:“true”会给Map任务带来另一个问题:java.lang.classnotfoundexception:javax.validation.validator at java.net.urlclassloader.findclass(urlclassloader)。java:381)在java.lang.classloader.loadclass(classloader。java:424).... 整个班级的事情:(
所以,罪魁祸首是guice图书馆。Druid0.9.2使用guice 4.1.0,Hadoop2.7.3使用guice 3.0.0…,mapreduce.job.classloader不起作用(它给出了另一个java类未找到的问题)。
现在该怎么办?将guice4.1.0从druid复制到hadoop?

原岗位

为什么druid(0.9.2)没有将作业提交给资源管理器(并且让作业在hadoop集群中运行)?有人能指出我遗漏了什么细节吗?
我在主机名设置为“hadoop”的计算机上运行了2.7.2版的hadoop集群(伪)。hadoop和我的druid在不同的docker示例上运行。druid docker有--到hadoop示例的链接。
从日志中我可以看出它在本地执行mr(使用localjobrunner)。

我还可以通过日志和检查hdfs来确认索引成功:

另外,从Yarn界面。。。我没有看到任何工作被提交。

我已经根据文档配置好了一切。在我的Druid的core-site.xml中,我有:

<property>
  <name>fs.default.name</name>
  <value>hdfs://hadoop:9000</value>
</property>

(是的,它是fs.default.name,而不是fs.defaultfs。。。因为druid扩展仍然使用2.3.0,而且直到2.4.x才知道defaultfs)。回避一点:我认为druid中的类路径有一个bug,它没有将hadoop依赖项添加到运行worker的类路径列表中(我已经在公共运行时属性中指定了默认坐标)。

另外,在overlord runtime.properties中,我已经将索引运行程序类型指定为remote。在middlemanager runtime.properties中也是如此。我能看到Druid捡到的那些配置。

另外,索引日志存储类型设置为hdfs,我可以确认文件是否存储在hdfs中。

所以,就深储藏而言,一切正常。只是这张Map。未在群集中运行。也有人偶然发现了同样的问题,没有从线程解决。在这里:https://groups.google.com/forum/#!主题/druid用户/vvx3vegmtcw
我可以确认deepstorage没有问题(从我指定的hdfs路径提取的输入文件,以及存储在hdfs中的段)。
我错过了什么?

txu3uszq

txu3uszq1#

正如druid文档所指出的,您需要复制hadoop conf文件core-site.xml、hdfs-site.xml、yarn-site.xml和mapred-site.xml。

o7jaxewo

o7jaxewo2#

我们需要把validation.jar放到hadoop/share/hadoop/common/lib/(从https://mvnrepository.com/artifact/javax.validation/validation-api *).
结合文档所说的:在您的druid的索引任务json中将“mapreduce.job.classloader”设置为“true”。
你会得到它的工作:)Druid0.9.2与Hadoop2.7.3

  • )不知道为什么,我可以看到druid将其类路径中的所有jar上传到hadoop(validation.jar就在那里)。也许jvm从自定义类加载器(?)加载javax.*库的方式有限制

相关问题