Hive运行架构及配置部署

Hive 运行架构

由Facebook开源,最初用于解决海量结构化的日志数据统计问题:ETL工具;

构建于Hadoop的HDFS和MapReduce智商,用于管理和查询结构化/非结构化数据的数据仓库;

设计目的是让SQL技能良好,但Java技能较弱的分析师可以查询海量数据:

使用HQL作为查询接口;

使用HDFS作为存储底层;

使用MapReduce作为执行层;

2008年facebook把Hive项目贡献给Apache;

1、Hive的缺点

Hive的HQL表达能力有限:有些复杂运算用HQL不易表达;

Hive效率低:Hive自动生成MR作业,通常不够智能;HQL调优困难,粒度较粗;可控性差;

2、Hive系统架构

1) 元数据存储(Metastore):Hive的数据由两部分组成:数据文件和元数据;

元数据存储,Derby只能用于一个Hive连接,一般存储在MySQL。

2)驱动(Driver):编译器、优化器、执行器;

用户通过下面的接口提交Hive给Driver,由Driver进行HQL语句解析,此时从Metastore中获取表的信息,先生成逻辑计划,再生成物理计划,再由Executor生成Job交给Hadoop运行,然后由Driver将结果返回给用户。

编译器(Hive的核心):1,语义解析器(ParseDriver),将查询字符串转换成解析树表达式;2,语法解析器(SemanticAnalyzer),将解析树转换成基于语句块的内部查询表达式;3,逻辑计划生成器(Logical Plan Generator),将内部查询表达式转换为逻辑计划,这些计划由逻辑操作树组成,操作符是Hive的最小处理单元,每个操作符处理代表一道HDFS操作或者是MR作业;4,查询计划生成器(QueryPlan
Generator),将逻辑计划转化成物理计划(MR Job)。

优化器:优化器是一个演化组件,当前它的规则是:列修剪,谓词下压。

执行器:编译器将操作树切分成一个Job链(DAG),执行器会顺序执行其中所有的Job;如果Task链不存在依赖关系,可以采用并发执行的方式进行Job的执行。

3)接口:CLI(Common LineInterface)、HWI(Hive WebInterface)、ThriftServer;

CLI:为命令行工具,默认服务。bin/hive或bin/hive--service cli;

HWI:为Web接口,可以用过浏览器访问Hive,默认端口9999,启动方式为bin/hive --service hwi;

ThriftServer:通过Thrift对外提供服务,默认端口是10000,启动方式为bin/hive --service hiveserver;

4)其他服务(bin/hive --service -help):metastore(bin/hive --service metastore)、hiveserver2(bin/hive --service hiveserver2),HiveServer2是HieServer改进版本,它提供给新的ThriftAPI来处理JDBC或者ODBC客户端,进行Kerberos身份验证,多个客户端并发,HS2还提供了新的CLI:BeeLine,是Hive
0.11引入的新的交互式CLI,基于SQLLine,可以作为Hive JDBC Client 端访问HievServer2,启动一个beeline就是维护了一个session.

5)Hadoop:用HDFS进行存储,用MapReduce进行计算;

表中的一个Partition对应表下的一个子目录,每一个Bucket对应一个文件;Hive的默认数据仓库目录是/user/hive/warehouse,在hive-site.xml中由hive.metastore.warehouse.dir项定义;

3、Hive的运行过程

由客户端提供查询语句,提交给Hive,Hive再交给Driver处理(1,Compiler先编译,编译时要从Metastore中获取元数据信息,生成逻辑计划;2,生成物理计划;3,由Driver进行优化;4,Executor执行时对物理计划再进行分解成Job,并将这些Job提交给MR的JobTracker运行,提交Job的同时,还需要提取元数据信息关联具体的数据,这些元数据信息送到NN),JT拆分成各个Task进行计算,并将结果返回或写入HDFS。

4、Hive的数据模型

Database

Table

Partition

Bucket

File(文件格式:TextFile,RCFile,),

数据类型,Numeric(Tinyint,Smallint,Bigint,Float,Double,Decimal(Hive 0.13.0可以自定义精度进行扩展)),Date/Time(TIMESTAMP,DATE(0.12.0支持)),String(STRING,VARCHAR(0.12),CHAR(0.13)),Misc(BOLLEAN,BINARY),Complex(ARRAY、MAP、STRUCT、UNIONTYPE)

 Hive 0.13的配置与部署

使用版本:Hive 0.13.1

1、Metastore(MySQL作为元数据存储,安装于Master1节点,前提是MySQL的访问权限需要设置好。)

1)解压

tar zxf apache-hive-0.13.1-bin.tar.gz

mv apache-hive-0.13.1-bin /usr/hive013

vim /etc/profile加入

export HIVE_HOME=/usr/hive013

PATH=$HIVE_HOME/bin:$PATH

source /etc/profile

2)配置hive-env.sh文件(启动时用到的环境文件)

HADOOP_HOME=/usr/hadoop-2.2.0

3)复制hive-default.xml -> hive-site.xml文件(配置文件)

<property>

<name>javax.jdo.option.ConnectionURL</name>

<!--<value>jdbc:derby:;databaseName=metastore_db;create=true</value>-->

<value>jdbc:mysql://master1:3306/metastore?=createDatabaseIfNotExist=true</value>

<description>JDBC connect string for a JDBCmetastore</description>

</property>

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<!--<value>org.apache.derby.jdbc.EmbeddedDriver</value>-->

<value>com.mysql.jdbc.Driver</value>

<description>Driver class name for a JDBCmetastore</description>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>hive</value>

<description>username to use against metastoredatabase</description>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>hive</value>

<description>password to use against metastoredatabase</description>

</property>

4)拷贝jdbc文件到hive的lib中

下载jdbc的jar文件http://pan.baidu.com/s/1zYi5o

cp mysql-connector-java-5.1.26-bin.jar$HIVE_HOME/lib/

2、HiveClient,在Slave1上安装Hive客户端,同样设置好HIVE_HOME的环境变量

1)将Hive013从Master1拷贝到Slave1

scp -r /usr/hive013 [email protected]:/usr/

2)配置Metastore的连接信息

<property>

<name>hive.metastore.uris</name>

<value>thrift://master1:9083</value>

<description>Thrift URI for the remote metastore.Used by metastore client to connect to remote metastore.</description>

</property>

3)启动metastore服务

前台服务:hive--service metastore  CTRL+C关闭

后台服务:nohup hive--service metastore > metastore.log 2>&1 &    jobs查看后台任务    kill %id关闭后台任务

4)测试链接Metastore

由于设置好HIVE_HOME环境变量,直接在Shell中输入hive即可打开HiveCLI

5)拷贝至OPC节点,可以达到多个客户端访问metastore

Hive运行架构及配置部署

时间: 2024-12-15 23:38:56

Hive运行架构及配置部署的相关文章

hive运行的相关配置

一:执行SQL的方式 1.配置的键值 2.minimal下运行fetch 3.设定hive.fetch.task.conversion=more 4.在more下运行fetch 二:虚拟列 一共三个虚拟咧 INPUT__FILE__NAME: BLOCK__OFFSET__INSIDE__FILE: ROW__OFFSET__INSIDE__BLOCK: 三:严格模式 1.概述 对分区表进行查询,在where子句中没有加分区过滤的话,将禁止提交任务,默认hive.mapred.mode=nons

Hive基础之Hive体系架构&amp;运行模式&amp;Hive与关系型数据的区别

Hive架构 1)用户接口: CLI(hive shell):命令行工具:启动方式:hive 或者 hive --service cli ThriftServer:通过Thrift对外提供服务,默认端口是10000:启动方式:hive --service hiveserver WEBUI(浏览器访问hive):通过浏览器访问hive,默认端口是9999:启动方式:hive --service hwi 2)元数据存储(Metastore):启动方式:hive -service metastore

【转载】Spark运行架构

1. Spark运行架构 1.1 术语定义 lApplication:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个Driver 功能的代码和分布在集群中多个节点上运行的Executor代码: lDriver:Spark中的Driver即运行上述Application的main()函数并且创建SparkContext,其中创建SparkContext的目的是为了准备Spark应用程序的运行环境.在Spark中由S

Spark入门实战系列--4.Spark运行架构

[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1. Spark运行架构 1.1 术语定义 lApplication:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个Driver 功能的代码和分布在集群中多个节点上运行的Executor代码: lDriver:Spark中的Driver即运行上述Application的main()函数并且创建SparkContext

Linux之LAMP架构搭建配置

Linux之LAMP架构搭建配置 LAMP简介 LAMP定义指Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建立web应用平台. 对于大流量.大并发量的网站系统架构来说,除了硬件上使用高性能的服务器.负载均衡.CDN 等之外,在软件架构上需要重点关注下面几个环节: 使用高性能的操作系统 (OS) . 高性能的网页服务器 (Web Server) .高性能的数据库(Data

LEMP架构及应用部署

LEMP架构及应用部署 LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl.PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和 Java/J2EE架构相比,LAMP具有Web资源丰富.轻量.快速开发等特点,与微软的.NET架构相比,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质

3-2 Hadoop伪分布模式配置部署

Hadoop伪分布模式配置部署 一.实验介绍 1.1 实验内容 hadoop配置文件介绍及修改 hdfs格式化 启动hadoop进程,验证安装 1.2 实验知识点 hadoop核心配置文件 文件系统的格式化 测试WordCount程序 1.3 实验环境 hadoop2.7.6 CentOS6终端 1.4 适合人群 本课程难度为一般,属于初级级别课程,适合具有hadoop基础的用户. 1.5 相关文件 https://pan.baidu.com/s/1a_Pjl8uJ2d_-r1hbN05fWA

大型架构及配置技术之Ansible

大型架构及配置技术之Ansible 一.ansible简介 1.什么是ansible ? Ansible是2013年推出的一款IT自动化和DevOps软件,目前由Redhat已签署Ansible收购协议.其是基于Python研发,糅合了很多老运维工具的优点实现了批量操作系统配置,批量程序的部署,批量运行命令等功能.2.ansible可以实现:1)自动化部署APP2)自动化管理配置项3)自动化的持续交付4)自动化的(AWS)云服务管理3.为什么要选择ansible? 1)活跃度(社区活跃度) 2)

cloudstack4.6 + xenserver架构云环境部署

cloudstack4.6 + xenserver架构云环境部署 一.提供简单类似cloudstack架构如下(仅供简单参考): 二.安装cloudstack4.6+xenserver6.5 系统环境:centos6.5_64 1.修改各主机相应静态ip地址 2.修改hostname vi /etc/sysconfig/network 3.添加dns记录 vi /etc/hosts 192.168.5.8cs01.esc.com 192.168.5.1xen01.esc.com 192.168.