700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > hive入门及dbeaver连接hive

hive入门及dbeaver连接hive

时间:2018-11-01 07:28:32

相关推荐

hive入门及dbeaver连接hive

hive入门

hive简介安装使用dbeaver连接自己的hive

学HIVE上官网 hive官网

hive简介

hadoop广义:是大数据生态圈,其中hive是使用SQL完成大数据统计分析的工具

hadoop狭义:HDFS MR yarn

hive是Facebook公司开源的工具,用来解决海量的结构化日志的统计问题

hive是构建在hadoop之上的数据仓库

HDFS:hive的数据是存放在HDFS(distributed storge),元数据(metadata)存放在对应的底层数据库,并且一般是MySQL

MR(计算引擎):hive的作业(SQL)是通过hive的框架翻译成MR作业

这里的计算引擎也可以是Tez,Spark,

但是不管底层用的什么引擎,对于用户来说是不感知的

同样的SQL,只需要通过参数切换,就可以实现

Yarn:hive的作业提交到Yarn上去运行的

Hadoop开发可以使用单机,但生产上一定是分布式

hive其实就是一个客户端,没有集群的概念,提交作业到集群的Yarn上去运行(没有感情的提交机器)

SQL==>Hive==>MR==>Yarn

生产环境上,哪台机器需要提交hive,就在哪台机器上配置hive,不同机器上的hive是相互独立的

而Hive的职责:将SQL翻译成底层对应的执行引擎作业

对于distributed storge(文件存储系统)

HDFS,AWS S3,各种云 OSS COS

这些系统,hive都可以对接,只要有对应的jar包

本地的文件系统(file开头)也可以对接

metadata

有统一的元数据管理

hive中有2个同名的容易搞混的概念

元数据与源数据

元数据:描述数据的数据

源数据:来源系统的数据,HDFS的数据,各个数据库的数据

例如:

源数据:HDFS上有一个emp.txt

KING,5000

JHON,1000

CINDY,2800

这样的数据叫源数据,也就是原始的数据

元数据:

table:emp

ename:string

sal:int

seq(分隔符):,

列的顺序:第一列是ename,第二列是sal

数据存放位置也是共享的

所以spark/impala/presto 等等,都是统一使用metadata

也就是说在hive里建的表,sparkSQL也能使用

hive官网怎么说?

那就上官网看看

官网怎么说?

那就上官网看

The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive.

hive VS RDBMS(关系型数据库)

分布式:11 均支持

节点:11 均支持

成本:廉价 VS 昂贵

数据量:TB级别,加起来有PB级别甚至更高 VS GB

事务(开始于insert、update、delete,结束于commit、rollback或ddl语句):均支持

延时性:高 VS 低

DML(增删改):0.14版本之后(但是不建议用) VS 支持

大数据里几乎不用update也不允许用

Hive适用场景

批处理/离线处理

Hive优缺点

优点:易上手,比MR使用起来简单多了

缺点:延时性高

初学者容易问的一些问题:

Q:hive的执行速度,对比于mysql谁快谁慢?

A:这个问题其实没法回答,需要看数据量来决定谁快,这个问题就好比再问詹姆斯和C罗谁的成就更高?不是一个领域的东西没法比较

Q:hive sql和MySQL的sql有什么关系?

A:虽然他们都叫sql但是除了语法类似之外,没有任何关系

安装

hive的安装过程与hadoop较为类似

下载hive压缩包tar.gz文件

解压

tar -zxvf apache-hive-3.1.2-bin-tar-gz -C /home/zhangyuje/app/

创建软链接

ln -s apache-hive-3.1.2-bin hive

查看目录结构

bin :可执行文件

conf :配置文件

lib :hive相关的jar包

环境变量

(无所谓放哪里,但是这三个环境变量区别需要去看profile,.bashrc以及.bash_profile)

export HIVE_HOME=/home/zhangyujie/app/hive export PATH=${HIVE_HOME}/bin:${PATH}

配置文件

本身hive-site.xml是没有的

但是可以复制一分hive-default.xml.template

作为hive-site.xml(cp)

同时也需要将其中的配置信息进行修改

初始化元数据

schematool -dbType mysql -initSchema

有可能会报错报错之后注意看日志,可能是权限之类的问题没搞定

如果没有权限创建初始库,那就手动去创建库

启动

进入hive文件夹内bin目录下 ./hive

创建一个表

create table test0330(id bigint,name string,sal bigint)

hive里面用的数据类型很少常用的为BIGINT double string,date都不常用

放点数据

insert into test0330 values(1,‘xxx’,10)

insert into test0330 values(2,‘xxx2’,11)

连接hive

CLI(命令界面)

JDBC(dbeaver)后面会有一些简单的连接过程

其他的开源框架(HUE,Zeppelin)

修改配置

可以在hive-site.xml中修改配置,也可以通过其他办法

1 hive --hiveconf

这种方式启动可以跟上需要修改的参数

比如说hive --hiveconf hive.cli.print.header=false退出在通过hive登陆就

回去了

2 进入hive之后可以通过set命令去配置

set hive.cli.print.header=true;

我光输入set hive.cli.print.header;可以获取其值

这里的set相当于get了

3 生效顺序

hive-site.xml < hive --hiveconf < set hive.cli.print.header=true

也就是说在启动的时候如果没有进行hive --hiveconf就采用hive-site.xml

若启动后进入hive则以在hive里进行配置的为准

使用dbeaver连接自己的hive

这里我也是踩了一些坑的,听我慢慢说来

下载dbeaver打开dbeaver->新建连接->选择hadoop/hive填写url以及hive表名以及拥有hadoop的linux用户名

url一般为hive所在机器的ip地址,端口号一般为10000不用修改,如果是本地则url改为localhost。

需要注意如果为远程机器,请查看端口10000是否开启点击编辑连接将hive文件夹里面的hive-jdbc-standlone.jar以及hadoop

目录下share/hadoop/common/hadoop-common-版本号.jar包加入这个时候大概率会遇到权限问题,可能提示拒绝连接,不要慌,这个时候进入hadoop中的core-site.xml文件添加以下内容

<property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>

这里的root是你拥有hive以及hadoop的linux用户。

将各种服务启动起来,包括hadoop和mysql ,

然后依次启动metastore服务

hive --service metastore

用root用户或者有sudo权限的用户使用netstat -nlp |grep 9083查看 9083端口是否被监听。

然后启动hiveserver2服务

hive --service hiveserver2

用上面同样方法查看是否监听10000端口。

到这里就有人发现了dbeaver里面的端口号为什么是默认10000并且不用修改了一般来说到这里dbeaver就能成功连上hive了,hiveserver也会显示ok

但是我做到这里,却并没有成功,

然后我去查看hive的日志(也是百度了好久才知道hive日志在哪里)一般来说是/tmp/hive的用户/hive.log文件,

我查看后发现是hive-site.xml里面配置有问题,由于我的xml文件是直接问别人要的写好的文件,并没有把别人的主机名改成自己的主机名,导致hiveserver2启动了半天没成功,报错一直是找不到主机名。

修改过后果然一下子就成了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。