Hadoop(七)Hive基础
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表,每一行包含以下列:
- timestmap,INT类型,对应于查看页面的Unix时间戳
- userId,BIGINT类型,对应于查看页面的用户
- page_url,String类型,页面的资源路径
- referer_url,String类型,用户到达当前页面的页面位置
- 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&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}/<username> 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基础相关推荐
- 基于Hadoop的数据仓库Hive 基础知识
转载自:namelessml 原文链接:[完]基于Hadoop的数据仓库Hive 基础知识 Hive是基于Hadoop的数据仓库工具,可对存储在HDFS上的文件中的数据集进行数据整理.特殊查询和分析处 ...
- 大数据开发基础入门与项目实战(三)Hadoop核心及生态圈技术栈之3.数据仓库工具Hive基础
文章目录 1.Hive概述 (1)数仓工具Hive的产生背景 (2)数仓工具Hive与RDBMS对比 (3)数仓工具Hive的优缺点 (4)数仓工具Hive的架构原理 2.Hive安装与配置 (1)安 ...
- [转]大数据环境搭建步骤详解(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等) 系统说明 ...
- Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建五(Hive篇)
Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建五(Hive篇) 七.Hive安装配置 1.准备工作 2.安装hive 全文请看:https://blog.csd ...
- Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建
Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建 一.虚拟机安装Centos7 1.准备工作 2.centos7安装过程 3.关闭防火墙(关键) 二.安装jdk ...
- Hive 基础-进阶
HIVE基础 1,安装:基于hadoop之上,先安装hadoop,安装在另外一篇博客有详细讲到. 2,hive的管理:cli方式,web界面方式 cli方式:直接输入#hive --service c ...
- 通俗易懂讲解RPC、SpringCloud、Dubbo、Zookeeper、Hadoop、hive等概念的区别
文章目录 1. RPC 2. Hadoop 3. hive 4. SpringCloud和Dubbo 5. Zookeeper 6. 总结 1. RPC RPC是一个远程调用的技术方式,其可以通过HT ...
- 学习hadoop需要具备基础知识
学习hadoop需要具备基础知识 首先整体上了解Hadoop,包括hadoop是什么,能够做什么,使用场景等,不需要考虑细节问题.在有了整体上的了解后,就开始准备系统地学习hadoop.建议:勿一味学 ...
- 学hadoop需要什么基础
最近一段时间一直在接触关于hadoop方面的内容,从刚接触时的一片空白,到现在也能够说清楚一些问题.这中间到底经历过什么只怕也就是只有经过的人才会体会到吧.前几天看到有个人问"学hadoop ...
最新文章
- .net项目发布到本地IIS
- Linux系统编程——线程私有数据
- 使用超图在网页上浏览地形
- JAVA_OA(六):SpringMVC处理异常
- 京东五星电器送扫地机器人_家电也流行“套餐”,京东五星电器吹响国庆家装“集结号”...
- 从中师到博士,我的22年...
- html文件怎么导出stl文件,3D建模软件导出STL文件的小技巧(一)
- 2020年互联网人年终模板,是你在找的吗?
- shell中encoding=utf-8_如何在Linux中将文件转换为UTF-8编码
- [除草]BZOJ 1435 [ZJOI2009]多米诺骨牌
- SSH项目搭建-02-配置文件
- windows10下Qt安装及OpenCV配置
- 单片机零基础入门(8-5)模块化编程
- java jdom_Java JDOM解析器
- 小麦积分墙:如何更好的使用积分墙
- 数据库系统概念 - 数据模型,关系模型,关系,候选码,主码,外码
- TCP/IP sysctl命令参数
- shell 语句出错自动退出
- Fabric.js 图形标注
- 室内污染,美博士帮你搞定“甲醛君”
热门文章
- [面试]如何写testcase?
- Windows phone 7应用之代码性能分析工具——Profile.
- windows进入后自动注销处理
- 《超级女声》新增 9月4日 娱乐无极限 回顾超女专辑(都是超女) [共39G的精品]
- popstate_详解HTML5之pushstate、popstate操作history,无刷新改变当前url
- php 后期发展,php – 通过后期处理上传进度
- restful api例子php,如何通过PHP访问RESTful API
- 使用android开发移动学习平台_移动学习平台有几种开发方法,你造吗?
- 设计灵感|见过如此吸睛的,单色调Banner设计么?
- 灵感|APP夜间模式如何设计?