如何将hive与多个用户连接

时间:2015-01-09 12:50:49

标签: hadoop hive

我对Hadoop很新,还有一些我们如何使用apache发行版和Derby数据库安装它。

我的要求是让多个用户一次访问配置单元。但是现在我们一次只能允许一个用户。

我搜索了一些博客但尚未找到解决方案。

有人可以帮我解决问题吗?

2 个答案:

答案 0 :(得分:1)

Derby只允许单个连接(进程)在给定时间访问数据库,因此只有一个用户可以访问Hive。

将您的hive Metastore升级到MySQL,PostgreSQL以支持与Hive的多个并发连接。

为了将您的Metastore从Derby升级到MySQL / PostgreSQL,网上有很多资源,其中一些是:

答案 1 :(得分:0)

有多种方法可以同时由多个用户访问元存储。

  1. 嵌入式metastore。(默认metastore:derby)
  2. 本地metastore。
  3. 远程元存储。

让我们看看上述元存储的用法。

嵌入式Metastore:

此元存储区仅用于单元测试。而且它的限制是,它仅允许一个用户同时访问Hive(不允许多个会话,并且会引发错误)。

本地metastore :(通过使用MySql或Oracle DB)

为克服默认的元存储库限制,使用了本地元存储库,这可以允许同一JVM中有多个用户(它允许同一台计算机上的多个会话)。要设置此模式,请参见以下答案。

远程元存储(此元存储正在生产中使用)

在同一个项目中,需要多个hive用户进行操作,他们可以在不同的机器上同时使用hive,但是元数据应使用MySql或Oracle等集中存储。在这里,hive在每个用户JVM上运行,如果用户正在处理,则他们希望与集中化的metastore通信,为了进行通信,我们将使用Thrift Network API。要设置此模式,请参见以下答案。

用于多用户的MESTAORE设置:

步骤1:下载并安装mysql服务器

sudo apt-get install mysql-server

步骤2:下载并安装JDBC驱动程序。

sudo apt-get install libmysql-java

第3步::我们需要将下载的JDBC驱动程序复制到hive / lib /或将JDBC位置链接到hive / lib。

-转到$ HIVE_HOME / lib文件夹,并创建指向MySQL JDBC库的链接。

ln -s /usr/share/java/mysql-connector-java.jar

第4步::在metastore上创建用户以远程和本地访问。

mysql -u root -p <Give password while installing DB>
mysql> CREATE USER 'user1'@'%' IDENTIFIED BY 'user1pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'hduserdb'@'%' WITH GRANT OPTION;
mysql> flush privileges;
  • 如果您希望多个用户访问,请输入用户名和密码,重复执行步骤4

第5步::转到hive / conf / hive-site.xml(如果不可用,请创建它。)

<configuration>

<property>       
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
   <description>replace -master- with your database hostname</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>MySQL JDBC driver class</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>user1</value>
  <description>user name for connecting to mysql server</description>
</property>

<property>
 <name>javax.jdo.option.ConnectionPassword</name>
 <value>user1pass</value>
 <description>password for connecting to mysql server</description>
</property>

<property>
  <name>hive.metastore.uris</name>
  <value>thrift://slave2:9083</value>
  <description>Here use your metasore host name to access from different machine</description>
</property>

</configuration>
  • 在所有用户计算机上仅重复执行步骤5 ,并根据用户名和密码进行更改。

第6步:从hive-2。开始,我们必须给出此评论。

slave@ubuntu~$:  schematool -initSchema -dbType mysql 

第7步::启动配置单元Metastore服务器

~$: hive --service metastore &

现在,从不同的计算机上同时与其他用户同时检查hive