什么是汇集Hive JDBC连接的最佳实践

时间:2012-04-03 16:24:13

标签: jdbc hadoop connection-pooling hive hdfs

我正在使用Hive JDBC驱动程序对我的HDFS数据存储执行sql查询。我一直在尝试使用c3p0来处理连接池。我不太确定这是正确的方法,因为Hive查询有时会花费很长时间,这意味着连接将持续很长时间而不会被释放回池中,我很难想到最大数量的正确设置号c3p0配置中的连接也是如此。

有没有最佳实践来汇集hive jdbc连接? C3P0? DBCP?

MAX_POOL_SIZE怎么样?它应该大于RDB的正常设置吗?

1 个答案:

答案 0 :(得分:4)

太棒了,所以你提到的帖子中的问题实际上是我很久以前问的:) 看看如何在用例中使用它会很有趣。

但是,让我告诉你,Hive会根据您的查询在需要时启动Hadoop作业。 因此,如果您想执行多个查询(我认为这就是您要在此处执行的操作),则需要使用可同时运行多个作业的作业调度程序。默认情况下,Hadoop使用先进先出(FIFO)调度程序,从工作队列中提取作业。因此,想切换到Fair调度程序或容量调度程序。

公平共享调度程序背后的核心思想是为工作分配资源,以便平均随着时间的推移,每个工作在可用资源中获得相等的份额。

容量调度程序共享公平调度程序的一些原则,但也有明显的差异。首先,为大型集群定义了容量调度,这些集群可能具有多个独立的消费者和目标应用程序。在容量调度中,不是创建池,而是创建多个队列,每个队列都有可配置数量的映射和减少时隙。还为每个队列分配了保证容量(其中群集的总容量是每个队列容量的总和)。其次,能够优先考虑队列中的作业。最后,是否存在对队列的严格访问控制。