一、Hadoop

狭义
Hadoop是最重要最基础的一个部分
广义
Hadoop生态圈
Hadoop、Hive、Sqoop、HBase…

处理如下业务:join/group by

二、hive产生的背景

基于Hadoop处理大数据存在的弊端:
面向MapReduce麻烦
RDBMS的需求

==> Hive的产生背景
MySQL/Oracle… 统计
先创建表:表名、列名、列类型… schema(元数据/metadata)
然后再使用SQL进行相应的业务统计分析

HDFS上的文件:文本格式
按照某个分隔符(\t):第一列是什么、第二列是什么

元数据 vs 源数据
源数据:HDFS上的文件
元数据:是描述数据的数据

三、Hive概述

hive.apache.org

The Apache Hive ™ data warehouse software facilitates
reading,
writing,
managing large datasets residing
in distributed storage (HDFS/S3)
using SQL

A command line tool
and JDBC driver are provided to connect users to Hive

Facebook开源,用于解决海量结构化的日志数据统计问题
构建在Hadoop(HDFS/MapReduce/YARN)之上的数据仓库
Hive的数据是存放在HDFS之上
Hive底层执行引擎:MapReduce/Tez/Spark
只需要通过一个参数就能够切换底层的执行引擎
Hive作业提交到YARN上运行
提供了HQL查询语言
和SQL类似,但不完全相同
所谓的大数据“云化”:是一个很大项目
适用于离线处理/批处理
HDFS上的数据:文本 压缩、列式存储

SQL on Hadoop:Hive/Presto/Impala/Spark SQL…

四、Hive的优缺点

优点:SQL
缺点:
如果底层引擎是基于MR,性能必然不高

五、Hive架构

用户接口层:黑窗口、JDBC
Driver/驱动器
SQL解析:SQL ==> AST(antlr)
查询优化:逻辑/物理执行计划
UDF/SerDes:
Execution:执行
元数据:表名、所属数据库、列(名/类型/index)、表类型、表数据所在目录

id,username,password,age

Hive的数据是存放在HDFS之上
Hive的数据分为两部分:数据 + 元数据

六、Hive和RDBMS的对比

相同点
SQL
事务
insert/update/delete Hive-0.14才支持
针对Hive数据仓库,写比较少的,批次加载数据到Hive然后进行统计分析
不同点
体量/集群规模
延迟/时性

七、部署

https://cwiki.apache.org/confluence/display/Hive/GettingStarted
前期工作

前置
JDK8
Hadoop2.x
Linux
MySQL

CDH-5.16.2
wget http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.16.2.tar.gz

安装

解压

[pxj@pxj31 /opt]$tar -zxvf hive-1.1.0-cdh5.16.2.tar.gz  -C /home/pxj/app/
#### 配置环境
[pxj@pxj31 /home/pxj]$vim .bashrc
export HIVE_HOME=/home/pxj/app/hive-1.1.0-cdh5.16.2
export PATH=${HIVE_HOME}/bin:$PATH
[pxj@pxj31 /home/pxj]$source .bashrc
[pxj@pxj31 /home/pxj]$which hive
~/app/hive-1.1.0-cdh5.16.2/bin/hive

修改配置文件

[pxj@pxj31 /home/pxj/app/hive-1.1.0-cdh5.16.2/conf]$vim 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:mysql://pxj31:3306/pxj31_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>lenovo</value></property><property><name>hive.cli.print.current.db</name><value>true</value></property><property><name>hive.cli.print.header</name><value>true</value></property>
</configuration>
[pxj@pxj31 /home/pxj/app/hive-1.1.0-cdh5.16.2/conf]$cp hive-env.sh.template  hive-env.sh
[pxj@pxj31 /home/pxj/app/hive-1.1.0-cdh5.16.2/conf]$vim hive-env.sh
HADOOP_HOME=/home/pxj/app/hadoop拷贝驱动[pxj@pxj31 /opt]$sudo mv mysql-connector-java-5.1.27-bin.jar ~/app/hive-1.1.0-cdh5.16.2/lib/

启动

[pxj@pxj31 /home/pxj/app/hive-1.1.0-cdh5.16.2/lib]$hive
which: no hbase in (/home/pxj/app/hive-1.1.0-cdh5.16.2/bin:/home/pxj/app/hadoop/bin:/home/pxj/app/hadoop/sbin:/usr/java/jdk1.8.0_121/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/pxj/.local/bin:/home/pxj/bin)
19/12/15 01:04:22 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicableLogging initialized using configuration in jar:file:/home/pxj/app/hive-1.1.0-cdh5.16.2/lib/hive-common-1.1.0-cdh5.16.2.jar!/hive-log4j.properties
WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
hive (default)> show databases;
OK
database_name
default
Time taken: 31.063 seconds, Fetched: 1 row(s)

八、创建表

hive (default)> create table stu(id int, name string, age int);
OK
Time taken: 4.357 seconds
hive (default)>

查看表结构的四种方法

hive (default)> desc stu;
OK
col_name    data_type   comment
id                      int
name                    string
age                     int
Time taken: 0.869 seconds, Fetched: 3 row(s)
hive (default)> desc extended stu;
OK
col_name    data_type   comment
id                      int
name                    string
age                     int                                         Detailed Table Information  Table(tableName:stu, dbName:default, owner:pxj, createTime:1576343220, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:id, type:int, comment:null), FieldSchema(name:name, type:string, comment:null), FieldSchema(name:age, type:int, comment:null)], location:hdfs://pxj31:9000/user/hive/warehouse/stu, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}, skewedInfo:SkewedInfo(skewedColNames:[], skewedColValues:[], skewedColValueLocationMaps:{}), storedAsSubDirectories:false), partitionKeys:[], parameters:{transient_lastDdlTime=1576343220}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE, ownerType:USER)
Time taken: 0.081 seconds, Fetched: 5 row(s)
hive (default)> desc formatted stu;
OK
col_name    data_type   comment
col_name              data_type               comment             id                      int
name                    string
age                     int                                         Detailed Table Information
Database:               default
OwnerType:              USER
Owner:                  pxj
CreateTime:             Sun Dec 15 01:07:00 CST 2019
LastAccessTime:         UNKNOWN
Protect Mode:           None
Retention:              0
Location:               hdfs://pxj31:9000/user/hive/warehouse/stu
Table Type:             MANAGED_TABLE
Table Parameters:        transient_lastDdlTime   1576343220          Storage Information
SerDe Library:          org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
InputFormat:            org.apache.hadoop.mapred.TextInputFormat
OutputFormat:           org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
Compressed:             No
Num Buckets:            -1
Bucket Columns:         []
Sort Columns:           []
Storage Desc Params:         serialization.format    1
Time taken: 0.388 seconds, Fetched: 29 row(s)
hive (default)> show create table stu;
OK
createtab_stmt
CREATE TABLE `stu`(`id` int, `name` string, `age` int)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION'hdfs://pxj31:9000/user/hive/warehouse/stu'
TBLPROPERTIES ('transient_lastDdlTime'='1576343220')
Time taken: 0.986 seconds, Fetched: 14 row(s)

插入数据

insert into stu values(1,'pk',30);

查询数据

hive (default)> select * from stu;
OK
stu.id  stu.name    stu.age
1   pk  30
Time taken: 0.336 seconds, Fetched: 1 row(s)

所在的目录

hdfs://pxj31:9000/user/hive/warehouse/stu
hive.metastore.warehouse.dir:/user/hive/warehouse
stu:表的名字
表的完整路径是: ${hive.metastore.warehouse.dir}/tablename

九、Hive的完整执行日志:

cd HIVEHOMEcphive−log4j.properties.templatehive−log4j.propertieshive.log.dir=HIVE_HOME cp hive-log4j.properties.template hive-log4j.properties hive.log.dir=HIVEH​OMEcphive−log4j.properties.templatehive−log4j.propertieshive.log.dir={java.io.tmpdir}/${user.name}
hive.log.file=hive.log

java.io.tmpdir/{java.io.tmpdir}/java.io.tmpdir/{user.name}/${hive.log.file}
/tmp/hadoop/hive.log

十、Hive配置属性

全局:$HIVE_HOME/hive-site.xml中
临时/当前session:仅对当前session生效
查看当前的属性:set key;
修改当前的属性:set key=value;
hive -hiveconf hive.cli.print.current.db=true

十一、Hive中交互式命令

-e:不需要进入hive命令后,就可以跟上sql语句查询
-f:执行指定文件(内容是SQL语句)

拓展:基于Hive的离线统计/数据仓库
把SQL封装到shell脚本中去,使用hive -e “query sql…”
定时调度:crontab

十二、Hive中的数据抽象

Hive中的表(stu)必须要归属于某个数据库(default)
Database
包含了0到N张表
每个db对应HDFS上的一个文件夹
default==>/user/hive/warehouse

十三、创建数据库

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, …)];

CREATE DATABASE IF NOT EXISTS ruozedata_hive;

自己创建的Hive数据库的存放目录规则:
${hive.metastore.warehouse.dir}/dbname.db
/user/hive/warehouse/pxj_hive.db

CREATE DATABASE IF NOT EXISTS pxj_data LOCATION '/pxj/directory'    ;
hive (default)> dfs -ls /pxj> ;
Found 1 items
drwxr-xr-x   - pxj supergroup          0 2019-12-15 01:19 /pxj/directory
hive (default)>
hive (default)> CREATE DATABASE IF NOT EXISTS pxj_data LOCATION '/pxj/directory'> ;
OK
Time taken: 0.144 seconds
hive (default)> dfs -ls /pxj> ;
Found 1 items
drwxr-xr-x   - pxj supergroup          0 2019-12-15 01:19 /pxj/directory
hive (default)>  CREATE DATABASE IF NOT EXISTS pxj_hive3 COMMENT 'this is pxj database' WITH DBPROPERTIES('creator'='pk', 'date'='9012-12-30');;
OK
Time taken: 0.069 seconds

十四、删除数据库

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
hive (default)> drop database pxj_data;
OK
Time taken: 0.911 seconds
hive (default)> drop database pxj_hive3;
OK
Time taken: 0.212 seconds

慎用:强制性删除数据库需要使用cascade关键字;
CASCADE(了解即可,慎用): one2many == 1 db 对 多 table

十五、基本数据类型

HDFS上的文件来说:string
数值类型:int bigint float double decimal
字符串类型:string 90%
布尔类型:boolean: true/false
日期类型:date timestamp …

分隔符
delimiter code
^A \001 字段之间的分隔符
\n \n 记录分隔符
^B \002 ARRAY/STRUCT (Hive中的复杂数据类型)
^C \003 key/value of MAP (Hive中的复杂数据类型)

1,pk,30
1$$$pkpkpk$$$30

create table stu2(id int, name string, age int) row format delimited fields terminated by ‘,’;
insert into stu2 values(1,‘pk’,30);
把/user/hive/warehouse/stu/000000_0下载到本地,查看数据的内容。

hive的搭建及其入门一相关推荐

  1. hive环境搭建提示: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument

    hive环境搭建提示: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument SLF4J: A ...

  2. java mvc 小程序_[Java教程]Spring MVC 的环境搭建和入门小程序

    [Java教程]Spring MVC 的环境搭建和入门小程序 0 2017-02-17 00:00:16 1.1.下载spring框架包. 1.1.1百度搜索Spring Framework. 进入s ...

  3. 将xscj指定为当前数据库_通过网络连接数据库模式Hive的搭建过程详解

    最近在搭建通过网络直接连接数据库模式的Hive时总是在启动的时候报各种错误,所以今天,我们来总结一下这种模式的Hive的搭建过程. [数据库安装] 安装mysql yum install mysql- ...

  4. Hive篇--搭建Hive集群

    一.前述 Hive中搭建分为三中方式 a)内嵌Derby方式 b)Local方式 c)Remote方式 三种方式归根到底就是元数据的存储位置不一样. 二.具体实现 a)内嵌Derby方式 使用derb ...

  5. 启动hive报错_远程服务器模式Hive的搭建过程详解

    昨天总结了一下Hive通过网络连接数据库模式的搭建过程,今天我来总结一下另外一种模式-远程服务器模式Hive的搭建过程. 首先,我们来看一下机器如何分配: 在集群中,我们准备四台虚拟机,node001 ...

  6. Hive环境搭建--轻量级安装so easy!

    Hive环境搭建 一.准备工作 1.安装包下载 2.虚拟机需先安装好hadoop 3.安装mysql 二.安装hive 三.配置环境变量 1.配置环境变量 2.修改hive配置文件 四.启动hive ...

  7. [Python人工智能] 十六.Keras环境搭建、入门基础及回归神经网络案例

    从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章详细讲解了无监督学习Autoencoder的原理知识,然后用MNIST手写数字案例进行对比实验及聚类分析.这篇文章 ...

  8. Hadoop+hive+flask+echarts大数据可视化项目之hive环境搭建与系统数据的分析思路

    Hadoop+hive+flask+echarts大数据可视化项目(四) --------------hive环境搭建与系统数据的分析思路---------------- 关注过Hadoop+hive ...

  9. 小白玩大数据日志分析系统经典入门实操篇FileBeat+ElasticSearch+Kibana 实时日志系统搭建从入门到放弃

    大数据实时日志系统搭建 距离全链路跟踪分析系统第二个迭代已经有一小阵子了,由于在项目中主要在写ES查询\Storm Bolt逻辑,都没有去搭建实时日志分析系统,全链路跟踪分析系统采用的开源产品组合为F ...

最新文章

  1. 【Codeforces】913C Party Lemonade (贪...)。
  2. 搭建JAVA可视化开发环境
  3. Linux环境:NFS--网络文件系统部署
  4. 【Linux】一步一步学Linux——host命令(162)
  5. java线程基础知识
  6. CSS之七个高度有效的媒体查询技巧
  7. 学习ecshop 教程网址
  8. 为Openstack制作CentOS7镜像
  9. webstorm两个文件比对_webstorm怎么更改文件名称?或者是重命名
  10. [原创]经典软件测试技术分类
  11. tl wn322g linux驱动下载,tplink wn322g+驱动官方下载
  12. wps文档设置页眉左右(奇偶页)不同内容
  13. 论“黄海和渤海开凿人工运河的分析”(最新)
  14. 字长是指计算机什么之间,字长是指计算机()之间一次能够传递的数据位,位宽是CPU通过外据总线与()之 - 问答库...
  15. 故宫景点功课3:太和殿院落上
  16. 我的世界java边境之地_我的世界边境之地怎么去?minecraft边境之地
  17. AC日记——整理药名 openjudge 1.7 15
  18. UCOSIII从官网(2021)下载
  19. vue——VM对象和基础指令
  20. java图像处理--形态学填充处理imfill

热门文章

  1. att格式汇编指令_ATT汇编语法简介
  2. 我的理想计算机软件设计师,我的理想设计师
  3. Python 常见单词-集合
  4. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.my.mapper.UserM
  5. JS中的批量替换---.replace(/\/g,@);
  6. 智能小区java_java毕业设计_springboot框架的模式下的智能小区规划系统
  7. 何为非侵入式负荷监测-目标检测
  8. 2021-04-15 测试面试题
  9. 《SEM运营36计》第7计:无中生有
  10. 怒江java培训班_智慧树知到答案Java项目实战(黑龙江联盟)查题公众号