【Hive】Hive介绍及Hive环境搭建

1、Hive简介
      Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能。Hive是由Facebook开源用于解决海量结构化日志的数据统计的工具。
      在Hadoop生态系统中,HDFS用于存储数据,Yarn用于资源管理,MapReduce用于数据处理,而Hive是构建在Hadoop之上的数据仓库,包括以下方面:
      (1)使用HQL作为查询接口;
      (2)使用HDFS存储;
      (3)使用MapReduce计算;
      (4)执行程序运行在Yarn上。
      Hive的本质是:将HQL转化成MapReduce程序,其灵活性和扩展性比较好,支持UDF,自定义存储格式等;适合离线数据处理。
2、Hive在生态系统中的位置
【Hive】Hive介绍及Hive环境搭建
Hive 架构
【Hive】Hive介绍及Hive环境搭建
3、Hive组件
(1)用户接口:Client CLI(hive shell)、JDBC/ODBC(java访问hive),WEBUI(浏览器访问hive)。
(2)Metastore 元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/ 分区字段、表的类型(是否是外部表)、表的数据所在目录等。默认存储在自带的derby数据库中,推荐使用采用MySQL存储Metastore。
(3)Hadoop组件:使用HDFS进行存储,使用MapReduce进行计算。
(4)驱动器:Driver 包含:解析器、编译器、优化器、执行器。
(5)解析器:将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工 具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否 存在、SQL语义是否有误(比如select中被判定为聚合的字段在group by中是否有出现)。
(6)编译器:将AST编译生成逻辑执行计划。
(7)优化器:对逻辑执行计划进行优化。
(8)执行器:把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/TEZ/Spark。
4、Hive优点与使用场景
优点:
(1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手);
(2)避免了去写MapReduce,减少开发人员的学习成本;
(3)统一的元数据管理,可与impala/spark等共享元数据;
(4)易扩展(HDFS+MapReduce:可以扩展集群规模;支持自定义函数);
(5)数据的离线处理;比如:日志分析,海量结构化数据离线分析。
使用场景:
(1)Hive的执行延迟比较高,因此hive常用于数据分析的,对实时性要求 不高的场合;
(2)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执 行延迟比较高。
5、Hive相关网站
官网:http://hive.apache.org
文档:https://cwiki.apache.org/confluence/display/Hive/GettingStarted
           https://cwiki.apache.org/confluence/display/Hive/Home
下载:http://archive.apache.org/dist/hive
           https://github.com/apache/hive
6、Hive安装步骤
(1)解压hive文件:
$ tar -zxf apache-hive-0.13.1-bin.tar.gz -C /opt/modules/
modules]$ mv apache-hive-0.13.1-bin/ hive-0.13.1
modules]$ cd hive-0.13.1/conf
conf]$ cp hive-env.sh.template hive-env.sh
(2)编辑配置文件/opt/modules/hive-0.13.1/conf/hive-env.sh
HADOOP_HOME=/opt/modules/hadoop-2.5.0
export HIVE_CONF_DIR=/opt/modules/hive-0.13.1/conf
(3)启动namenode、datanode、resourcemanager、nodemanager、historyserver。
(4)在HDFS上创建目录/tmp和/user/hive/warehouse
[[email protected] hadoop-2.5.0]$ bin/hdfs dfs -ls -R / drwx------ - beifeng supergroup 0 2018-02-08 02:38 /tmp
hadoop-2.5.0]$ bin/hdfs dfs -mkdir -p /user/hive/warehouse
hadoop-2.5.0]$ bin/hdfs dfs -chmod g+x /tmp
hadoop-2.5.0]$ bin/hdfs dfs -chmod g+x /user/hive/warehouse
(5)进入hive编辑模式,输入HiveQL语言执行
hadoop-2.5.0]$ cd ../hive-0.13.1/
hive-0.13.1]$ bin/hive
Hive命令如下:
hive> show databases;
hive> use default;
hive> show tables;
hive> create table bf_log(ip string, user string, requesturl string);
hive> show tables;
hive> desc bf_log;
hive> select * from bf_log;
hive> select count(*) from bf_log;
hive> select * from bf_log limit 10 ;
hive> select substring(ip,0,4) ip_prefix from bg_log ;
hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
hive> load data local inpath '/opt/datas/student.txt' into table student;
hive> select * from student;
hive> select id from student;