初识HIVE

 

前言:

    之前虽然了解HIVE,但是也只是在hql层面上的了解,于是重新学习一下HIVE,把自己的一些心得和常用笔记整理到博客里面

 

一.HIVE的背景

    数据存储在HDFS(分布式存储框架),举个简单的例子,如果需要在HDFS上面做个WC(wordcount),都需要经过mr(mapreduce),如果数据量过多,mr的job会花费大量的时间,但是对于熟悉SQL的人来说,其实wc的本质就是一个group by ,明明一个语句可以写好的,但是mr还需要写map、reduce,代码过于冗杂。于是HIVE诞生了,HIVE默认的metadata数据存储在Derby(一个HIVE内置的数据库),但是我们一般会把metadata存储在mysql里面,可以通过hive-site.xml来配置。

     一开始HIVE并不支持crud,但是在0.14版本才推出crud,虽然HIVE也支持事务,但是在日常中事务几乎很少使用,日常只把HIVE作为一个数仓来使用

二.HIVE的介绍

    HIVE是有facebook开源的,官网地址:http://hive.apache.org/

    用于解决海量结构化的日志数据统计问题
    构建在Hadoop(HDFS/MapReduce/YARN)之上的数据仓库

     HIVE数据存储在HDFS,常用的执行引擎有:MapReduce/Tez/Spark,作业提交到YARN上面进行调度

 

三.HIVE架构

    client:SQL==>生成逻辑执行计划==》优化执行计划==》生成物理执行计划==》优化==》Execution:执行

初识HIVE

     

四.HIVE的部署

上篇博客已经写了:https://blog.csdn.net/qq_41301707/article/details/103569397

五.HIVE的基础语句

创建数据库语句:

hive (default)> create database xkhive;

创建表语句:

hive (default)> create table stu (id int,age int);

数据默认存储路径:

[[email protected] /]$ hdfs dfs -ls /user/hive/warehouse
19/12/16 22:21:56 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 3 items
drwxr-xr-x   - hadoop supergroup          0 2019-12-16 22:20 /user/hive/warehouse/stu
drwxr-xr-x   - hadoop supergroup          0 2019-12-16 22:19 /user/hive/warehouse/xkhive.db

/user/hive/warehouse/stu:这个路径是刚才创建表的文件夹

/user/hive/warehouse/xkhive.db:这个路径是刚才创建database的路径

其他的一些DDL语句和MySQL基本一致

MySQL基本语句博客:https://blog.csdn.net/qq_41301707/article/details/83755480

六.HIVE的log日志配置

[[email protected] hive]$ cd conf/
[[email protected] conf]$ ll
总用量 28
-rw-r--r--. 1 hadoop hadoop 1196 6月   3 2019 beeline-log4j.properties.template
-rw-rw-r--. 1 hadoop hadoop  715 12月 16 20:49 derby.log
-rw-r--r--. 1 hadoop hadoop 2378 6月   3 2019 hive-env.sh.template
-rw-r--r--. 1 hadoop hadoop 2662 6月   3 2019 hive-exec-log4j.properties.template
-rw-r--r--. 1 hadoop hadoop 3505 6月   3 2019 hive-log4j.properties.template
-rw-rw-r--. 1 hadoop hadoop  770 12月 16 20:43 hive-site.xml
-rw-r--r--. 1 hadoop hadoop 2060 6月   3 2019 ivysettings.xml
drwxrwxr-x. 5 hadoop hadoop  133 12月 16 20:49 metastore_db
[[email protected] conf]$ cp hive-log4j.properties.template hive-log4j.xml

[[email protected] conf]$ vim hive-log4j.xml 

hive.log.dir=/home/hadoop/app/hive/log

启动一下HIVE,测试一下logs是否产生,发现日志还是记录在/tmp/hadoop/hive.log

hive (default)> select * from stu;
OK
stu.id  stu.age
1       20
Time taken: 0.056 seconds, Fetched: 1 row(s)

[[email protected] log]$ pwd
/home/hadoop/app/hive/log
[[email protected] log]$ ll
总用量 0

后来排查发现是log4j的配置文件名称不对,并没有启动我配置的参数,于是改下配置文件名称

[[email protected] conf]$ mv hive-log4j.xml hive-log4j.properties

重启下HIVE

[[email protected] conf]$ hive
which: no hbase in (/home/hadoop/app/hive/bin:/usr/bin/java/bin:/home/hadoop/app/hadoop/bin:/home/hadoop/app/hadoop/sbin:/usr/bin/java/bin:/home/hadoop/app/hadoop/bin:/home/hadoop/app/hadoop/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hadoop/.local/bin:/home/hadoop/bin)
19/12/16 22:39:59 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Logging initialized using configuration in file:/home/hadoop/app/hive-1.1.0-cdh5.16.2/conf/hive-log4j.properties
WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
hive (default)> select * from stu;
OK
stu.id  stu.age
1       20
Time taken: 5.282 seconds, Fetched: 1 row(s)

初识HIVE

发现日志已经写入了

 

七.HIVE的命令行交互

    -e:不需要进入hive命令后,就可以跟上sql语句查询
    -f:执行指定文件(内容是SQL语句)

eg:

1.[[email protected] tmp]$ hive -e "select * from stu;"
which: no hbase in (/home/hadoop/app/hive/bin:/usr/bin/java/bin:/home/hadoop/app/hadoop/bin:/home/hadoop/app/hadoop/sbin:/usr/bin/java/bin:/home/hadoop/app/hadoop/bin:/home/hadoop/app/hadoop/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hadoop/.local/bin:/home/hadoop/bin)
19/12/16 22:44:36 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Logging initialized using configuration in file:/home/hadoop/app/hive-1.1.0-cdh5.16.2/conf/hive-log4j.properties
OK
stu.id  stu.age
1       20
Time taken: 4.861 seconds, Fetched: 1 row(s)

 

2.[[email protected] tmp]$ vim demo.sql
select * from stu;

[[email protected] tmp]$ hive -f demo.sql 
which: no hbase in (/home/hadoop/app/hive/bin:/usr/bin/java/bin:/home/hadoop/app/hadoop/bin:/home/hadoop/app/hadoop/sbin:/usr/bin/java/bin:/home/hadoop/app/hadoop/bin:/home/hadoop/app/hadoop/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hadoop/.local/bin:/home/hadoop/bin)
19/12/16 22:45:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Logging initialized using configuration in file:/home/hadoop/app/hive-1.1.0-cdh5.16.2/conf/hive-log4j.properties
OK
stu.id  stu.age
1       20
Time taken: 4.53 seconds, Fetched: 1 row(s)\\

可以把hql语句通过命令行的形式来进行操作HIVE中的数据,可以使用crontab来进行调度

相关文章:

  • 2021-09-21
  • 2021-10-08
  • 2022-01-10
  • 2021-10-20
  • 2021-03-30
  • 2021-07-17
猜你喜欢
  • 2021-10-22
  • 2022-12-23
  • 2021-06-14
  • 2021-11-12
  • 2021-06-23
相关资源
相似解决方案