我对Hadoop很新,还有一些我们如何使用apache发行版和Derby数据库安装它。
我的要求是让多个用户一次访问配置单元。但是现在我们一次只能允许一个用户。
我搜索了一些博客但尚未找到解决方案。
有人可以帮我解决问题吗?
答案 0 :(得分:1)
Derby只允许单个连接(进程)在给定时间访问数据库,因此只有一个用户可以访问Hive。
将您的hive Metastore升级到MySQL,PostgreSQL以支持与Hive的多个并发连接。
为了将您的Metastore从Derby升级到MySQL / PostgreSQL,网上有很多资源,其中一些是:
答案 1 :(得分:0)
有多种方法可以同时由多个用户访问元存储。
让我们看看上述元存储的用法。
嵌入式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;
第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>
第6步:从hive-2。。开始,我们必须给出此评论。
slave@ubuntu~$: schematool -initSchema -dbType mysql
第7步::启动配置单元Metastore服务器
~$: hive --service metastore &
现在,从不同的计算机上同时与其他用户同时检查hive
。