HIve的概念,发展,历史,部署,入门,加载数据

Hive – 天天会用到的hive

#产生背景

MapReduce编程不方便:开发、测试、需求变更

传统关系型数据库人员的需要   
           关系型数据库:是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据
                                     标准数据查询语言SQL就是一种基于关系数据库的语言
DBA:我就像使用sql一样的方式来处理分析大数据
==> Hive的产生 
文件存放在HDFS之上的,那么如果你想使用SQL去处理它,需要一个什么前提?
          HDFS 上面文件都是文本 想办法转化数据  创建一张表,每张表的字段跟hdfs文本对应
	结构化、文件映射成表格 ==> Schema用它来说实现  元数据信息(metastore) 

Hive是什么:

官网:hive.apache.org
data warehouse 数据仓库
The Apache Hive ™ data warehouse(仓库) software facilitates(促进) reading, writing, and managing large datasets residing(住) in distributed(分布式的) storage using SQL
使用sql对大的数据集分布式读和写的处理,

分布式存储:HDFS、S3、OSS
hdfs://xxxxxxx
s3://.....

Facebook开源:最开始是解决海量结构化日志的数据 pv uv用来处理日志的额,每天访问多少ip
构建在Hadoop之上的数据仓库,
Hive定义了SQL语言:HQL  (类SQL)
hadoop适合通常用于离线处理,所以hive也适合离线处理
SQL =====Hive=====MapReduce/Spark/Tez===>YARN
                                                     hive执行引擎
Hive on MapReduce
Hive on Spark  写个sql语句经过hive框架翻译成spark上作业
Hive on Tez

Hive发展历程

08/07  07年8月  Facebook
05/13   13年5月  0.11  Stinger Phase 1 ORC列式存储  HiveServer2把hive提起来,相当于一个客户端就可以连接起来                                                Stinger计划 
10/13                  0.12  Stinger Phase 2 ORC improvement  性能改进
04/14                  0.13  Stinger Phase 3 Tez and Vectorized query engine 向量化查询引擎
11/14                  0.14  Stinger.next Phase 1: Cost-based optimizer   优化 

面试 为什么要使用Hive
1) SQL方便写 简单容易
2) Hadoop 能够操作大规模数据集 ,如果不够就加机器,
3) MetaStore: Pig/Impala/Presto/SparkSQL 共享元数据信息 MetaStore 是数据库

hive 部署架构

视频6多看看
Hadoop 分布式 集群
Hive 仅仅只是客户端而已
sql 客户端 到hive 提交到hadoop集群的RM 上
元数据信息的存储就是使用mysql的
生产上一定要部署2mysql 防止挂掉,没有元数据了 ,

Hive与RDBMS的关系

相同点:都是用SQL    Hive QL和SQL的关系:两者没有任何关系,只是语法相似而已
实时性 RDBMS发出一个数据,会马上出现    hive是实时性很差
事务     大数据里面的事务 特别是这种离线处理就是鸡肋,没有什么意义 工作当中不用考虑用hive sql去处理事务
分布式hive支持分布式                              
数据量 hive支持大量的

Hive部署

视频8
查找 chd版本 搜索hadoop-2.6.0-cdh5.7.0
下载:http://archive-primary.cloudera.com/cdh5/cdh/5/
在使用CDH版本的时候一定要注意:尾巴对准了
hadoop采用5.7.0 所以hive也采用5.7.0
wget http://archive-primary.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz

解压:tar -xzvf hive-1.1.0-cdh5.7.0.tar.gz -C ~/app/
配置环境变量: ~/.bash_profile
	export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0
	export PATH=$HIVE_HOME/bin:$PATH
生效: source ~/.bash_profile
Hive配置:$HIVE_HOME/conf
	hive-env.sh
		HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
	hive-site.xml配置的就是MySQL的相关信息  hive这里面也要配置mysql的信息
	
<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://localhost:3306/ruoze_d5?createDatabaseIfNotExist=true&amp;useUnicode=true&characterEncoding=UTF-8</value>
</property>                                                                这里是hive字符集更改

<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>root</value>
</property>

我们要hive连接mysql 所以 拷贝mysql驱动到$HIVE_HOME/lib

[hadoop@hadoop001 ~]$ cd software
[hadoop@hadoop001 software]$ ll
total 852
-rw-r--r-- 1 hadoop hadoop 872300 Nov 19 20:06 mysql-connector-java-5.1.27.jar

cp一份就可以了 到$HIVE_HOME/lib

可能遇到的问题:mysql赋权

启动hive
bin下面 ./hive

快速入门

hive > create table ruoze_helloworld(id int,name string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’;
hdfs上的文件是有字段的分隔符,所以你创建的内容一定要与hdfs的内容关联上,
这里会挂,为什么怎么办
先看日志
我们要考虑一下mysql里面的数据集对不对

alter database ruoze_d5 character set latin1;

去mysql更改一下
进入mysql
use切换到数据库
把这个贴过来更改一下alter database ruoze_d5 character set latin1;
在重新
hive > create table ruoze_helloworld(id int,name string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’;
就可以了ok

加载数据
load data local inpath ‘/home/hadoop/data/helloworld.txt’ overwrite into table ruoze_helloworld;
加载数据从本地 local指机器 去掉的话就是hdfs 文件的pwd 路径 重新写到那张表
select * from ruoze_helloworld;
select count(1)from ruoze_helloworld;
看外部界面8088 之前要把yarn启动 jps
这个select语句,hive就把提交到yarn上运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值