小白学Hadoop日记day9——hive

hive定义:
Hive是一个基于`Hadoop`的数据仓库工具,可以将结构化的数据文件映射成一张数据表,并可以使用类似SQL的方式来对数据文件进行读写以及管理。这套Hive SQL 简称HQL。Hive的执行引擎可以是MR、Spark、Tez。

1、hive不能做数据存储,他需要依靠HDFS或者Hbase等来做数据存储。
2、Hive没有计算功能,他需要依靠mapreduce、tez、spark等。
3、hive能将HQL语句解析成mapreduce或者spark或者tez等程序。

hive应用:
用于做数据仓库(数据统计和分析)
hive优缺点
优点
    学习成本低:提供了类SQL查询语言HQL,使得熟悉SQL语言的开发人员无需关心细节,可以快速上手.
    海量数据分析:底层是基于海量计算到MapReduce实现.
    可扩展性:为超大数据集设计了计算/扩展能力(MR作为计算引擎,HDFS作为存储系统),Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。
    延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
    良好的容错性:某个数据节点出现问题HQL仍可完成执行。
    统一管理:提供了统一的元数据管理
缺点
    Hive的HQL表达能力有限。
    迭代式算法无法表达.
    Hive的效率比较低.
    Hive自动生成的MapReduce作业,通常情况下不够智能化.
    Hive调优比较困难,粒度较粗.

image-20210706165030688

metaStore:库、表、表类型、数据存储位置、字段、类型、创建人、类型、分区、分桶等很多信息。元数据默认存储内置的derby数据库中,但是建议存储mysql。
Driver(解释器):将HQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。
Compiler(编译器):对hql语句进行词法、语法、语义的编译(需要跟元数据关联),编译完成后会生成一个执行计划。
Optimizer(优化器):选择一个较好的执行计划并进行优化,(减少不必要的列、使用分区、使用索引等)。
Executor(执行器):将优化后的执行计划(所对应的代码)提交给hadoop的yarn上执行。
hive一般提供两个服务:hiveserver2(第三方服务:jdbc连接和beeline连接等)和metastore(提供元数据连接)。

hive与关系数据库的区别

hive的数据格式:TextFile、SequenceFile、RCFile、ORC、Parquet
hive的数据更新:不支持局部更新,支持覆盖更新和追加更新。


Hadoop和hive的关系
1、Hive是基于Hadoop的。
2、Hive本身其实没有多少功能,hive就相当于在Hadoop上面加了一个外壳,就是对hadoop进行了一次封装。
3、Hive的存储是基于HDFS的,hive的计算是基于MapReduce。

在linux下的hive的安装部署

解压

[root@hadoop01 ~]# tar -zxvf /home/apache-hive-2.3.7-bin.tar.gz -C /usr/local/
[root@hadoop01 ~]# mv /usr/local/apache-hive-2.3.7-bin/ /usr/local/hive-2.3.7

配置环境变量

[root@hadoop01 ~]# vi /etc/profile
#追加如下内容
export HIVE_HOME=/usr/local/hive-2.3.7/
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:
#刷新环境变量
[root@hadoop01 ~]# source /etc/profile
#检查环境变量
[root@hadoop01 ~]# which hive
/usr/local/hive-2.3.7/bin/hive

配置
在conf目录下创建hive-site.xml,然后覆盖如下内容即可:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 该参数主要指定Hive的数据存储目录  -->
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
</property>
<!-- 该参数主要指定Hive的临时文件存储目录  -->
<property>
    <name>hive.exec.scratchdir</name>
    <value>/data/hive</value>
</property>
<!--配置mysql的连接字符串-->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://hadoop01:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!--配置mysql的连接驱动-->
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
</property>
<!--配置登录mysql的用户-->
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
</property>
<!--配置登录mysql的密码-->
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>Root123456!</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>
</configuration> 

复制mysql驱动包

[root@hadoop01 hive-2.3.7]# cp /home/mysql-connector-java-5.1.28-bin.jar /usr/local/hive-2.3.7/lib/

初始化元数据

[root@hadoop01 hive-2.3.7]# schematool -initSchema -dbType mysql

初始化 ,在navicat中查看,表如下:

image-20210706174823454

启动
条件:保障hadoop可用、mysql可用。

hive --service metastore &

连接hive

[root@hadoop01 hive-2.3.7]# hive

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值