7.Hive介绍以及安装「建议收藏」

7.Hive介绍以及安装「建议收藏」Hive运行时,元数据存储在关系型数据库里面。Hive架构1.Hive将元数据存储在数据库中,如mysql、derby。

大家好,欢迎来到IT知识分享网。

hive简介

Hive : 数据仓库。

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

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

Hive架构

7.Hive介绍以及安装「建议收藏」

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

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

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

7.Hive介绍以及安装「建议收藏」

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

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

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

本地模式

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

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
<configuration> 
<property> 
 <name>javax.jdo.option.ConnectionURL</name> 
 <value>jdbc:derby:;databaseName=metastore_db;create=true</value> 
</property> 
<property> 
 <name>javax.jdo.option.ConnectionDriverName</name> 
 <value>org.apache.derby.jdbc.EmbeddedDriver</value> 
</property> 
<property> 
 <name>hive.metastore.local</name> 
 <value>true</value> 
</property> 
<property> 
 <name>hive.metastore.warehouse.dir</name> 
 <value>/user/hive/warehouse</value> 
</property> 
</configuration> 

IT知识分享网

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

远程数据库模式

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

IT知识分享网<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
 
<configuration> 
<property> 
 <name>hive.metastore.warehouse.dir</name> 
 <value>/user/hive_remote/warehouse</value> 
</property> 
 
<property> 
 <name>hive.metastore.local</name> 
 <value>true</value> 
</property> 
 
<property> 
 <name>javax.jdo.option.ConnectionURL</name> 
 <value>jdbc:mysql://localhost/hive_remote?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>hive</value> 
</property> 
 
<property> 
 <name>javax.jdo.option.ConnectionPassword</name> 
 <value>password</value> 
</property> 
</configuration> 

附:

安装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"?> 
 
<configuration> 
 
<property> 
 <name>hive.metastore.warehouse.dir</name> 
 <value>/user/hive/warehouse</value> 
</property> 
 
<property> 
 <name>javax.jdo.option.ConnectionURL</name> 
 <value>jdbc:mysql://192.168.57.6: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>hive</value> 
</property> 
 
<property> 
 <name>javax.jdo.option.ConnectionPassword</name> 
 <value>password</value> 
</property> 
 
<property> 
 <name>hive.metastore.local</name> 
 <value>false</value> 
</property> 
 
<property> 
 <name>hive.metastore.uris</name> 
 <value>thrift://192.168.1.188:9083</value> 
</property> 
 
</configuration> 

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

2.2Remote分开

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

服务端配置文件

IT知识分享网<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
 
<configuration> 
<property> 
 <name>hive.metastore.warehouse.dir</name> 
 <value>/user/hive/warehouse</value> 
</property> 
<property> 
 <name>javax.jdo.option.ConnectionURL</name> 
 <value>jdbc:mysql://192.168.57.6: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> 

客户端配置文件

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
 
<configuration> 
 
<property> 
 <name>hive.metastore.warehouse.dir</name> 
 <value>/user/hive/warehouse</value> 
</property> 
 
<property> 
 <name>hive.metastore.local</name> 
 <value>false</value> 
</property> 
 
<property> 
 <name>hive.metastore.uris</name> 
 <value>thrift://192.168.57.5:9083</value> 
</property> 
 
</configuration> 

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 unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
	at 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/

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/6187.html

(0)
上一篇 2022-12-17 18:10
下一篇 2022-12-17 18:30

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信