你好,游客 登录 注册 发布搜索
背景:
阅读新闻

Hive on Spark & Tachyon解析

[日期:2015-04-02] 来源:CSDN  作者: [字体: ]

  Hive on Spark

  在许多已有Hadoop企业中,Hive担当着非常重要的角色,为Hadoop注入了使用SQL的能力,已经成为SQL on Hadoop上的事实标准。基于这些原因,Cloudera选择继续拥抱Hive,主要的精力则放在性能和最小化特性差异上,造福大量期望利用Spark引擎高效性的Hive重度用户。

  Hive上的修改

  在Hive on Spark设计原则上,工程师主要尊重以下几点:首先,尽量少的改动Hive已有代码;其次,最大化代码重用;再次,最小化feature的改动,带来更多的兼容性,也减少了后续的维护开销。

  

 

  如上图所示,在类层次结构中并无太大的变动,通过加入SparkCompiler、SparkTask和SparkWork形成完整的计算体系。

  Work真正拥有包装的是MapReduce或者Spark Job,类似“select name,sum(value) as v from dec group by name order by v;”这样的查询,在之前我们需要两个MR作业,而现在一个Spark作业(一个Map作业和两个Reduce作业)就可以完成。

  Spark上的修改

  Spark Client:首先,负责与Spark cluster通信;其次,需要支持多种部署类型,local(单节点模式)、local-cluster(伪分布式)、standalone(Spark自己负责resource allocation)、yarn-cluster(Spark Driver会在YARN的Container中运行)以及yarn-client(Spark Driver以客户端的方式运行);最后,还会做作业提交、监视、错误报告、统计、度量、计数等任务。

  Spark Context,需要注意的是它不仅是一个广义上的Driver,而且是非常重量级的组件,很多计算都在其中进行。同时需要注意的是,Spark Context是thread-unsafe的,因此同一个JVM中不能建立两个Spark Context;最后,Spark Context设计之初就是建立在单用户应用程序之上,因此不能有多session存在。因此,这里引入了Remote Spark Context,详见下图。Remote Spark Context会在独立的JVM进程中运行,Hive Server 2的进程中可以运行多个用户的Session,每一个Session含有一个Remote Spark Context的客户端,此客户端已RPC方式向Remote Spark Context发送命令。这样就有效解决了在同一个Hive Server 2中不能运行多个Spark Context的问题。

  

 

  Spark中的数据处理逻辑

  在Hive on Spark下,表格的建立即是生成一个HadoopRDD。同时,Map端的数据处理task即被转换为Spark中的函数。而对于shuffle来说,一些转换则可以调用Spark中的操作,比如groupByKey、sortByKey等。最后,提供了Reduce端处理的一些函数。

  

 

  Hive on Spark当前状态

  目前,基本上Hive的所有功能已被实现,会在Hive 1.1被添加到Trunk里。同时,第一轮优化已经结束,其中包括Map join、SMB、Split generation and grouping、CBO、vectorization等。当然,未来还会有更多优化被添加。

  总结

  陈建忠表示,在现实世界中,有很多业务涉及到大数据的处理,比如检测信用卡欺诈、智能商品推荐、金融风险评估、基因分析等。而在所有场景中,数据科学家往往面对众多挑战:随着数据体积、数据源的增多,传统R等工具已经无法满足需求;其次,数据科学家的使用场景通常都会碰到迭代操作,然而传统基于磁盘的工具(比如MapReduce)很显然无法满足快速处理的需求;最后,还有实时处理的需求,传统的数据挖掘工具着重于模型的建立,而当下模型需要部署在生产环境中进行实时数据分析,且需要对模型进行实时调整。演讲的最后,陈建忠通过VaR(Value at Risk,风险价值或者风险收益)用例简单地演示了如何通过Spark加速业务的发展。

收藏 推荐 打印 | 录入:574107552 | 阅读:
相关新闻       大数据 Spark Tachyon Intel Cloudera 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款