让hive使用derby的服务模式

hive默认使用的derby的嵌入模式。这个就面临着,无法多个并发hive shell共享的问题。

使用MySQL服务器也可以解决问题,但安装、配置太麻烦了。

可以使用轻量级的derby的c/s服务模式解决问题。

1、下载、配置derby

首先,从apache下载derby的最新版。

wget http://apache.mirrors.pair.com//db/derby/db-derby-10.10.1.1/db-derby-10.10.1.1-bin.tar.gz
tar -xzvf ./db-derby-10.10.1.1-bin.tar.gz
cd db-derby-10.10.1.1-bin

derby基本是开箱即用的,如下启动

./bin/startNetworkServer -h myhost -p myport

同时,还需要拷贝两个jar包到hive/lib下

cp ./derbyclient.jar ~/hive-current/lib/
cp ./derbytools.jar ~/hive-current/lib/

2、配置hive

需要修改2个配置,derby默认是可以没有用户名、密码的。

        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:derby://s007132.cm8:1527/hive_meta;create=true</value>
                <description>JDBC connect string for a JDBC metastore</description>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <value>org.apache.derby.jdbc.ClientDriver</value>
                <description>Driver class name for a JDBC metastore</description>
        </property>

此外,注意hdfs上的路径,不要和已有的冲突了。

        <property>
                <name>hive.metastore.warehouse.dir</name>
                <value>/user/lhy/product_search/hive</value>
                <description>location of default database for the warehouse</description>
        </property>

        <property>
                <name>hive.exec.scratchdir</name>
                <value>/user/lhy/product_search/hive-tmp</value>
                <description>Scratch space for Hive jobs</description>
        </property>

3、启动,测试

./bin/hive
hive> show databases;
OK
default
Time taken: 2.695 seconds

Leave a Reply

Your email address will not be published.