windows10部署hive-3.1.2

部署Hive之前,需要先搭建Hadoop和MySQL,mysql数据库用于存放元数据(默认数据库为Derby)。

1 环境版本

OS: Windows 10

java:jdk1.8.0_111

Hadoop: hadoop-3.1.2

Hive: Hive-3.1.2

2 部署准备

1. 下载hive部署包并解压。

注意:同时下载apache-hive-1.0.0-src.tar.gz低版本的src包,把里面的bin文件复制到apache-hive-3.1.2-bin/bin下,因为只有低版本的hive才有window执行的cmd文件。

2.下载mysql-connector-java-8.0.17.jar,将其放置在hive的lib目录下。

3. 添加环境变量HIVE_HOME,指向hive的目录,并将%HIVE_HOME%\bin添加至环境变量Path。

3 配置

3.1 hive-site.xml配置

mysql相关的配置

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;serverTimezone=UTC&amp;characterEncoding=UTF-8</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>

配置hive所需的一些目录
假设hive的目录为C:\ProgramFiles\ApacheSoftwareFoundation\apache-hive-3.1.2-bin,则可进行如下配置。

<property>
    <name>hive.exec.local.scratchdir</name>    
    <value>C:/ProgramFiles/ApacheSoftwareFoundation/apache-hive-3.1.2-bin/workspace
/scratch_dir</value>
    <description>Local scratch space for Hive jobs</description>
</property>
 
<property>
    <name>hive.downloaded.resources.dir</name>    
    <value>C:/ProgramFiles/ApacheSoftwareFoundation/apache-hive-3.1.2-bin/workspace
/resources_dir/${hive.session.id}_resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
</property>
 
<property>
    <name>hive.querylog.location</name>
    <value>C:/ProgramFiles/ApacheSoftwareFoundation/apache-hive-3.1.2-bin/workspace
/querylog_dir</value>
    <description>Location of Hive run time structured log file</description>
</property>

<property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>C:/ProgramFiles/ApacheSoftwareFoundation/apache-hive-3.1.2-bin/workspace
/operation_dir</value>
    <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>

3.2 在HDFS上创建目录

创建/user/hive/warehouse 

>hdfs dfs -mkdir /user
>hdfs dfs -mkdir /user/hive
>hdfs dfs -mkdir /user/hive/warehouse
之后可以去localhost:50070查看文件系统的目录,点击utilities -> browse the file system。

点进/tmp目录发现出现以下问题:

Permission denied: user=dr.who, access=READ_EXECUTE, inode="/tmp":DELL_PC:supergroup:drwx-wx-wx
这说明需要修改权限,执行如下命令:

>hdfs dfs -chmod -R 755 /tmp
MySQL的配置

3.3 创建hive数据库

create database hive default character set latin1;

如果不用root用户连接数据库,则还要授权。此处的user必须和hive-site.xml中设置的一致。下面的语句表示授权用户user操作hive数据库,密码为password。

grant all on hive.* to user@'localhost' identified by 'password';
flush privileges;

3.4 在安装目录下创建配置文件中相应的文件夹

C:\ProgramFiles\ApacheSoftwareFoundation\apache-hive-3.1.2-bin\workspace\scratch_dir

C:\ProgramFiles\ApacheSoftwareFoundation\apache-hive-3.1.2-bin\workspace\resources_dir

C:\ProgramFiles\ApacheSoftwareFoundation\apache-hive-3.1.2-bin\workspace\querylog_dir

C:\ProgramFiles\ApacheSoftwareFoundation\apache-hive-3.1.2-bin\workspace\operation_dir

3.5 对Hive元数据库进行初始化

这里已经将mysql-connector-java-*.jar拷贝到安装目录lib下,进入安装目录:apache-hive-3.1.2-bin/bin/,在新建cmd窗口执行如下命令(MySql数据库中会产生相应的用户和数据表)

hive --service schematool -dbType mysql -initSchema

MAC下执行

schematool -dbType mysql -initSchema

(程序会自动进入***apache-hive-3.1.2-bin\scripts\metastore\upgrade\mysql\文件中读取对应版本的sql文件)

初始化成功后,会看到

查看那初始化后的信息  

schematool -dbType mysql -info

4 Hive的启动

4.1 启动Hadoop

>cd %HADOOP_HOME%/sbin
>start-all.cmd  // 这个命令已经被deprecated,此处可以使用 strat-dfs,start-yarn

4.2 启动metastore

hive --service metastore

这里启动后报了一个关于com.google.common.base.Stopwatch.elapsed的NoSuchMethodError异常。Stopwatch类引自guava,后发现hadoop-2.7.3和hive-2.2.0中都有guava包,但版本不同,可能出现了版本冲突。hive的为guava-11.0.1版,而hadoop的为guava-14.0.1,因此,将hadoop中原本的guava-11.0.1.jar都替换成guava-14.0.1.jar。重新启动Hadoop,启动metastore后,不再报这个NoSuchMethodError异cd

4.3 启动hiveserver2

hive --service hiveserver2

HiveServer2(HS2)是服务器接口,使远程客户端执行对hive的查询和检索结果。目前基于Thrift RPC的实现,是HiveServer的改进版本,并支持多客户端并发和身份验证。如果发现端口被占用,则修改端口配置。

<property>
    <name>hive.server2.thrift.bind.host</name>
    <value/>
    <description>Bind host on which to run the HiveServer2 Thrift service.</description>
  </property>

<property>
    <name>hive.server2.thrift.http.port</name>
    <value>10001</value>
    <description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'http'.</description>
</property>

5 测试hive

新打开个cmd窗口,输入hive,进入hive页面。

创建一张表test_table,执行showtable会输出test_table。

hive>create table test_table(id INT, name string);
hive>show tables;

在HDFS的user/hive/warehouse下有test_table的目录。

参考文献:
https://blog.csdn.net/tornadojava/article/details/56835459

https://blog.csdn.net/f7anty/article/details/72629622

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值