欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

大数据学习之路25-Hive的概念介绍及安装,初体验

程序员文章站 2022-05-01 11:03:18
...

Hive就是一种方便的工具,有了它我们不需要亲自去写mapreduce,mapreduce就变成了hive的底层支撑平台,在hive的底层有许多基本sql逻辑单元事先写成了mr模板程序,我们写的sql语句可以通过sql语法解析引擎进行解析。存数据使用HDFS,运行逻辑使用mapreduce,而mapreduce又跑在yarn上。这样hive就可以直接面向使用者。而我们的建表语句就相当于告诉程序我们的输入输出目录在哪里。hive有专门记录用户的表定义信息的元数据库。

那么这个元数据库在哪呢?

我们可以想到之前我们用namenode的时候,我们的元数据是记录在自己的内存中的,用一个庞大的树数据结构,也会序列化到硬盘。但是hive比较偷懒,它不会自己去实现这个记录的功能,它借助数据库实现。所以我们要使用hive就要有hadoop集群还要有mysql。

hive装在哪其实无所谓,它接收sql,变成mapreduce,然后提交给yarn去执行。所以它也是一个可以独立运行的程序。

我们之前已将讲过了mysql5.7的安装,所以这里直接安装hive.

我们这里使用的hive版本是apache-hive-1.2.1-bin.tar.gz的版本,不是最新版,为什么不用最新版,因为最新版的hive已经不适用mapreduce了,它抛弃了mapreduce投入了spark的怀抱。如果我们使用最新版,我们就要有spark集群才能运行。我们这里就先学习一下,等到学习spark的时候再换。

解压缩之后,我们就要配置hive了,hive的配置文件在hive-default.xml中。但是这个是他的默认配置。我们要覆盖它的默认参数,不一定要改它的所有参数。我们可以只改那些我们想改的。所以我们可以新建一个文件。

vi hive-site.xml

我们首先要做的就是告诉他Mysql在哪里。

配置如下:

<configuration>
	<property>
         <name>javax.jdo.option.ConnectionURL</name>
		 <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
	</property>
	
	<property>
	     <name>javax.jdo.option.ConnectionDriverName</name>
		 <value>com.mysql.jdbc.Driver</value>
	</property>
	
	<property>
	     <name>javax.jdo.option.ConnectionUserName</name>
		 <value>root</value>
	</property>
	
	<property>
	     <name>javax.jdo.option.ConnectionPassword</name>
		 <value>123456</value>
	</property>
	
</configuration>

配置完之后,我们就可以使用hive了。那么我们怎么使用hive呢?

hive的目录下的bin下有启动命令,它会启动一个交互式的界面。这个命令是

./hive

如果我们不想这样写,我们可以配置环境变量:

vi /etc/profile
export HIVE_HOME=/root/app/hive-1.2.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin

配置完之后让他生效:

source /etc/profile

之后我们使用直接使用hive命令,还是会报错,错误如下:

Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFoundException:
 The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH

这是因为我们没有设置mysql驱动的jar包,所以我们就需要将mysql链接驱动的jar包放在hive的lib目录下。

mv mysql-connector-java-5.1.21-bin.jar  app/hive-1.2.1/lib/

这样我们就安装好了hive

接下来我们尝试的写几个sql语句,在hive中是不区分大小写的,而且string和varchar一样,其实varchar的本质就是string。

大数据学习之路25-Hive的概念介绍及安装,初体验

大数据学习之路25-Hive的概念介绍及安装,初体验

接下来我们尝试插入一条数据:

大数据学习之路25-Hive的概念介绍及安装,初体验

我们可以看到它这里启动了mapreduce job,生成了一个文件,放在表对应的目录中了。那这个表对应的目录在哪呢?

在HDFS中,我们来看一下:

大数据学习之路25-Hive的概念介绍及安装,初体验

大数据学习之路25-Hive的概念介绍及安装,初体验

这就是我们刚才传上去的数据,它使用的分隔符是^A,是看不见的,在linux中要想写出来要先按ctrl+v,然后按ctrl+A。

那么如果我们自己按照这种分隔符的格式写一个文件,然后丢到那个目录下,hive可以查出来吗?

我们可以尝试一下:

大数据学习之路25-Hive的概念介绍及安装,初体验

接下来我们将其传到hdfs的那个目录下:

hdfs dfs -put a.txt /user/hive/warehouse/t_user/

然后我们用hive进行查询:

大数据学习之路25-Hive的概念介绍及安装,初体验

我们可以看到,这样也可以查询到。说明我们只要把文件丢进去,它就可以进行分析。

大数据学习之路25-Hive的概念介绍及安装,初体验