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较为类似

  1. 下载hive压缩包tar.gz文件

  2. 解压
    tar -zxvf apache-hive-3.1.2-bin-tar-gz -C /home/zhangyuje/app/

  3. 创建软链接
    ln -s apache-hive-3.1.2-bin hive

  4. 查看目录结构
    bin :可执行文件
    conf :配置文件
    lib :hive相关的jar包

  5. 环境变量
    (无所谓放哪里,但是这三个环境变量区别需要去看profile,.bashrc以及.bash_profile)
    export HIVE_HOME=/home/zhangyujie/app/hive export PATH=${HIVE_HOME}/bin:${PATH}

  6. 配置文件
    本身hive-site.xml是没有的
    但是可以复制一分hive-default.xml.template
    作为hive-site.xml(cp)
    同时也需要将其中的配置信息进行修改

  7. 初始化元数据
    schematool -dbType mysql -initSchema
    有可能会报错报错之后注意看日志,可能是权限之类的问题没搞定
    如果没有权限创建初始库,那就手动去创建库

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

  9. 创建一个表
    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)

  10. 连接hive
    CLI(命令界面)
    JDBC(dbeaver)后面会有一些简单的连接过程
    其他的开源框架(HUE,Zeppelin)

  11. 修改配置
    可以在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

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

  1. 下载dbeaver
  2. 打开dbeaver->新建连接->选择hadoop/hive
  3. 填写url以及hive表名以及拥有hadoop的linux用户名
    url一般为hive所在机器的ip地址,端口号一般为10000不用修改,如果是本地则url改为localhost。
    需要注意如果为远程机器,请查看端口10000是否开启
  4. 点击编辑连接将hive文件夹里面的hive-jdbc-standlone.jar以及hadoop
    目录下share/hadoop/common/hadoop-common-版本号.jar包加入
  5. 这个时候大概率会遇到权限问题,可能提示拒绝连接,不要慌,这个时候进入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用户。

  1. 将各种服务启动起来,包括hadoop和mysql ,
    然后依次启动metastore服务
    hive --service metastore
    用root用户或者有sudo权限的用户使用netstat -nlp |grep 9083查看 9083端口是否被监听。
    然后启动hiveserver2服务
    hive --service hiveserver2
    用上面同样方法查看是否监听10000端口。
    到这里就有人发现了dbeaver里面的端口号为什么是默认10000并且不用修改了
  2. 一般来说到这里dbeaver就能成功连上hive了,hiveserver也会显示ok
    但是我做到这里,却并没有成功,
    然后我去查看hive的日志(也是百度了好久才知道hive日志在哪里)一般来说是/tmp/hive的用户/hive.log文件,
    我查看后发现是hive-site.xml里面配置有问题,由于我的xml文件是直接问别人要的写好的文件,并没有把别人的主机名改成自己的主机名,导致hiveserver2启动了半天没成功,报错一直是找不到主机名。
    修改过后果然一下子就成了

hive入门及dbeaver连接hive相关推荐

  1. DBeaver小松鼠:数据库客户端界面工具DBeaver连接Hive

    前言 本文讲解如何通过数据库客户端界面工具DBeaver连接hive,并解决驱动下载不下来的问题. 1.为什么使用客户端界面工具 为什么使用客户端界面工具而不用命令行使用hive 通过界面工具查看分析 ...

  2. Hive 3.1.2Linux CentOs 安装,踩坑 Dbeaver 连接Hive

    安装hive 3.1.2版本 前提:hadoop 3.2.2 jdk 1.8.0 mysql: 5.7 下载 wget https://mirrors.tuna.tsinghua.edu.cn/apa ...

  3. DBeaver连接Hive

    DBeaver连接hive 一.启动hive [root@zxy_master conf]# hive --service metastore & [1] 6887 [root@zxy_mas ...

  4. hive单机安装 beeline连接hive无法连接

    文章目录 前提 解压 前提 hive集群安装,连接mysql hadoop单节点配置 解压 注意版本号 lcc@localhost hive$ pwd /Users/lcc/soft/hive lcc ...

  5. python操作hive数据库代码_Python连接Hive操作数据库

    前言 客户端连接Hive需要使用HiveServer2.HiveServer2是HiveServer的重写版本,HiveServer不支持多个客户端的并发请求.当前HiveServer2是基于Thri ...

  6. Hive记录-Impala jdbc连接hive和kudu参考

    1.配置环境Eclipse和JDK 2.加载hive jar包或者impala jar包 备注:从CDH集群里面拷贝出来 下载地址:https://www.cloudera.com/downloads ...

  7. Hive入门第二篇之hive的安装部署(详细教程)

    第一种方式: derby版hive (不推荐) 默认使用derby(数据库)维护元数据此版本,每个节点自己独立维护一个derby数据库,所以在节点1添加了数据库,在节点2 无法查看第一步:查看系统自带 ...

  8. Apache Hive入门:模拟实现Hive功能、Hive架构、 组件

    一.Apache Hive概述 什么是Hive Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化.半结构化数据文件映射为一张数据库表,  基 ...

  9. 4.1 数据仓库基础与Apache Hive入门

    数据仓库基础与Apache Hive入门 一.数据仓库基本概念 1.数据仓库概念 2. 案例:数据仓库为何而来 (1)业务数据的存储问题 (2)分析型决策的制定 3.数据仓库主要特征 面向主题性(Su ...

最新文章

  1. MBR与GPT分区格式(实例-创建大于2TB的分区)
  2. inline函数包涵static变量,调用时是否会有多份拷贝
  3. c#控制台应用程序,如何实现隐藏DOS窗口
  4. VTK:创建一个圆锥用法实战
  5. 戴尔服务器改win7系统,戴尔dell预装win10怎么改win7系统
  6. 漫游Kafka实现篇之分布式
  7. 解决JupyterLab中tqdm_notebook进度条不显示问题
  8. 北京冬奥会闭幕 冰墩墩概念股怎么样了?
  9. java putall实现,Java JsonObject.putAll方法代码示例
  10. Web测试实践——每日例会记录12.30(1)
  11. Java 编程(基础面试题)
  12. 使用base64格式生成图片
  13. html下拉菜单hover,css用hover制作下拉菜单
  14. 获取百度关键词联想API
  15. jQuery 遍历 - 同胞(siblings)
  16. 【Python成长之路】快速理解复制、浅拷贝、深拷贝
  17. 构建SaaS化平台产品的建议
  18. 苹果iOS系统下的推送机制及实现
  19. 海思平台项目经验总结
  20. android计算器开发

热门文章

  1. 界面——C++_MFC从入门到放弃(一)
  2. 二代测序之WES文库构建学习笔记
  3. 【SDX12】sdx12增加dscp支持及设置SIP的RTP/RTCP为CS5(即0x28=40)操作说明
  4. html没网络显示无网络,ipad无线网络连接上但上不了网怎么办
  5. matlab函数regexp的用法,VBScript-RegExp对象的详细用法
  6. android添加文本框代码,Android输入框添加emoje表情图标的实现代码
  7. 谷歌浏览器停用开发者模式.....解决
  8. ipad air 5参数配置
  9. 塑料表面实现金属感方法大全
  10. 六步成功完成网络推广工作