CDH配置Spark On Hue
背景
在初入大数据领域时,编写的代码往往都是轻量级的,对于我这个小白来说尤其希望编写Scala-spark代码可以像python on JupyterNotebook一样,一步出一个结果,让我清楚地明白我的代码是否可以运行以及运行结果是什么,而不是在ide中debug,这里并不是说debug工具不好,恰恰相反,能熟练运用debug工具的才算真正入了程序员的门槛。但技术的进化不就是为了降低使用者的门槛吗?所以今天还是聊一聊对我这样的小白友好的大数据的可视化与交互工具——Hue。
实际上大数据的可视化与交互工具并非只有Hue,常见的还有Zeppelin、toree等,小弟不才,这几个工具都用过一段时间,后面有机会的话会依次分享其搭建过程。那么Hue和其他两款工具相比又有什么优势呢?
就功能而言:
- Zeppelin只提供了单一的数据处理功能,包括数据摄取、数据发现、数据分析、数据可视化等都属于数据处理的范畴。
- toree需要借助JupyterNotebook环境进行搭建,其功能相对zeppelin来说基本相同,但其可视化功能仍需借助其他框架来完成,使用界面还没有Zeppelin高端,但就是这样一个哪哪都不行的工具我竟然一直在用,原因在于其足够简单,简单的让我从python迁移到spark没有任何阻碍。
- 最后再说Hue,Hue的功能相对丰富的多,除了类似的数据处理,还有元数据管理、Oozie工作流管理、作业管理、用户管理、Sqoop集成等很多管理功能。从这点看,Zeppelin只是一个数据处理工具,而Hue更像是一个综合管理工具。
就使用场景而言: - Zeppelin适合单一数据处理、但后端处理语言繁多的场景,尤其适合Spark。
- toree和Zeppelin差不多,如果你不介意其简陋的外表。
- Hue适合与Hadoop集群的多个组件交互、如Oozie工作流、Sqoop等联合处理数据的场景,尤其适合与Impala协同工作。
前提条件
安装及配置Livy
何为Livy?
Livy是一个提供rest接口和spark集群交互的服务。它可以提交spark
job或者spark一段代码,同步或者异步的返回结果;也提供sparkcontext的管理,通过restfull接口或RPC客户端库。Livy也简化了与spark与应用服务的交互,这允许通过web/mobile与spark的使用交互。其他特点还包含:
- 长时间运行的SparkContext,允许多个spark job和多个client使用。
- 在多个spark job和客户端之间共享RDD和Dataframe
- 多个sparkcontext可以简单的管理,并运行在集群中而不是Livy Server,以此获取更好的容错性和并行度。
- 作业可以通过重新编译的jar、片段代码、或Java/Scala的客户端API提交。
Livy结合了spark job server和Zeppelin的优点,并解决了spark job server和Zeppelin的缺点。 - 支持jar和snippet code
- 支持SparkContext和Job的管理
- 支持不同SparkContext运行在不同进程,同一个进程只能运行一个SparkContext
- 支持Yarn cluster模式