Apache Zeppelin + Spark的按需用户群?

时间:2017-08-09 06:56:50

标签: apache-spark hadoop yarn cloudera apache-zeppelin

我们使用cloudera来部署zeppelin-spark-yarn-hdfs集群。现在,只有一个zeppelin和spark的实例,并且所有spark笔记本的执行都会影响每个用户。例如,如果我们停止用户笔记本中的spark上下文,它会影响所有其他用户的笔记本。我已经看到zeppelin中有一个选项来隔离解释器,但是有没有办法按需为每个用户提供自己的“集群”?也许使用Docker并为每个用户构建带有zeppelin和spark的映像,并将其资源限制为用户集群提供的资源?我很失落如何实现它,或者甚至可能实现它,但我的理想情况是像databricks那样的方法。在那里,您可以拥有自己的群集,并且所有资源都与其他用户隔离。

1 个答案:

答案 0 :(得分:2)

有几种方法可以解决它。

我假设你无论如何都在运行集群,因此任何按需资源都限于静态资源,但是由YARN以动态方式分配。 您应首先查看YARN队列和YARN授权。这样,您就可以根据组织的fairnes标准有效地管理资源可用性。

在Zeppelin端,确保还启用身份验证 - 这将传递给YARN和HDFS。有效地隔离用户。如果您有不同的要求,并希望确保口译员不会发生冲突,您可以

  • 使用隔离模式。这是最容易设置的,但维护起来很棘手。
  • 为每个团队/组织单位设置一名翻译。这会产生很小的开销,您可以在一个Zeppelin实例中管理所有OU,但这可能是集中管理不同需求的最佳方式。
  • 使用可部署的Zeppelins(例如Dockerized)将OU隔离开来,但您必须维护每个OU的配置并在部署时将它们注入图像,或管理一大堆自定义图像
  • 让OU管理自己的Zeppelin并使用群集访问权限来限制它们实际上可以在群集端执行的操作。由于没有"一般" Zeppelin用户此建议取决于用户的技术细节。保持这一点不应该太困难,灵活性可能会让它值得一试。显然,预计会有更高的支持/援助工作量。

哪种解决方案适合您,取决于组织构成,技术技能以及用户的各种要求。要记住的一件事是依赖管理 - 一旦集群访问得到解决,这可能是最大的问题。一旦越来越多的人开始使用Zeppelin并共享一个解释器设置,你就越有可能遇到依赖性冲突,这将毁掉每个人的一天。我个人会推荐我的第二个和第四个命题,但是已经看到第三个也用于大型企业 - 如果品种不太高,它可以工作。

做的一件事是为每个用户创建一个Zeppelin 的实例。 Zeppelin主要用于共享信息,因此ZEppelin的一个实例应该在希望从彼此的工作中受益的一组用户之间共享。我认为您可以使用netmounted notebook-directories重新合并笔记本,但可能存在写入争用问题,意外覆盖/恢复以前的写入。