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

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/80112309

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 架构

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 [beifeng@hadoop-senior 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;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券