【发布时间】:2017-10-17 23:55:32
【问题描述】:
我通过 Ambari (HDP -2.6.2.0) 设置了 Hadoop/Spark 集群。现在我的集群正在运行,我想向其中提供一些数据。我们在本地有一个 Elasticsearch 集群(版本 5.6)。我想设置 Elastic 提供的 ES-Hadoop 连接器 (https://www.elastic.co/guide/en/elasticsearch/hadoop/current/doc-sections.html),以便我可以将一些数据从 Elastic 转储到 HDFS。 我用 JARS 抓取了 ZIP 文件,并按照 CERN 博客文章中的说明进行操作:
到目前为止,这似乎是合理的,但我有一些问题:
我们在 Elasticsearch 集群上设置了 SSL/TLS,所以当我执行查询时,使用博客上的示例显然会出错。我需要在 Hadoop/Spark 端和 Elastic 端做什么才能使这种通信正常工作?
我读到我需要将这些 JARS 添加到 Spark 类路径中 - 是否有关于我应该将它们放在我的集群中的什么位置的经验法则?我假设我的 Spark 客户端节点,但我不确定。另外,一旦我把它们放在那里,有没有办法将它们添加到类路径中,以便我的所有节点/客户端节点都具有相同的类路径?也许 Ambari 中的某些东西提供了这一点?
基本上,我正在寻找的是能够从 Spark 执行对 ES 的查询,该查询会触发一个作业,告诉 ES 将“X”数量的数据推送到我的 HDFS。根据我在 Elastic 网站上看到的内容,我认为它应该是这样工作的,但我真的对文档感到困惑。它的缺失让我和我的 Elastic 团队都感到困惑。有人可以提供一些明确的指示或明确我需要做什么来设置它吗?
【问题讨论】:
-
关于 Spark,是的,Ambari 管理您的
spark-env.sh。关于 Elasticsearch,您遇到了哪些具体错误?我假设你错误配置了 Spark 以使用 SSL -
我遇到了身份验证错误,主要是因为我认为我在使用用户名/密码和 SSL 时没有做正确的事情...尝试查询展位时是否有一些通用示例- 我的 Spark/Hadoop 集群中的单独弹性集群?我正在寻找的是 - 我在哪里将这些 JAR 放在我的集群上?如何设置 CLASSPATH - 完成后,如何使用 SSL 查询弹性集群?我假设我需要考虑证书或其他东西......是否有任何端到端的例子浮动或有人可以提供?
-
理想情况下,如果编写客户端应用程序,您可以构建所谓的着色或 uber jar。忘记修改服务器上的类路径——你不想用冲突的版本把任何库弄乱。如果我没看错的话,它会准确地告诉您需要设置哪些配置。 elastic.co/guide/en/elasticsearch/hadoop/current/security.html
-
SSL 也默认为 false。在此处查看选项。 elastic.co/guide/en/elasticsearch/hadoop/current/…
-
@cricket_007 - 我们的目标是使用 Python 进行我们所有的机器学习等 - 我在 Google 上快速搜索了“uber JAR”,它看起来很基本 - 只是一个“超级 jar”。我明白了这个概念——ES-Hadoop 连接器附带了一堆 JAR 文件,他们称之为“uber”JAR,其中包含 Hadoop/Spark 的所有组件的所有代码——而它们对单个组件有更小的 JAR .我明白了。我想我的问题是 - 将数据从 Elasticsearch 获取到 HDFS 的最佳方式是什么?我应该使用这个连接器,还是只在需要时查询 Elastic?
标签: hadoop apache-spark elasticsearch ambari