我们使用cloudera来部署zeppelin-spark-yarn-hdfs集群。现在,只有一个zeppelin和spark的实例,并且所有spark笔记本的执行都会影响每个用户。例如,如果我们停止用户笔记本中的spark上下文,它会影响所有其他用户的笔记本。我已经看到zeppelin中有一个选项来隔离解释器,但是有没有办法按需为每个用户提供自己的“集群”?也许使用Docker并为每个用户构建带有zeppelin和spark的映像,并将其资源限制为用户集群提供的资源?我很失落如何实现它,或者甚至可能实现它,但我的理想情况是像databricks那样的方法。在那里,您可以拥有自己的群集,并且所有资源都与其他用户隔离。
答案 0 :(得分:2)
有几种方法可以解决它。
我假设你无论如何都在运行集群,因此任何按需资源都限于静态资源,但是由YARN以动态方式分配。 您应首先查看YARN队列和YARN授权。这样,您就可以根据组织的fairnes标准有效地管理资源可用性。
在Zeppelin端,确保还启用身份验证 - 这将传递给YARN和HDFS。有效地隔离用户。如果您有不同的要求,并希望确保口译员不会发生冲突,您可以
哪种解决方案适合您,取决于组织构成,技术技能以及用户的各种要求。要记住的一件事是依赖管理 - 一旦集群访问得到解决,这可能是最大的问题。一旦越来越多的人开始使用Zeppelin并共享一个解释器设置,你就越有可能遇到依赖性冲突,这将毁掉每个人的一天。我个人会推荐我的第二个和第四个命题,但是已经看到第三个也用于大型企业 - 如果品种不太高,它可以工作。
我不做的一件事是为每个用户创建一个Zeppelin 的实例。 Zeppelin主要用于共享信息,因此ZEppelin的一个实例应该在希望从彼此的工作中受益的一组用户之间共享。我认为您可以使用netmounted notebook-directories重新合并笔记本,但可能存在写入争用问题,意外覆盖/恢复以前的写入。