从hdfs,群集设置和使用中提取elasticsearch中的数据

时间:2016-12-22 17:33:01

标签: hadoop elasticsearch apache-spark cluster-computing elasticsearch-hadoop

我正在设置一个火花星团。我在相同的实例上有hdfs数据节点和spark主节点。

目前的设置是 1-master(spark和hdfs) 6-spark worker和hdfs数据节点

所有实例都相同,16gig双核(不幸的是)。

我还有3台机器,同样的规格。 现在我有三个选择 1.只需在这3台机器上部署es即可。群集看起来像 1-master(spark和hdfs) 6-spark worker和hdfs数据节点 3-elasticsearch节点

  1. 在1上部署es master,在所有其他上扩展spark和hdfs以及es。 群集看起来像 1-master(spark和hdfs) 1-master elasticsearch 8-spark worker,hdfs数据节点,es数据节点
  2. 我的应用程序大量使用spark for join,ml等,但我们正在寻找搜索功能。搜索我们绝对不需要实时,最多30分钟的刷新间隔对我们来说甚至是好的。

    同时,除了es索引之外,spark集群还有其他长期运行的任务。

    解决方案不一定是上述之一,如果有人建议我开放实验。一旦结束,其他开发者也会很方便。

    此外,我正在尝试使用es hadoop,es-spark项目,但如果我做3个专用节点,我认为摄取很慢,就像60万条记录/分钟一样。

1 个答案:

答案 0 :(得分:0)

这里的最佳方法主要取决于您的网络带宽,以及在我看来它是否是您操作的瓶颈。

我只会检查我的网络链接是否已经饱和 iftop -i any或类似的,并检查是否是这种情况。如果您看到数据速率接近网络的物理容量,那么您可以尝试在运行ES的相同计算机上运行hdfs + spark,以节省网络往返并加快速度。

如果网络不是这里的瓶颈,我会研究下一步部署Spark和HDFS的方式。 您是否使用了所有可用的RAM(Java Xmx设置得足够高?,Spark内存限制?如果通过Yarn部署Spark,会增加内存限制吗?)

此外,你应该检查ES或Spark是否是这里的瓶颈,很可能是ES。也许你可以产生额外的ES实例,3个ES节点供给6个火花工人似乎非常不理想。 如果有的话,我可能会尝试反转这个比例,更少的Spark执行器和更多的ES容量。在提供数据时,ES可能比HDFS写入时慢得多(尽管这实际上取决于两者的配置......这只是一个有根据的猜测:))。很可能更多的ES节点和更少的Spark工作人员将是更好的方法。

简而言之:

  • 添加更多ES节点并减少Spark工作人员数量
  • 检查你的网络链接是否已经饱和,如果是这样的话,将它们放在同一台机器上(这可能只对2个内核有害,但我还是试一试......你得尝试一下)
  • 添加更多ES节点是您可以做的两件事的最佳选择:)