第74课:Hive on Spark大揭秘 完整版

33 篇文章 0 订阅
9 篇文章 0 订阅

内容:

    1.Hive On Spark内幕
    2.Hive on Spark实战

一、Hive On Spark内幕


    1.Hive on spark 是hive 的一个子项目,它是指不通过mapReduce 作为唯一的查询引擎,而是将spark 作为底层的查询引擎。hive on spark 只适用于hive 在可预见的未来,很有可能Hive默认的底层引擎就从MapReduce 切换到Spark 了 。使用于将原来有的Hive 数据仓库以及数据统计分析替换为spark 引擎,作为全公司通用的大数据统计分析引擎。
    2. 将Hive 表作为SparkRDD 来进行操作 
    3. 使用hive 原语:对于一些针对于RDD的操作,比如groupByKey,sortedByKey等不使用Spark的transformation操作和原语。如果那样的话,那么就需要重新实现一套Hive 的原语,而且如果Hive 增加了新功能,那么又要实现新的spark 原语。因此选择将hive 的原语包装为针对于RDD的操作即可。 
    4.新的执行计划生成机制:使用SparkCompiler 将逻辑执行计划,即可Operator Tree ,转换为Task Tree ,提交Spark Task 给 Spark 进行执行。sparkTask 包装了DAG ,DAG 包装为SparkWork,SparkTask 根据SparkWork 表示的DAG 计算。 
    5. SparkContext生命周期:hive on Spark会为每个用户创建自己的会话,比如说执行一次Sql创建一个SparkContext,但是Spark不允许在一个JVM内穿概念多个SparkContext。因此需要在单独的JVM中启动每个会话的Sparkcontext,然后通过RPC与远程JVM中的Spark Context进行通信。 
    6.本地和远程运行模式:Hive on spark 提供两种运行模式,本地和远程。如果将SparkMaster这是为local,比如set.spark.master=local 那么就是本地模式,sparkContext 与客户端运行在一个JVM中。否则如果将sparkMaster设置为master的地址,那么就是远程模式,sparkcontext会在远程JVM中启动,远程模式下每个用户session 都会创建一个sparkClient,sparkClient启动RemoveDriver,RemoveDriver负责创建SparkContext。
    7.Map join Spark Sql默认对join是支持使用BroatCast机制,将小表广播到各个节点上,以进行join,但是问题是这会driver和worker带来很大的内存开销。因为广播的数据要一直报讯在Driver中,所以目前采取的措施是类似于MapReduce的Distribuesd cache机制,即提高HDFS replication factor 的赋值因子,让数据在每一个计算节点上都有一个备份,从而可以在本地进行读取数据。 
    8.cache table:对于某些需要对一张表执行多次操作的场景,hive on spark 内部做了优化,即将要多次操作的表cache 到内存中以便于提升性能。但是这里要注意并不是所有的情况都会自动进行cache 所以说hive on spark 很有很多需要完善的地方。

二、Hive on Spark实战

由于版本问题,测试没有成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在生产环境中使用Hive on Spark时,可能会遇到连接超时的问题。这可能是由于网络延迟、资源不足或配置错误等原因引起的。为了解决这个问题,可以尝试以下几个步骤: 1. 检查网络连接是否正常,确保网络延迟不是导致连接超时的原因。 2. 检查集群资源是否充足,如果资源不足可能会导致连接超时。 3. 检查Hive on Spark的配置是否正确,特别是与Spark相关的配置,如spark.executor.memory、spark.driver.memory等。 4. 尝试增加连接超时时间,可以通过设置hive.server2.long.polling.timeout属性来实现。 5. 如果以上步骤都无法解决问题,可以尝试升级Hive on Spark版本或者联系Hive on Spark的支持团队寻求帮助。 ### 回答2: 最近在实际工作中遇到了一个生产环境的问题,即hive on spark连接hive时出现了connection timeout的错误。具体的错误信息是Failed to execute spark task, caused by org.apache.hive.service.cli.HiveSQLException:Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.spark.SparkTask。经过排查,我们最终找到了解决方法。 首先,我们查看hive on spark的运行环境,发现问题出在了spark executor的内存配置上。由于我们的hive on spark需要在大数据量的情况下进行数据处理,而我们的spark executor的内存配置过小,导致了程序执行时卡顿或者超时的情况。 其次,我们对比了生产环境和测试环境的配置,发现测试环境的spark executor内存配置远远大于生产环境的内存配置,因此我们决定适当调整生产环境的内存配置,使其与测试环境的配置相近。 最后,我们重启了hive on spark的服务,并重新运行任务,发现问题已经解决了。经过排查,我们认为这个问题主要是由于内存配置过小导致的,而调整内存配置可以有效地解决这个问题。 总之,这个问题是我们在实际生产环境中遇到的一个常见问题,需要结合具体情况进行有效的排查和解决。我们需要关注系统运行环境的配置情况,适时调整系统参数,确保系统可以稳定地运行。同时,我们也需要注意日常工作中的数据处理任务,优化处理任务的算法和代码,减少系统资源消耗,提高系统的运行效率。 ### 回答3: 在使用Hive on Spark时,会经常遇到Connection Timeout的问题。这个问题通常是由于Spark的GC(垃圾回收)所导致的。因为默认情况下,Spark的垃圾回收器会频繁地进行垃圾回收,从而导致连接超时问题。 解决这个问题的方法有几种: 1. 增加Hive on Spark的硬件资源 如果系统的硬件资源不足,例如CPU、内存等,可能会导致连接超时的问题。因此,建议增加硬件资源,以提高Hive on Spark的性能和稳定性。 2. 调整Spark的GC参数 可以通过调整Spark的GC参数,来减少垃圾回收的频率,从而避免连接超时的问题。例如,可以将Spark的GC内存阈值和GC线程数进行调整。 3. 提高网络性能 Hive on Spark的连接超时问题可能还与网络性能有关。如果网络速度较慢或带宽不足,可能会导致连接超时的问题。可以通过提高网络带宽或网络优化来解决这个问题。 4. 升级Hive on Spark版本 如果以上三种方法都无法解决连接超时的问题,可以考虑升级Hive on Spark到最新版本。最新版本通常会修复已知的问题,并提供更好的性能和稳定性。 总之,要解决Hive on Spark的连接超时问题,需要多方面考虑,包括硬件资源、Spark的GC参数、网络性能和软件版本等。只有在综合考虑多个因素的情况下,才能够有效地解决这个问题,从而提高Hive on Spark的稳定性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值