hive入门

一、hive简介

Hive是由Facebook开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。

例如统计类需求,

(1)在hadoop体系下我们用MapReduce程序实现的,当需要些Mapper、Reducer和Driver三个类,并实现对应逻辑,相对频繁。

(2)在通过Hive SQL实现时,只需要一行就能实现,简单方便;例如:

select sum(power)from testTable group by mac;

二、Hive本质

Hive是一个Hadoop客户端,用于将HQL转化成MapReuce程序。

(1)hive的每张表的数据存储在HDFS

(2)hive分析数据底层的实现是MapReduce(也可以是Spark或者Tez)

(3)执行程序运行在yarn上

三、Hive架构原理

image.png

四、Hive的安装与元数据配置

1.下载地址:

http://archive.apache.org/dist/hive/

2.安装步骤:

(1)将apache-hive-3.1.3-bin.tar.gz上传到 Linux 服务器

(2)解压压缩包到指定的目录(自定义目录)

(3)添加环境变量到profile中;刷新配置文件

#HIVE_HOME
export HIVE_HOME=/{自定义的目录}
export PATH=$PATH:$HIVE_HOME/bin

(4)在mysql创建元数据库 metastore

(5)在$HIVE_HOME/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://hadoop102: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>123456</value>
    </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>

(6)bin目录下执行改脚本,初始化元数据库

bin/schematool -dbType mysql -initSchema -verbose

3.验证元数据是否配置成功

(1)启动hive

cd $HIVE_HOME
bin/hive

(2)使用hive

show databases;
show tables;
create table test (id int,name string);
insert into test values(1,"ss");
select * from test;

(3)重新开启一个窗口,启动hive;若两个窗口同时都可以操作hive,都没有出现异常则说明配置成功

五、Hive服务部署

hive的hiveserver2服务的作用是提供jdbc/odbc接口,为用户提供远程访问hive数据功能

1.hiveserver2部署

1)hadoop端配置:

修改core-site.xml

cd $HADOOP_HOME/etc/hadoop
vim core-site.xml

添加如下配置:

 <!--配置所有节点的用户都可作为代理用户--> 
<property>
    <name>hadoop.proxyuser.xxx.hosts</name>
    <value>*</value>
</property>
 
 <!--配置用户能够代理的用户组为任意组--> 
<property>
    <name>hadoop.proxyuser.xxx.groups</name>
    <value>*</value>
</property>
 
 <!--配置用户能够代理的用户为任意用户--> 
<property>
    <name>hadoop.proxyuser.xxx.users</name>
    <value>*</value>
</property>

2)Hive端配置:

在hive-site.xml中添加如下配置信息

vim hive-site.xml
 <!-- 指定hiveserver2连接的host --> 
<property>
        <name>hive.server2.thrift.bind.host</name>
        <value>hadoop102</value>
</property>
 
 <!-- 指定hiveserver2连接的端口号 --> 
<property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
</property>

3)测试

(1)启动hiveserver2

bin/hive --service hiveserver2

(2)使用命令行客户端beeline进行远程访问

启动beeline

bin/beeline -u jdbc:hive2://hadoop102:10000 -n xxx

看到如下信息

Connecting to jdbc:hive2://hadoop102:10000
Connected to: Apache Hive (version 3.1.3)
Driver: Hive JDBC (version 3.1.3)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.3 by Apache Hive
0: jdbc:hive2://hadoop:10000>

2.metastore部署

独立部署模式:

首先保证metastore服务的配置文件 hive-site.xml包含连接元数据库所需的参数:

 <!-- jdbc连接的URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop: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>123456</value>
    </property>

其次保证hiveserver2和每个hive cli的配置文件hive-site.xml中包含访问metastore服务所需的以下参数:

<property>
        <name>hive.metastore.uris</name>
        <value>thrift://hadoop:9083</value>
</property>

主机名需要改为metastore服务所在节点,端口号无需修改

测试:

启动metastore

hive --service metastore

重新启动客户端 并执行查询语句 若访问整张说明配置成功

六、Hive使用技巧

1.hive常用交互命令

1)表创建,并插入一条数据

hive (default)> create table test(id int,mac string);
OK
Time taken: 1.291 seconds
 
hive (default)> insert into table test values(1,"123");
hive (default)> select * from test;
OK
test.id        test.mac
1        123
Time taken
  • 25
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值