Hive编程,可以使开发者不需要考虑底层MapReduce算法如何实现,而只需集中精力关注SQL语句的编写即可。
Apache Hive 是建立在Hadoop上的数据仓库,它提供了一系列工具,可以用来查询和分析数据,Hive提供了执行SQL的接口,用于操作存储在Hadoop分布式文件系统HDFS中的数据。
Hive 可以将结构化的数据文件映射成为一张数据库表,并且提供了便捷的sql语句查询功能,开发者可以通过SQL语句将实现的业务功能转化为MapReduce任务来运行。
Hive 数据仓库是构建在Hadoop的分布式文件系统HDFS之上,而Hive底层的设计是通过MapReduce计算框架来执行用户提交的任务。 Hive比较适合处理离线数据。
部署Hive 分布式之前,先部署 Hadoop 分布式集群系统。 然后 hive 通过 haproxy + mysql 组成。
一,Hive 体系结构:
hive 体系结构由多个组件组成,其中包含元数据,驱动(包含编辑器,优化器,执行器),用户接口(client,UI,ThriftServer)。 Hive 体系结构如图:
1,元数据(metastore)
元数据通常存储在关系型数据库C RDBMS )中,如MySQL,元数据中包含了表名、表列、分区、表的类型(是否属于外部表〉和数据存储的路径等信息。
2,驱动(driver)
Hive 的驱动在接收到Hive SQL 语句后,通过创建会话来启动语旬的执行,并监控执行的生命周期和进度。同时,它会将Hive SQL 在执行过程中产生的元数据信息进行存储。
3, 编辑器
编译器对Hive SQL 查询进行编译,将其转化成可执行的计划,该计划包含了Hadoop
MapReduce 需要执行的任务和步骤。编译器将查询转换为抽象语法树CAS T )。
编译器在检查兼容性和编译时错误之后,将抽象语法树CAST )转换为有向无环图
( DAG ) 。有向无环图根据输入的查询和数据将操作符划分到Map Reduce 的各个阶段
( Stage )和任务( Task )中。
4,优化器
在执行计划上执行各种转换以获得优化的有向无环图( DAG ),如将连接管道转换成单个连接来获得更好的性能。
优化器还可以拆分任务,如在Reduce 操作之前对数据应用进行转换,以便提供更好的性能和可伸缩性。
5 . 执行器
在编译和优化之后,执行器将执行任务。它对Hadoop 的作业CJob )进行跟踪和交互,并调度需要运行的任务。
6. 用户接口
客户端( Client )在日常开发中用得较为频繁,启动Hive 终端会同时启动一个Hi ve 副本。用户可以使用JDBC C 或ODBC )客户端连接到Hi ve Server 。
&注意:连接到Hive Server 时, 需指定Hive Server 所在的节点信息,并且确保该节点的Hive Server 服务进程运行正常。Hive 的Thrift Server 支持多语言,如C++ 、Java 和Python 等。
& 提示: Hive 的数据存储依赖Hadoop 的分布式文件系统( HDFS ) , 在Hive 的查询任务中SELECT * FROM TBL 语句不会产生MapReduce 任务,其他带条件和聚合类
的查询都会启动MapRe duce 任务。
二, Hive 与关系型数据库(RDBMS):
数据仓库( Hive ) 和关系型数据库C RDBMS )虽然都是将数据进行结构化存储,但是二者之间的使用方式和应用场景还是有区别的。其异同点如表
三,Hive 的安装和配置;
在大数据应用场景下, 单个节点的Hive 是难以满足业务需求的。因而需要安装一个高可用、分布式的Hi ve 集群未满足用户提交的任务请求。
这里将Hive 安装在Hadoop 集群中,能够省略一些软件的安装如JDK 、Hadoop 。
3.1 Hive 集群基础架构
一个高可用、分布式的Hive 集群由3 个Hive节点(至少) 和2 个代理( HAProxy )构成。3个Hive 节点负责提交任务到集群上, 2 个代理(HAProxy, haproxy 可以使用keepalive自动切换)负责给客户端( Cli ent )提供服务并承担负载均衡的职责。
实际测试环境如下:
[hadoop@big-master2 ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
## bigdata cluster ##
192.168.41.20 big-master1 #bigdata1 namenode1,zookeeper,resourcemanager Haproxy-master
192.168.41.21 big-master2 #bigdata2 namenode2,zookeeper,slave,resourcemanager haproxy-standby
192.168.41.22 big-slave01 #bigdata3 datanode1,zookeeper,slave hive1
192.168.41.25 big-slave02 #bigdata4 datanode2,zookeeper,slave hive2
192.168.41.27 big-slave03 #bigdata5 datanode3,zookeeper,slave hive3
192.168.41.17 tidb05.500.com #hive mysql
----------------------------------------------------
3.2 Hive 集群的架构图:
备注: 所有的数据仓库Hive 节点的地址需要指向相同的hadoop 分布式文件系统(hdfs)上,否则,各个Hive节点的数据源地址不一致,会导致统计结果发生错误。
3.3 利用Haproxy 实现Hive server 负载均衡
Haproxy 是一款提供高可用性,负载均衡及基于TCP(第4层)和HTTP(第7层)应用的代理软件,Haproxy是完全开源免费的,它可以快速提供代理解决方案。这里haproxy 通过 master - standby 模式部署,分别在big-master1/2 节点上。 hive 分别在 hadoop 数据节点 big-slave01-3 三个节点上。 元数据信息 放在独立的mysql 数据库 上。
https://www.haproxy.org/ -- haproxy 官方网站
https://www.haproxy.org/download/ --haproxy下载地址
http://www.apache.org/dyn/closer.cgi/hive/ --hive官方网站
https://mirrors.tuna.tsinghua.edu.cn/apache/hive/ --hive下载地址
3.4 haproxy 安装编辑:
安装gcc组,安装openssl
tar -xvf haproxy-1.8.24.tar.gz -C /usr/local/ && cp haproxy-1.8* haproxy
主备一样:
[hadoop@big-master1 ~]$ haproxy -vv
HA-Proxy version 1.8.24 2020/02/15
Copyright 2000-2020 Willy Tarreau <willy@haproxy.org>
Build options :
TARGET = linux2628
CPU = generic
CC = gcc
CFLAGS = -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv -Wno-unused-label
OPTIONS = USE_LIBCRYPT=1 USE_CRYPT_H=1 USE_ZLIB=1 USE_OPENSSL=1 USE_PCRE=1
Default settings :
maxconn = 2000, bufsize = 16384, maxrewrite = 1024, maxpollevents = 200
Built with OpenSSL version : OpenSSL 1.0.2k-fips 26 Jan 2017
Running on OpenSSL version : OpenSSL 1.0.2k-fips 26 Jan 2017
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports : SSLv3 TLSv1.0 TLSv1.1 TLSv1.2
Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT IP_FREEBIND
Encrypted password suppor

最低0.47元/天 解锁文章
4756

被折叠的 条评论
为什么被折叠?



