hive 安装_7.Hive介绍以及安装

hive简介

Hive : 数据仓库。

Hive:解释器,编译器,优化器等。

Hive 运行时,元数据存储在关系型数据库里面。

Hive架构

c821cbe6618699ea9c633a9fc5eedf9a.png

1.Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

2.解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行

3.Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(包含*的查询,比如select * from tbl不会生成MapRedcue任务)。

a22654618887c30bfcda8e531ebfb5cd.png

编译器将一个Hive SQL转换操作符

操作符是Hive的最小的处理单元

每个操作符代表HDFS的一个操作或者一道MapReduce作业

本地模式

这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> javax.jdo.option.ConnectionURLjdbc:derby:;databaseName=metastore_db;create=truejavax.jdo.option.ConnectionDriverNameorg.apache.derby.jdbc.EmbeddedDriverhive.metastore.localtruehive.metastore.warehouse.dir/user/hive/warehouse

注:使用derby存储方式时,运行hive会在当前目录生成一个derby文件和一个metastore_db目录。这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库,否则会提示如下错误

远程数据库模式

这种存储方式需要在本地运行一个mysql服务器,并作如下配置(下面两种使用mysql的方式,需要将mysql的jar包拷贝到$HIVE_HOME/lib目录下)。

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  hive.metastore.warehouse.dir/user/hive_remote/warehousehive.metastore.localtruejavax.jdo.option.ConnectionURLjdbc:mysql://localhost/hive_remote?createDatabaseIfNotExist=truejavax.jdo.option.ConnectionDriverNamecom.mysql.jdbc.Driverjavax.jdo.option.ConnectionUserNamehivejavax.jdo.option.ConnectionPasswordpassword

附:

安装mysql

Yum install mysql-server -y

修改mysql权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;

flush privileges;

远程元数据数据库服务模式

安装规划

node1:mysql

node2:metastore server

node3:metastore client

1.安装mysql

yum install mysql-server -y

修改mysql权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;

flush privileges;

centos7阿里镜像源无法安装 mysql-server

2.服务和客户端安装

2.1Remote一体

这种存储方式需要在远端服务器运行一个mysql服务器,并且需要在Hive服务器启动meta服务。

这里用mysql的测试服务器,ip位192.168.1.214,新建hive_remote数据库,字符集位latine1

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  hive.metastore.warehouse.dir/user/hive/warehousejavax.jdo.option.ConnectionURLjdbc:mysql://192.168.57.6:3306/hive?createDatabaseIfNotExist=truejavax.jdo.option.ConnectionDriverNamecom.mysql.jdbc.Driverjavax.jdo.option.ConnectionUserNamehivejavax.jdo.option.ConnectionPasswordpasswordhive.metastore.localfalsehive.metastore.uristhrift://192.168.1.188:9083

注:这里把hive的服务端和客户端都放在同一台服务器上了。服务端和客户端可以拆开,

2.2Remote分开

将hive-site.xml配置文件拆为如下两部分

服务端配置文件

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  hive.metastore.warehouse.dir/user/hive/warehousejavax.jdo.option.ConnectionURLjdbc:mysql://192.168.57.6:3306/hive?createDatabaseIfNotExist=truejavax.jdo.option.ConnectionDriverNamecom.mysql.jdbc.Driverjavax.jdo.option.ConnectionUserNamerootjavax.jdo.option.ConnectionPassword123456

客户端配置文件

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  hive.metastore.warehouse.dir/user/hive/warehousehive.metastore.localfalsehive.metastore.uristhrift://192.168.57.5:9083

3.启动hive服务端程序

注意这是前台启动

hive --service metastore 

4.客户端使用

直接使用hive命令即可

root@my188:~$ hive

Hive history file=/tmp/root/hive_job_log_root_201301301416_955801255.txt

hive> show tables;

OK

test_hive

Time taken: 0.736 seconds

hive>

客户端启动的时候要注意:

[ERROR] Terminal initialization failed; falling back to unsupportedjava.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expectedat jline.TerminalFactory.create(TerminalFactory.java:101)

错误的原因: Hadoop jline版本和hive的jline不一致

解决方案:

cp apache-hive-1.2.1-bin/lib/jline-2.12.jar /opt/sxt/hadoop-2.6.5/share/hadoop/yarn/lib/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值