Hive是基于Hadoop的数据仓库工具,提供了在Hadoop分布式存储上对大数据集使用SQL进行查询、修改、管理数据的功能。

Hive提供标准SQL功能,包括SQL:2003,SQL:2011和SQL:2016分析功能。Hive的SQL也可以通过用户自定义的函数(UDF),用户自定义聚合(UDAF)和用户自定义的表函数(UDTF)使用用户代码进行扩展。

Hive不要求数据存储为某种特定的格式,Hive自带连接器可以构建“,”或者“\t”分隔的CSV,TSV文本文件,Apache Parquet,Apache ORC和其他格式,用户可以为其他格式扩展Hive连接器。

一,概念

Hive

Hive是基于Hadoop数据仓库工具,来处理结构化数据。Hadoop为Hive提供了大规模扩展和容错功能。

Hive不是

  • 用来处理联机事务(OLTP)
  • 不是关系数据库
  • 不是实时查询和行级更新语言

基于Hadoop,Hive提供了以下功能。

  • 通过SQL轻松访问数据的工具,从而实现数据仓库,如(extract/transform/load)ETL,报告,数据分析等。
  • 将结构强加于各种数据结构的一种机制。
  • 直接访问存储在Apache HDFS中的文件,或者在其他存储系统的文件,如:Hbase
  • 通过Apache Tez,Apache Spark或者MapReduce执行查询
  • 使用HPL-SQL
  • 通过Hive LLAP,Apache Yarn和Apache Slider进行亚秒级查询

Hive最好用于传统的数据仓库。

按照粒度单位,Hive数据分为

  • Databases,命名空间,用于避免表,视图,分区,列等命名冲突。还用于用户或用户组权限。
  • Tables,具有相同模式的同类数据单元,例如page_views表,每一行包含以下列:
    1. timestmap,INT类型,对应于查看页面的Unix时间戳
    2. userId,BIGINT类型,对应于查看页面的用户
    3. page_url,String类型,页面的资源路径
    4. referer_url,String类型,用户到达当前页面的页面位置
    5. ip,String类型,发出请求的用户IP
  • Partitions,每一张Table可以有一个或者多个Partition key,Partition key决定了数据是怎们存储的。Partitions,一是作为存储单元,另一个是通过Partition,用户可以识别满足标准的行。例如String类型的date_partition和String类型的county_partition。每一个Partition key唯一键定义了Table的一个partition,例如从2009-12-23开始所有的US数据是page_views表的一个partition。因此,如果仅仅对2009-12-23以后的US数据进行分析,则只在表的相关分区上运行查询,从而可以加快数据分析速度。注意,仅仅因为partition名称为2009-12-23,并不是他包含该日期的全部或者只包含该日期的数据。为了方便理解,partition使用日期命名。partition和数据的关系取决用用户,分区时虚拟的,不是数据的一部分,而是加载时派生的。
  • Buckets,每个分区的数据又可以分为Bucket。如page_views表可以根据userId分,userid是表的一个列,或者

结构

Hive组件包括HCatalog和WebHCat。

  • HCatalog是Hadoop的表和存储管理层,可以让用户使用不同的数据处理工具(Pig和MapReduce),可以更轻松的读写表格数据。
  • WebHCat,提供了一个用来执行Hadoop MapReduce或者YARN,Pig,Hive任务的服务,你也可以执行Hive元数据操作通过Rest风格Http接口。

Hive的结构如下图

单元名称

操作

用户接口/界面

Hive是一个数据仓库基础工具软件,可以创建用户和HDFS之间互动。用户界面,Hive支持是Hive的Web UI,Hive命令行,HiveHD洞察(在Windows服务器)。

元存储

Hive选择各自的数据库服务器,用以储存表,数据库,列模式或元数据表,它们的数据类型和HDFS映射。

HiveQL处理引擎

HiveQL类似于SQL的查询上Metastore模式信息。这是传统的方式进行MapReduce程序的替代品之一。相反,使用Java编写的MapReduce程序,可以编写为MapReduce工作,并处理它的查询。

执行引擎

HiveQL处理引擎和MapReduce的结合部分是由Hive执行引擎。执行引擎处理查询并产生结果和MapReduce的结果一样。它采用MapReduce方法。

HDFS 或 HBASE

Hadoop的分布式文件系统或者HBASE数据存储技术是用于将数据存储到文件系统。

二,安装

2.1,选择版本

根据自己hadoop的版本选择正确的hive版本

在官网https://hive.apache.org/downloads.html页面查看hive版本,以及对应的hadoop版本。

hive2已经不再支持基于Map-Reduce的计算,所以选择1.x版本使用MapReduce进行计算。

2.2,下载解压

[root@ecs-7bc6-0001 hive]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gz
[root@ecs-7bc6-0001 hive]# tar -zxvf apache-hive-1.2.2-bin.tar.gz

重命名一下

[root@ecs-7bc6-0001 hive]# mv apache-hive-1.2.2-bin hive-1.2.2

2.3,添加环境变量

export HIVE_HOME=/home/work/docker/hive/hive-1.2.2
export PATH=$PATH:$HIVE_HOME/bin

使环境变量生效

source /etc/profile

2.4,运行

2.4.1,准备

必须添加hadoop在环境变量中

2.4.2,修改配置

进入hive安装目录的conf目录下,将配置模板复制一份,命名为hive-site.xml

[root@master2 conf]# cp hive-default.xml.template hive-site.xml

修改配置,主要分为三个方面,

1),metastore对应的数据库配置,包括URL,用户名,密码,JDBC驱动

2),数据存储目录

3),相关日志文件目录

根据自己的情况,修改相应的配置,比如mysql在172.16.0.5:3306,hdfs在172.16.0.2:9000

<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://172.16.0.5:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value><description>JDBC connect string for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><description>Username to use against metastore database</description></property>
<property><name>javax.jdo.option.ConnectionPassword</name><value>mysql</value><description>password to use against metastore database</description></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description></property><property><name>hive.metastore.warehouse.dir</name><value>hdfs://172.16.0.2:9000/user/hive/warehouse</value><description>location of default database for the warehouse</description></property><property><name>hive.server2.logging.operation.log.location</name><value>/tmp/operation_log/operation_logs</value><description>Top level directory where operation logs are stored if logging functionality is enabled</description></property><property><name>hive.querylog.location</name><value>/tmp/querylog/</value><description>Location of Hive run time structured log file</description></property>
<property><name>hive.exec.scratchdir</name><value>/tmp/hive</value><description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description></property><property><name>hive.exec.local.scratchdir</name><value>/tmp/hive</value><description>Local scratch space for Hive jobs</description></property><property><name>hive.downloaded.resources.dir</name><value>/tmp/${hive.session.id}_resources</value><description>Temporary local directory for added resources in the remote file system.</description></property>

2.4.3,初始化metastore

连入mysql,创建hive数据库,初始化hive的metastor数据库如下

[root@master2 hive-1.2.2]# schematool -dbType mysql -initSchema
Metastore connection URL:    jdbc:mysql://172.16.0.5:3306/hive?createDatabaseIfNotExist=true&useSSL=false
Metastore Connection Driver :    com.mysql.jdbc.Driver
Metastore connection User:   root
Starting metastore schema initialization to 1.2.0
Initialization script hive-schema-1.2.0.mysql.sql
Initialization script completed
schemaTool completed

2.4.4,运行

执行hive

[root@master2 hive-1.2.2]# hive
Logging initialized using configuration in jar:file:/usr/hive-1.2.2/lib/hive-common-1.2.2.jar!/hive-log4j.properties
hive> >

创建库

hive> show databases;
OK
default
Time taken: 0.012 seconds, Fetched: 1 row(s)
hive> create database hive1;
OK
Time taken: 0.103 seconds

创建表

hive> use hive1;
OK
Time taken: 0.015 seconds
hive> create table test1(key string, value string);
OK
Time taken: 0.172 seconds
插入数据
hive> insert into test1 values ('weihao','27'),('yangtian','26');

查询

hive> select * from test1;
OK
weihao  27
yangtian    26
Time taken: 0.042 seconds, Fetched: 2 row(s)

load hdfs数据

创建文件test2

[root@master2 work]# cat test2
1001    weihao  18111111111
1002    zhangsan    18888888888
1003    lisi    17777777777
1004    wangwu  15555555555

上传hdfs

[root@master2 work]# hdfs dfs -copyFromLocal test2 /test2

创建表并加载数据

hive> create table test2(user_id bigint, username string, phone string) row format DELIMITED FIELDS TERMINATED BY '\t';
OK
Time taken: 0.335 seconds
hive> load data inpath 'hdfs://172.16.0.2:9000/test2' overwrite into table hive1.test2;
Loading data to table hive1.test2
Table hive1.test2 stats: [numFiles=1, numRows=0, totalSize=96, rawDataSize=0]
OK
Time taken: 0.443 seconds
hive> select * from hive1.test2;
OK
1001    weihao  18111111111
1002    zhangsan    18888888888
1003    lisi    17777777777
1004    wangwu  15555555555
Time taken: 0.286 seconds, Fetched: 4 row(s)

load本地数据,

load data命令后添加local表示从本地文件系统加载数据,load data可以添加overwrite命令标识是否覆盖源表。

hive> load data local inpath "/data/work/text" overwrite into table hive1.test1;
Loading data to table hive1.test1
Table hive1.test1 stats: [numFiles=1, totalSize=58]
OK
Time taken: 0.167 seconds
hive> select * from test1;
OK
zhangsan    26
lisi    13
wangwu  45
zhaoliu 25
lanal   45
fdsa    34
Time taken: 0.039 seconds, Fetched: 6 row(s)

(完)(^_^)

Hadoop(七)Hive基础相关推荐

  1. 基于Hadoop的数据仓库Hive 基础知识

    转载自:namelessml 原文链接:[完]基于Hadoop的数据仓库Hive 基础知识 Hive是基于Hadoop的数据仓库工具,可对存储在HDFS上的文件中的数据集进行数据整理.特殊查询和分析处 ...

  2. 大数据开发基础入门与项目实战(三)Hadoop核心及生态圈技术栈之3.数据仓库工具Hive基础

    文章目录 1.Hive概述 (1)数仓工具Hive的产生背景 (2)数仓工具Hive与RDBMS对比 (3)数仓工具Hive的优缺点 (4)数仓工具Hive的架构原理 2.Hive安装与配置 (1)安 ...

  3. [转]大数据环境搭建步骤详解(Hadoop,Hive,Zookeeper,Kafka,Flume,Hbase,Spark等安装与配置)

    大数据环境安装和配置(Hadoop2.7.7,Hive2.3.4,Zookeeper3.4.10,Kafka2.1.0,Flume1.8.0,Hbase2.1.1,Spark2.4.0等) 系统说明 ...

  4. Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建五(Hive篇)

    Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建五(Hive篇) 七.Hive安装配置 1.准备工作 2.安装hive 全文请看:https://blog.csd ...

  5. Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建

    Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建 一.虚拟机安装Centos7 1.准备工作 2.centos7安装过程 3.关闭防火墙(关键) 二.安装jdk ...

  6. Hive 基础-进阶

    HIVE基础 1,安装:基于hadoop之上,先安装hadoop,安装在另外一篇博客有详细讲到. 2,hive的管理:cli方式,web界面方式 cli方式:直接输入#hive --service c ...

  7. 通俗易懂讲解RPC、SpringCloud、Dubbo、Zookeeper、Hadoop、hive等概念的区别

    文章目录 1. RPC 2. Hadoop 3. hive 4. SpringCloud和Dubbo 5. Zookeeper 6. 总结 1. RPC RPC是一个远程调用的技术方式,其可以通过HT ...

  8. 学习hadoop需要具备基础知识

    学习hadoop需要具备基础知识 首先整体上了解Hadoop,包括hadoop是什么,能够做什么,使用场景等,不需要考虑细节问题.在有了整体上的了解后,就开始准备系统地学习hadoop.建议:勿一味学 ...

  9. 学hadoop需要什么基础

    最近一段时间一直在接触关于hadoop方面的内容,从刚接触时的一片空白,到现在也能够说清楚一些问题.这中间到底经历过什么只怕也就是只有经过的人才会体会到吧.前几天看到有个人问"学hadoop ...

最新文章

  1. .net项目发布到本地IIS
  2. Linux系统编程——线程私有数据
  3. 使用超图在网页上浏览地形
  4. JAVA_OA(六):SpringMVC处理异常
  5. 京东五星电器送扫地机器人_家电也流行“套餐”,京东五星电器吹响国庆家装“集结号”...
  6. 从中师到博士,我的22年...
  7. html文件怎么导出stl文件,3D建模软件导出STL文件的小技巧(一)
  8. 2020年互联网人年终模板,是你在找的吗?
  9. shell中encoding=utf-8_如何在Linux中将文件转换为UTF-8编码
  10. [除草]BZOJ 1435 [ZJOI2009]多米诺骨牌
  11. SSH项目搭建-02-配置文件
  12. windows10下Qt安装及OpenCV配置
  13. 单片机零基础入门(8-5)模块化编程
  14. java jdom_Java JDOM解析器
  15. 小麦积分墙:如何更好的使用积分墙
  16. 数据库系统概念 - 数据模型,关系模型,关系,候选码,主码,外码
  17. TCP/IP sysctl命令参数
  18. shell 语句出错自动退出
  19. Fabric.js 图形标注
  20. 室内污染,美博士帮你搞定“甲醛君”

热门文章

  1. [面试]如何写testcase?
  2. Windows phone 7应用之代码性能分析工具——Profile.
  3. windows进入后自动注销处理
  4. 《超级女声》新增 9月4日 娱乐无极限 回顾超女专辑(都是超女) [共39G的精品]
  5. popstate_详解HTML5之pushstate、popstate操作history,无刷新改变当前url
  6. php 后期发展,php – 通过后期处理上传进度
  7. restful api例子php,如何通过PHP访问RESTful API
  8. 使用android开发移动学习平台_移动学习平台有几种开发方法,你造吗?
  9. 设计灵感|见过如此吸睛的,单色调Banner设计么?
  10. 灵感|APP夜间模式如何设计?