hive并行执行,hive命令行操作
蜂巢并发调用运营模式-亲身体验-gg jucheng-博客花园
前言使用hive,很多情况下我们会并发调用hive程序,将sql任务转换成mapreuce,提交给hadoop集群。在使用hive的过程中,我发现并发调用hive有几个问题。我将与你分享这个。
默认情况下,配置单元安装在文本中。hive使用derby内存数据库保存hive的元数据,所以不能并发调用hive。需要配置为使用mysql保存hive的元数据。
要运行hive,您可以有以下访问方法:
1.hiveserver:hive作为thrift服务的服务器运行,允许不同语言编写的客户端访问,通过thrift、jdbc、odbc连接器、hive服务器与hive进行通信。这种方法非常适合java程序员通过jdbc接口访问hive。但是实际操作中,发现并发调用时,hiveserver很容易无故宕机,而且没有jvm的转储文件,Hiveserver的程序没有输出。
2.metastore:
2.1.嵌入式metastore:默认情况下,metastore和hive在同一个进程中运行。这种方法已经过测试,在并发性方面是最稳定的。用这个方法,暂时没有问题。
2.2.远程metastore:通过将hive.metastore.local配置为false,并让metastore作为单独的进程运行,hive客户端必须连接到远程metastore才能执行其任务。但是在实际操作中,远程metastore很容易无缘无故宕机,也没有jvm的转储文件,远程metastore程序也没有输出。
总结一下我个人的经验,如果需要并发调用hive,首先要把hive的元数据配置成mysql数据库。最好通过嵌入metastore来调用hive。通过执行$ hive _ home/bin/hive-s-e hive SQL ,从管道中获取hive的输出是最稳定、最安全的方式。