HIVE安装

1. Hive简介

Hive是一种基于Hadoop的数据库,可以将结构化的数据存储到表中,并提供类SQL的数据增删查改,其本质为将SQL语句转化为MapReduce进行,相比较MySQL,Hive的不同点如下:
(1)Hive的数据存储在HDFS上;
(2)Hive对数据的操作底层实现是MapReduce;
(3)Hive中的执行程序由于是MapReduce程序,因此其运行受到YARN的管理。
因此可以看出,Hive的安装和运行都是以Hadoop为基础。并且由于MapReduce具有一定的执行延迟,因此Hive适合处理大数据,而在小批量数据的处理中效率远差MySQL,因此可以根据数据的规模选择合适的处理方法。

2. Hive安装

由于Hive基于Hadoop,因此在安装Hive之前应先搭建好Hadoop集群,搭建过程参照Hadoop3.1.3集群搭建,下面主要为Hive的安装步骤,笔者的系统环境为Ubuntu 20.04 + Hadoop 3.3.0。

2.1 安装MySQL

Hive自带的元数据库为derby,其不支持多用户进行访问,因此需要安装MySQL并在后续步骤中将MySQL设置为元数据库,通过以下命令安装MySQL:

logadmin@cluster002:~$ sudo apt-get install mysql-server

系统会自动选择最新版本的MySQL进行安装。

2.2 修改MySQL配置

默认安装的MySQL是没有设置密码的,并且不允许远程连接,因此需要修改MySQL的配置。首先对MySQL进行初始化配置:

logadmin@cluster002:~$ sudo mysql_secure_installation

选项按照以下方式去配置:

#1
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (选择N ,不会进行密码的强校验)

#2
Please set the password for root here...
New password: (输入MySQL的登录密码)
Re-enter new password: (重复输入)

#3
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N (选择N,不删除匿名用户)

#4
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : N (选择N,允许root远程连接)

#5
By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (选择N,不删除test数据库)

#6
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (选择Y,修改权限立即生效)

之后修改MySQL的远程连接限制:

logadmin@cluster002:~$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

将bind-address修改为0.0.0.0,表示允许任何IP进行远程连接:

bind-address            = 0.0.0.0
mysqlx-bind-address     = 127.0.0.1

重启MySQL:

logadmin@cluster002:~$ sudo /etc/init.d/mysql restart

登录MySQL:

logadmin@cluster002:~$ sudo mysql -uroot -p

输入上述设置的密码,切换到mysql数据库:

mysql> use mysql;

修改root用户的配置并刷新权限:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;
mysql> UPDATE user SET host = '%' WHERE user = 'root';
mysql> flush privileges; 

至此,MySQL的配置完成。

2.3 安装Hive及环境变量配置

将预先下载好的Hive安装包解压到指定文件夹:

logadmin@cluster002:~$ tar -xzvf packages/apache-hive-3.1.2-bin.tar.gz -C module/
logadmin@cluster002:~$ cd module
logadmin@cluster002:~$ mv apache-hive-3.1.2-bin/ hive # 修改文件夹名称以便后续操作

配置Hive的环境变量:

logadmin@cluster002:~$ sudo vi /etc/profile.d/my_env.sh

在文件末尾新增:

export HIVE_HOME=/home/logadmin/module/hive # 该目录为刚才Hive的解压目录,根据实际情况调整
export PATH=$PATH:$HIVE_HOME/bin

激活环境变量:

logadmin@cluster002:~$ source /etc/profile.d/my_env.sh

2.4 配置Hive并设置MySQL为元数据库

将jdbc的驱动jar包(预先下载)复制到Hive/lib目录下:

logadmin@cluster002:~$ cp mysql-connector-java-8.0.25.jar /home/logadmin/module/hive/lib/

在hive/conf目录下新建hive-site.xml文件,并添加内容如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!-- jdbc 连接的 URL -->
	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://cluster002:3306/metastore?useSSL=false</value>  # 地址根据实际配置
	</property>
	
	<!-- jdbc 连接的 Driver-->
	<property>
		<name>javax.jdo.option.ConnectionDriverName</name>
		<value>com.mysql.jdbc.Driver</value>
	</property>
	
	<!-- jdbc 连接的 username-->
	<property>
		<name>javax.jdo.option.ConnectionUserName</name>
		<value>root</value>
	</property>
	
	<!-- jdbc 连接的 password -->
	<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>******</value>  # 上述配置MySQL时设置的登陆密码
	</property>
	
	<!-- Hive 元数据存储版本的验证 -->
	<property>
		<name>hive.metastore.schema.verification</name>
		<value>false</value>
	</property>
	
	<!--元数据存储授权-->
	<property>
		<name>hive.metastore.event.db.notification.api.auth</name>
		<value>false</value>
	</property>
	
	<!-- Hive 默认在 HDFS 的工作目录 -->
	<property>
		<name>hive.metastore.warehouse.dir</name>
		<value>/user/hive/warehouse</value>
	</property>
</configuration>

由于设置HIve在HDFS中的工作目录为/user/hive/warehouse,因此预先创建该目录:

logadmin@cluster002:~$ hadoop fs -mkdir /user/hive/warehouse

登录MySQL,创建metastore元数据库:

logadmin@cluster002:~$ sudo mysql -uroot -p
mysql> create database metastore;

初始化Hive的元数据库为MySQL:

schematool -initSchema -dbType mysql -verbose

Hive的配置完成,整个Hive的安装也就完成了。注意在笔者的安装过程中,出现了java.lang.NoSuchMethodError错误,查询后发现是Hive和Hadoop的版本问题,只需要将Hive/lib下guava-19.0的jar包删除,并把hadoop/share/hadoop/common/lib下的guava复制到hive/lib目录下即可。

3. HQL示例

启动Hive,执行数据库和表的创建,以及表的一些操作:

logadmin@cluster002:~$ hive
hive> show databases; # 显示所有数据库
hive> create database test_database; # 创建新的数据库
hive> use test_database; # 切换到新建的数据库
hive> show tables; # 显示所有表格
hive> create table test (id int); # 创建表格
hive> insert into test values (0); # 像表格中添加元素
hive> select * from test; # 查看表中所有元素

参考链接

Ubuntu20.04安装MySQL
hive环境搭建提示: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值