Hadoop 集群 Hive 部署,安装mysql metastore

来源:互联网 发布:电脑如何看淘宝微淘 编辑:程序博客网 时间:2024/05/16 17:43

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&amp;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的存储路径。
并且可以进行多用户访问!

如果有错误,请大家指出!!

0 0
原创粉丝点击