macbook hive安装
1 原材料
1.1 已经安装好的伪分布式hadoop,版本2.8.3(参见链接https://www.cnblogs.com/wooluwalker/p/9128859.html)
1.2 apache-hive-2.3.3-bin.tar.gz
1.3 已经安装好的mysql(mysql-5.7.22)
1.4 mysql-connector-java-8.0.11.jar
【下载时要选中Platform Independent,下载的是zip 或 tar压缩包,解压即可得到jar包】

2 解压安装
2.1 tar -zxvf apache-hive-2.3.3-bin.tar.gz 解压hive安装文件
进入hive/bin,运行hive指令,报错:
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql))
以上报错是因为hive运行之前,需要初始化元数据,使用schematool -initSchema -dbType 指定元数据库的类型,hive默认的derby元数据库有不能支持并发操作等弊端,需要替换成mysql,因此需要新替换原数据库,再初始化元数据库
3 替换元数据库为mysql
3.1 复制hive/conf/hive-default.xml.template为hive-site.xml,删除原<configuration>标签中的所有内容,并添加如下内容---数据库连接的基本配置
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</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>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
3.3 手动创建hive元数据库,此库必须是latin1,否则会出现奇怪的问题,如下图:

手动创建元数据库hive:
create database hive character set latin1;
3.4 将mysql-connector-java-8.0.11.jar 放在hive-2.3.3/lib目录下
3.5 如果mysql出现没有权限的问题,在安装mysql的机器上执行
#(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
4 初始化元数据库
在hive的 bin目录执行如下代码:
schematool -initSchema -dbType mysql
看到结果中输入:
Initialization script completed
schemaTool completed
说明初始化成功!
现在即可以在hive中操作,也可以在mysql元数据库汇总看到对应的元数据库信息

浙公网安备 33010602011771号