本文介绍: (1)嵌入模式使用内嵌的 Derby 数据库存储数据,这是 Hive简单部署方式嵌入模式运行 Hive 时,会在当前目录生成数据文件,只能有一个 Hive 客户端使用目录下的元数据文件,这就意味着嵌入模式下的 Hive支持会话连接,并且不同目录的元数据文件无法共享,因此不适合生产环境,只适合测试环境。这样,无论在任何目录下通过 Hive 客户工具访问的元数 据信息是一致的,并且可以实现多个用户同时访问,从而实现数据共享本地模式支持数据共享,并且支持本地会话连接

Hive 安装部署

部署模式

Hive 有3种部署模式,分别是嵌入模式、本地模式和远程模式。关于这 3 种部署模式的具体介绍如下

(1)嵌入模式:使用内嵌的 Derby 数据库存储元数据,这是 Hive 最简单的部署方式嵌入模式下运行 Hive 时,会在当前目录生成数据文件,只能有一个 Hive 客户使用该目录下的元数据文件,这就意味着嵌入模式下的 Hive 不支持会话连接,并且不同目录的元数据文件无法共享,因此不适合生产环境,只适合测试环境

(2)本地模式:使用独立数据库(MySQL)存储元数据,Hive 客户端和 Metastore 服务在同一台服务器启动,Hive 客户通过连接本地的 Metastore 服务获取元数据信息。本地模式支持数据共享,并且支持本地多会话连接

(3)远程模式:与本地模式一样都是使用独立数据库(MySQL)存储元数据,不同的是 Hive 客户端和 Metastore 服务在不同服务器启动,Hive 客户通过远程连接 Metastore 服务获取元数据信息远程模式同样支持数据共享,并且支持远程会话连接

嵌入模式安装

下载安装

链接http://archive.apache.org/dist/hive/hive-2.3.9/apachehive-2.3.9-bin.tar.gz
使用 MobaXterm 远程连接工具连接虚拟机,将安装包放在用户 user 根目录software目录下,下载完成后,解压缩重命名

[user@hadoop102 software]$ tar -zxvf apache-hive-2.3.9-bin.tar.gz -C /opt/ 
[user@hadoop102 software]$ cd /opt/
[user@hadoop102 opt]$ mv apache-hive-2.3.9-bin hive-2.3.9

配置环境

修改/etc/profile文件配置Hive环境变量

[user@hadoop102 opt]$ sudo vim /etc/profile.d/hive.sh
添加内容如下export HIVE_HOME=/opt/hive-2.3.9
export PATH=:$HIVE_HOME/bin:$PATH

加载修改后的环境变量配置

[user@hadoop102 opt]$ source /etc/profile

启动Hive之前需要Hive安装目录下进行初始化Derby数据库操作,具体命令如下

[user@hadoop102 opt]$ cd hive-2.3.9
[user@hadoop102 hive-2.3.9]$ bin/schematool -initSchema -dbType derb

执行上述命令后,若出现 schemaTool completed 信息,则证明成功初始化 Derby 数据库

启动 Hive 客户工具

执行hive命令启动 Hive 客户端工具 HiveCLI。

可以执行quit;”命令退出Hive客户端工具HiveCLI,此时在Hive 安装目录下会默认生成文件derby.log文件夹metastore_db,其中文derby.log用于记录Derby数据库日志信息;文件夹metastore_db存储Derby数据库元数据。

本地模式安装

​ 本地模式部署本质上是将 Hive 默认的元数据存储介质由内嵌的 Derby 数据库替换为独立数据库,即 MySQL 数据库。这样,无论在任何目录下通过 Hive 客户端工具,访问的元数 据信息是一致的,并且可以实现多个用户同时访问,从而实现元数据的共享。

​ 本地模式部署 Hive 需要一台虚拟机上同时安装 MySQL 和 Hive,这里虚拟机为例详细讲解如何使用本地模式部署 Hive,具体操作步骤如下

下载安装 MySQL

下载链接如下:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.40-1.el7.x86_64.rpmbundle.tar

安装包放在用户user根目录software目录下,下载完成后,解压,使用yum安装下面几个rpm包,具体命令如下:

sudo rpm -ivh mysql-community-common-5.7.40-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-5.7.40-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-client-5.7.40-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-server-5.7.40-1.el7.x86_64.rpm

出现以下错误

错误依赖检测失败mysql-community-libs(x86-64) >= 5.7.9(已安裝) mysql-community-libs-compat-5.7.40-1.el7.x86_64 需要
  mysql-community-libs(x86-64) >= 5.7.9(已安裝) mysql-community-client-5.7.40-1.el7.x86_64 需要

解决方案清除之前安装过的依赖命令如下:

[user@hadoop102 ~]$ sudo yum remove mysql-libs

MySQL安装完成后,执行systemctl start mysqld命令启动MySQL服务,待 MySQL服务启动完成后,执行systemctl status mysqld查看MySQL 服务运行状态,MySQL 服务运行状态信息中出现 activerunning信息,说明MySQL 服务处于运行状态。

登录 MySQL

​ MySQL安装完成需要通过用户名密码进行登录,MySQL为本地默认用户root自动生成密码可以在MySQL的日志文件查看密码,具体命令如下。

[user@hadoop102 ~]$ grep "password" /var/log/mysqld.log

执行上述命令后,在返回的信息中查看MySQL中本地默认用户root密码

接下来执行mysql -uroot -p”命令以root身份登录 MySQL,在弹出的“Enter password:”信息处输入密码,从而登录 MySQL 进入命令行交互界面

出现下面错误

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 

解决方案

1)停止 MySQL 服务

[user@hadoop102 ~]$ service mysqld stop

2)跳过验证:修改 MySQL 安装目录下的my.ini配置文件,使登录时跳过权限检查

[user@hadoop102 ~]$ sudo vim /etc/my.cnf
# 在my.ini,[mysqld]下添加一行,使其登录时跳过权限检查
skip-grant-tables

启动 MySQL 需要密码的话使用如下命令,假设密码为“123456”

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

修改后输入flush privileges刷新权限

安装 Hive

我们在之前嵌入模式安装的 Hive 基础上,修改配置完成本地模式的安装。

进入 Hive 安装目录下的 conf 目录,复制模板文件 hive-env.sh.template重命名hive-env.sh文件 hive-env.sh 用于配置 Hive 运行环境,具体命令如下。

# 进入 Hive 安装目录下的 conf 目录
[user@hadoop102 ~]$ cd /opt/hive-2.3.9/conf/
# 将文件 hive-env.sh.template 进行复制重命名为 hive-env.sh
[user@hadoop102 conf]$ cp hive-env.sh.template hive-env.sh

添加环境变量编辑文件hive-env.sh,命令如下:

[user@hadoop102 ~]$ vim /opt/hive-2.3.9/conf/hive-env.sh
添加如下环境变量# 指定 Hadoop 目录
export HADOOP_HOME=/opt/hadoop-2.7.7
# 指定 Hive 配置文件所在目录
export HIVE_CONF_DIR=/opt/hive-2.3.9/conf
# 指定 Hive 依赖包所在目录
export HIVE_AUX_JARS_PATH=/opt/hive-2.3.9/lib
# 指定 JDK 所在目录
export JAVA_HOME=/usr/java/default

​ 进入Hive安装目录下的conf目录,创建文件 hive-site.xml 用于配置 Hive 相关参数,具体命令如下:

# 进入 Hive 安装目录下的 conf 目录
[user@hadoop102 ~]$ cd /opt/hive-2.3.9/conf
# 创建文件 hive-site.xml
[user@hadoop102 conf]$ touch hive-site.xml

执行vim hive-site.xml”命令编辑文件 hive-site.xml添加如下内容

<?xml version="1.0" encoding="UTF-8" standalone="no" ?&gt;
<?xml-stylesheet type="text/xsl" href="configuration.xsl" ?&gt;
<configuration&gt;
 <property&gt;
  <name&gt;hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;amp;useSSL=false</value>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
 </property>
 <property>
  <name>hive.metastore.schema.verification</name>
  <value>false</value>
 </property>
 <property>
  <name>datanucleus.schema.autoCreateAll</name>
  <value>true</value>
 </property>
 <property>
  <name>hive.cli.print.header</name>
  <value>true</value>
 </property>
 <property>
  <name>hive.cli.print.current.db</name>
  <value>true</value>
 </property>
 <property>
  <name>hive.server2.enable.doAs</name>
  <value>false</value>
 </property>
</configuration>

上述配置内容中的参数讲解如下。

​ 下载 JDBC 连接 MySQL 的驱动包。

​ 下载地址https://downloads.mysql.com/archives/c-j/。

选择 mysql-connector-java-5.1.49.tar.gz点击下载。

解压缩后,将mysql-connector-java-5.1.49.jar文件上传/opt/hive-2.3.9/lib目录中。在启动 Hive 之前需要执行schematool -initSchema -dbType mysql命令初始化MySQL,若初始化完成出现 schemaTool completed 信息,则说明成功初始化 MySQL。

​ 执行 hive 命令启动 Hive客户端工具 HiveCLI。成功启动 Hive 客户端工具 HiveCLI 进入命令行界面默认当前使用的数据库为default

Hive 命令行交互

​ 在虚拟机中执行hiveserver2命令启动HiveServer2服务,HiveServer2服务启动成功后,HiveServer2会进入监听状态,若要使用后台方式启动 HiveServer2 服务,则执行“hive --service hiveserver2 &amp;”命令,需要注意的是,通过hiveserver2命令启动的 HiveServer2 服务,不能关闭当前窗口,否则会停止 HiveServer2 服务。若需要手动停止 HiveServer2 服务,可以通过按下组合键 Ctrl+C 实现

​ 通过MobaXterm远程连接工具再开启一个虚拟机窗口,在新窗口中通过Hive客户端工具Beeline远程连接虚拟HiveServer2服务,具体命令如下。(这里用的是root用户,我的密码设置为1)

[user@hadoop102 ~]$ beeline -u jdbc:hive2://localhost:10000 -nroot -p1

上述命令中,beeline 用于执行 beeline 命令;u、n、p 都是 beeline 命令的参数。其中,-u 用于指定 HiveServer2 地址;-n 则用于指定登录当前虚拟机操作系统用户名;-p 则是系统用户的密码。成功连接 HiveServer2服务如图1-3所示

​ 如果出现如下报错

Could not open connection to the HS2 server. Please check the server URI and if the URI is correct, then ask the administrator to check the server status.
Error: Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000: java.net.ConnectException: 拒绝连接 (Connection refused) (state=08S01,code=0)

解决方案

​ 1)在conf/hive-site.xml文件中加入以下配置:

<property>
	<name>hive.server2.enable.doAs</name>
	<value>false</value>
</property>

​ 如果还是出现报错那么:

​ 2)在Hadoop的etc/hadoop目录下core-site.xml文件中加入以下配置:

<property>
	<name>hadoop.proxyuser.user.hosts</name>
	<value>*</value>
</property>
<property>
	<name>hadoop.proxyuser.user.groups</name>
	<value>*</value>
</property>

上述配置内容中的参数讲解如下。

hadoop.proxyuser.$superuser.hosts 配置该superUser允许通过代理访问的主机节点
hadoop.proxyuser.$superuser.groups 配置该superUser允许代理的用户所属组

​ 对于每个superUser用户,hosts必须进行配置,而groups和users至少需要配置一个

​ 这几个配置项的值都可以使用*来表示允许所有的主机/用户组/用户。

​ 如果还是没有解决

​ 3)启动metastore服务,命令如下:

[user@hadoop102 ~]$ hive --service metastore

我们打开jps查看进程,如果是不是两个RunJar,使用 kill 把所以 RunJar进程杀死,重新启动hiveserver2metastore服务,再查看jps进程刚好两个,再连接。

​ 如果还是没有连接上,看看HDFS,YARN,MySQL是不是有没启动的。

​ 启动命令:

[user@hadoop102 ~]$ start-dfs.sh
[user@hadoop102 ~]$ start-yarn.sh
[user@hadoop102 ~]$ service mysqld start

​ 如果还是连接不上去查看一下各个配置的格式没有问题

通过 Hive 客户端工具 Beeline 远程连接虚拟 HiveServer2 服务连接问题总结

  1. HDFS,YARN启动没。

  2. MySQL启动没。

  3. hiveserver2服务启动没。

  4. metastore元数据启动没。

  5. conf/hive-site.xml文件配置没。

  6. conf/hive-env.sh的环境变量配置没。

  7. Hadoop的etc/hadoop目录下coresite.xml文件配置没。

原文地址:https://blog.csdn.net/qq_61828116/article/details/134772099

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_35922.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注