您的位置:首页 > 数据库 > SQL

Hadoop 集群 Hive 部署,安装mysql metastore

2017-03-14 21:13 609 查看

Hadoop 集群 Hive 部署,安装mysql metastore

一,

1,下载解压好apache-hive-1.2.1-bin.tar.gz,进入bin目录启动hive。即可启动hive。



2,但是在启动一个hive后,再重新启动一个hive时就会报出以下错误



另一个Derby接口被启动了。

原因是:Hive 将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。metastore默认使用内嵌的derby数据库作为存储引擎,Derby引擎的缺点:一次只能打开一个会话。

不过但你在另一个目录打开hive时,又可以正常启动



看起来没有什么问题,但是两个不同的目录中都产生了metastore_db,并且两个metastore_db所存储的元数据是不同,这就造成数据不同!!!

所以我们采用Mysql作为外置存储引擎,多用户同时访问 !!

二,Hive配置Mysql作为metastore

1,安装配置Mysql。这个可以参考我之前的博文,里面有具体步骤!

2,配置hive

在conf目录下 mv hive-default.xml.template hive-site.xml

修改hive-site.xml(删除所有内容,只留一个)

<configuration></configuration>


添加如下内容:

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop00:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>用户名</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>登录密码</value>
<description>password to use against metastore database</description>
</property>


3,将mysql的连接mysql-connector-java-5.1.40-bin.jar包拷贝到$HIVE_HOME/lib目录下。

4,可能会出现MySQL的访问权限问题,执行下面的语句 *.*:所有库下的所有表%:任何IP地址或主机都可以连接)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '登录密码' WITH GRANT OPTION;


FLUSH PRIVILEGES;


5,重新启动hive,并创建一个student表



打开MySQL的界面,多了一个hive数据库



TBLS表保存创建表信息。COLUMNS_V2表中保存创建的表的列属性,SDS表保存创建的新表在HDFS的存储路径。

并且可以进行多用户访问!

如果有错误,请大家指出!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop hive