There are 3 interpreter modes available in Zeppelin.
1) Shared Mode
In Shared mode, a SparkContext and a Scala REPL is being shared among all interpreters in the group. So every Note will be sharing single SparkContext and single Scala REPL. In this mode, if NoteA defines variable ‘a’ then NoteB not only able to read variable ‘a’ but also able to override the variable.
2) Scoped Mode
In Scoped mode, each Note has its own Scala REPL. So variable defined in a Note can not be read or overridden in another Note. However, still single SparkContext serves all the Interpreter Groups. And all the jobs are submitted to this SparkContext and fair scheduler schedules the job. This could be useful when user does not want to share Scala session, but want to keep single Spark application and leverage its fair scheduler.
3) Isolated Mode
In Isolated mode, each Note has its own SparkContext and Scala REPL.
The default mode of %spark interpreter is ‘Globally Shared’.
This is mostly a step-by-step on installing Zeppelin, but does go into some detail on how Zeppelin works.