本文档探讨了构建一个用于交互式Spark as a Service的REST Job Server的过程。该服务器旨在提供一种便捷的方式,使用户能够在任何地方轻松访问Spark环境,支持多种编程语言(如Scala、Java、Python和R),并且独立于Hue平台。以下是主要讨论点: 1. **需求背景**: - 需求推动因素:由于Spark Notebook的流行,以及远程协作和共享Spark上下文和RDD的需求,构建一个服务化的Spark解决方案变得必要。 - 功能目标:提供易用的访问方式,允许用户提交交互式Shell会话或批处理作业。 2. **历史演进**: - **V1: Oozie**: - 初始尝试是通过Oozie进行Spark作业调度,它支持提交和监控,但速度较慢且局限于批处理作业,不支持交互式Shell。 - 优点:提交和控制简单,缺点是缺乏交互式功能和对Python、R的支持,且安全性方面有局限性。 - **V2: Spark Igniter**: - 进一步的改进,提供了编译器支持和更安全的批处理作业,但仅限于Scala,且不支持Python和R。 - 优点:提高了性能和安全性,缺点是功能较为有限。 - **V3: Notebook**: - Spark Notebook引入了类似`spark-submit`和Spark Shell的功能,支持Scala、Python和R,以及jar包和批处理作业,但当时仍处于beta阶段。 - 亮点:提供了更丰富的交互体验,但可能存在不稳定性和扩展性挑战。 3. **现代解决方案:Livy + Spark Server**: - **Livy**:是现代架构的核心,它是一个基于REST API的交互式Spark执行服务,允许跨语言(Scala、Java、Python和R)的作业提交和管理。 - **Spark Server**: - 实现了一个Scala编写的RESTful web服务器,专注于接收Spark作业请求,包括交互式Shell会话和批处理作业。 - 优势:提供统一的接口,无需依赖Hue,增强了灵活性和兼容性。 - 架构组件: - Livy作为核心服务,负责执行Spark任务并返回结果。 - Spark Server作为前端,与用户交互并调用Livy API。 - YARN(Yet Another Resource Negotiator)作为资源管理系统,确保Spark任务在集群上高效运行。 总结: 构建一个REST Job Server是为了满足用户对灵活、跨语言的Spark访问需求,尤其在分布式环境下。Livy的引入极大地简化了交互式Spark服务的部署和使用,使得Spark不仅仅局限于批处理,还可以支持实时分析和开发。通过与Spark Server集成,用户可以在任何地方使用多种编程语言进行数据处理和开发,提升了Spark as a Service的整体用户体验和生产力。
剩余82页未读,继续阅读
- 粉丝: 35
- 资源: 36
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 计算机人脸表情动画技术发展综述
- 关系数据库的关键字搜索技术综述:模型、架构与未来趋势
- 迭代自适应逆滤波在语音情感识别中的应用
- 概念知识树在旅游领域智能分析中的应用
- 构建is-a层次与OWL本体集成:理论与算法
- 基于语义元的相似度计算方法研究:改进与有效性验证
- 网格梯度多密度聚类算法:去噪与高效聚类
- 网格服务工作流动态调度算法PGSWA研究
- 突发事件连锁反应网络模型与应急预警分析
- BA网络上的病毒营销与网站推广仿真研究
- 离散HSMM故障预测模型:有效提升系统状态预测
- 煤矿安全评价:信息融合与可拓理论的应用
- 多维度Petri网工作流模型MD_WFN:统一建模与应用研究
- 面向过程追踪的知识安全描述方法
- 基于收益的软件过程资源调度优化策略
- 多核环境下基于数据流Java的Web服务器优化实现提升性能