Hive简介与安装及语法
2017-05-22 15:54
567 查看
Hive简介
Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 QL ,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。Hive 上的数据不能直接update,需要先下载,再修改,再上传。它依赖hdfs和yarn。
Hive可以理解成SQL的解析引擎,将SQL语句,解析成Mapreduce任务。
Hive的表对应的就是HDFS的目录/文件夹,默认在user/warehouse 目录下。
Hive的元数据(数据的描述信息,比如有哪些表,这些表有哪些字段,以及这些表对应的目录存在hdfs上的具体位置)一般存储在关系型数据库中,默认是derby但是有很大的缺陷,不能同时支持多个用户访问,以及不能高并发。一般我们需要使用MySql作为它的元数据的存储。
Hive一般有三个对外的接口,CLI(命令行)、webGUI 、还有JDBC/ODBC(支持多语言)
Hive的安装
现有六台主机,每个主机上需要运行的进程如下主机名 IP 安装的软件 运行的进程
itcast01 192.168.1.201 jdk、hadoop NameNode、DFSZKFailoverController
itcast02 192.168.1.202 jdk、hadoop NameNode、DFSZKFailoverController
itcast03 192.168.1.203 jdk、hadoop ResourceManager
itcast04 192.168.1.204 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
itcast05 192.168.1.205 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
itcast06 192.168.1.206 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
以上可以看出,hdfs在01和02上,其中有一台处于standby状态,zk是04、05、06三台服务器。yarn运行在服务器03上。01或02管理hdfs上的数据,真正的数据再datanode(04、05、06)上。
1、启动04、05、06上的zk。
./zkServer.sh start
2、01上启动hdfs。(bin目录下)
./start.dfs.sh
3、03上启动yarn
./start-yarn.sh
4、安装hive。
将hive的安装包安装在其中的任意一台服务器上均可。
4.1、tar -zxvf apache-hive(压缩包名) -C /itcast/(解压存放目录)
4.2、可能需要修改解压后hive文件的所属用户和用户组,如不需要,可跳过。
chown -R root:root apahe-hive(解压后的名称)
4.3、修改配置文件,在hive的conf目录下,
1、重命名:mv hive-default.xml.template hive-site.xml
2、修改配置文件信息,如下:
<property> //配置mysql在哪台机器上 数据库不存在是否创建. <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop00: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>123</value> <description>password to use against metastore database</description> </property>
注意要将mysql的驱动jar包拷贝到hive的lib目录下,mysql数据库允许远程连接,并且授权,
如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql -uroot -p
#(执行下面的语句 .:所有库下的所有表 %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
此时hive的安装就完成了。
hive语法
进入hive shell执行
create table people(id int,name string)
这是一个创建people表的命令,当执行这条语句时,干了哪些事情?
在元数据库mysql中保存了表people的元数据信息,并且在hdfs上创建了一个people的文件夹。
语法(和mysql的语法类似)
show databases
use database
create table student (id int,name string) row format delimited fields terminated by ‘\t’;
show tables;
show create table student;
将本地数据加载到hive表中(root目录下有student文本),去掉local是从hdfs上加载数据
load data local inpath ‘/root/student.txt’ into table student;
select * from student(并不转化为mapreduce,因为只需返回总数即可)
select count(*) from student (转化为mapreduce,因为要计算)
select * from student order by id desc;
Hive框架的计算模型的延迟太高,并不适合实时的计算模型,
创建数据库时,在hdfs上生成以库名+db的文件夹。
create database itcast
注意:当我们刚开始用hive建一张表时,表的字段信息和表名信息保存在元数据库中,要计算的数据保存在hdfs中,默认的元数据库时derty(都会替换成mysql),默认产生metastore_db文件夹,元数据信息在此文件夹中
元数据信息是以怎样的方式保存在mysql中的?
进mysql数据库,在TBLS表中保存表名,表的字段信息保存在COLUMNS_VZ中,SDS中保存着表对应HDFS上的哪个目录。
外部表:先有数据,然后将数据指向所建的表。(以下命令均在hive shell 下运行)
1、hdfs上创建一个文件夹。
在hive shell 下执行
dfs -mkdir /data
2、将本地的数据put到hdfs上
dfs /root/student.txt /data/a.txt
以及
dfs /root/student.txt /data/b.txt
3、建一张表指向data目录
create external table ext_student (id int,name string) row format delimited fields terminated by ‘\t’ location ‘\data’;
select * from ext_student; (弱主键性质)
注意:这里只要将数据放到/data目录下就能查到。
分区表
1、建一个分区表(即是分区表也是外部表)
普通表和分区表区别:有大量数据增加的需要建分区表
create external table beauties (id bigint, name string) partitioned by (nation string) row format delimited fields terminated by '\t' location '/beauty' ;
注意:分区表下不能执行用hadoop shell put 的数据,否则这样会查不到,需要在hive命令下通知hive给mysql添加一条分区信息
dfs - put /root/b.txt /beauty/nation=China; //查不到。还需要执行下面语句才能查到
alter table beauties add partition (nation=’China’) location “/beauty/nation=China”;
相关文章推荐
- hive简介 安装 hivesql hive开发 性能优化
- Java学习笔记——MySQL的安装使用以及SQL语法简介
- hive的基本简介及安装、配置、使用(一)
- hive简介,安装 配置常见问题和例子
- sublime text3: markdown 安装及常用语法简介
- hive简介与安装
- Hive安装简介
- Sass简介,安装环境,Sass的语法格式及编译调试
- Hive 1.0.0简介与安装
- Hive的简介、安装配置
- Hive简介及安装
- 【SQL】MySQL的安装使用以及SQL语法简介
- hive简介以及安装配置
- 【转】 hive简介,安装 配置常见问题和例子
- 培训第一天,Java简介,JDK安装,环境配置及Java基础语法
- Hadoop之Hive简介与安装、测试(一)
- 大数据Hive的简介和安装_03_01
- Hive简介和安装
- 【转】hive简介安装 配置常见问题和例子
- MongoDB入门简介|MongoDB下载安装|MongoDB语法