Hive部署
1.上传tar包
2.解压
tar -zxvf hive-1.2.1.tar.gz
3.安装mysql数据库
推荐yum 在线安装(运行脚本安装)
4.配置hive
(a)配置HIVE_HOME环境变量
vi conf/hive-env.sh
配置其中的$hadoop_home
(b)配置元数据库信息
vi hive-site.xml
添加如下内容:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</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>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>root</value>
<description>password to use against metastore database</description>
</property>
</configuration>
5.安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql -uroot -p
设置密码
set password=password('root');
#(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
通过mysql -uroot -proot
- Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的
6.1、 cp hive/lib/jline-2.12.jar /opt/software/hadoop-2.6.4/share/hadoop/yarn/lib/
6.2、装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
Hive的产生:
非java编程者对hdfs的数据做mapreduce操作.
Hive只是一个工具, 一个用来构建数据仓库的工具. Hive底层还是基于HDFS和MapReduce来实现功能的.
Hive 简介
Hive : 数据仓库。
Hive:解释器,编译器,优化器等。
Hive 运行时,元数据存储在关系型数据库里面。
Hive 处理流程
Hive架构
Hive的架构
(1)用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 WUI是通过浏览器访问Hive。
(2)Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
(3)解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。
(4)Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(包含*的查询,比如select * from tbl不会生成MapRedcue任
编译器将一个Hive SQL转换操作符
操作符是Hive的最小的处理单元
每个操作符代表HDFS的一个操作或者一道MapReduce作业
2.数据库的链接
(1)直接进数据库
(2)外部方式–navicat
2.1外部连接方式
CLI
web
jdbc
3.hive的元数据存放位置
3.1derby —hive内部的数据库 不能多用户同时访问
3.2本地
3.3存放在外部数据库 (安全)
HiveSQL
1.数据库的创建
数据库创建的就是内部的表格
(1)内部表
CREATE TABLE [IF NOT EXISTS] table_name
删除表时,元数据与数据都会被删除
(2)外部表
CREATE EXTERNAL TABLE [IF NOT EXISTS] table_name LOCATION hdfs_path
删除外部表只删除metastore的元数据,不删除hdfs中的表数据
(3)分区表
(4)分桶表
2.Hive 建表
CREATE TABLE person(
id INT,
name STRING,
age INT,
likes ARRAY,
address MAP<STRING,STRING>
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘,’
COLLECTION ITEMS TERMINATED BY ‘-’
MAP KEYS TERMINATED BY ‘:’
LINES TERMINATED BY ‘\n’;
3. Hive 查看表描述
DESCRIBE [EXTENDED|FORMATTED] table_name