Hive基本原理及环境搭建

今天我主要是在折腾这个Hive,早上看了一下书,最开始有点凌乱,后面慢慢地发现,hive其实挺简单的,以我的理解就是和数据库有关的东西,那这样的话对我来说就容易多啦,因为我对sql语法应该是比较熟悉了,而这个是HQL的,其实很多都差不多。先来看一下Hive的基本介绍:

一、Hive基本原理

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

Hive将元数据存储在数据库(RDBMS)中,比如MySQL、Derby中。Hive有三种模式连接到数据,其方式是:单用户模式,多用户模式和远程服务模式。(也就是内嵌模式

、本地模式、远程模式)。

1.1 Hive体系结构:

Hive体系结构图:主要分为:用户接口、Thrift服务器、元数据存储、解析器、Hadoop

1.2 Hive数据类型

Hive的存储是建立在Hadoop文件系统之上的,它本身没有专门的数据存储格式,其主要包括四类数据模型:

表(Table)

分区(Partition)

桶(Bucket)

外部表(External Table)

Hive的内置数据类型可以分为两大类:(1)、基础数据类型;(2)、复杂数据类型。其中,基础数据类型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。

1.3Hive的执行流程要点

操作符(Operator)是Hive的最小处理单位;

每个操作符处理代表HDFS操作或MR作业;

编译器把Hive SQL转换成一组操作符;

Hive通过ExecMapper和ExecReducer来执行MapReduce任务;

执行MapReduce时有两种模式:本地模式和分布式模式;

常见的Hive操作符(部分)如下:

1.4 Hive的HQL操作

hive基本的运行操作其实和sql差不多,例如:

select u.name, o.orderid from order o join user u on o.uid = u.uid;

select dealid, count(distinct uid), count(distinct date) from order group by dealid;

简单Hive表语句:

create table student

(

name string,

sex string,

age int

);

二、Hive基本配置

1、从apache官网的hadoop找到hive,目前最新版本是2.0.1,我下的就是这个,http://hive.apache.org/downloads.html,

2、下载mysql驱动,目前是5.1.38的 ,我已经把这需要的两个整理好一个压缩包了,可以通过以下链接下载:(我后续贴出)

3、分别解压到你需要的目录中,我是放置在/home/admin1/下载/hive-2.0.1中的,把mysql驱动也放到hive的这个lib包中,然后在hive-2.0.1/conf中对以下文件进行配置:

新建一个文件hive-env.sh

把里面的目录改成你的hadoop放置的目录就可以了。

export HIVE_HOME=/home/admin1/下载/hive-2.0.1
export PATH=$PATH:$HIVE_HOME/bin
HADOOP_HOME=/home/admin1/下载/hadoop-2.5.2
export HIVE_CONF_DIR=/home/admin1/下载/hive-2.0.1/conf
export HIVE_AUX_JARS_PATH=/home/admin1/下载/hive-2.0.1/lib

还需要新建一个hive-site.xml:

这里我用的是mysql的账号和密码来配置的,其他的你也可以参照配置。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>

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

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

<value>jdbc:mysql://localhost:3306/hive?=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>a</value>

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

</property>
</configuration>

启动:在/home/admin1/下载/hive-2.0.1中执行:

bin/hive

若无法初始化,则:

bin/schematool -dbType mysql  -initSchema

在hive2.0以上版本都需要initSchema一下,否则会报错,我也是因为这个问题折腾了好几个小时,最后发现很简单就解决了。

最后说一下的就是在安装mysql的时候,你可以直接用ubuntu里面的uk软件下载就可以了,在里面搜索mysql,然后下载mysql的服务器,客户端和工作平台就可以了,这里不再重复啰嗦了,就是需要在控制台创建一下新用户:

mysql -uroot

create user ‘hive‘ identify by ‘hive‘;

create database hive;

grant all privileges on *.* to   ‘hive‘@‘localhost‘   identified by ‘hive‘;

flush privileges

然后可以通过hive账号进行登陆就可以了,

mysql  -u hive -p

然后输入密码hive就成功登陆,把这个登陆信息配置到hive-site.xml中就可以了。

接下来就可以愉快的进行hive的使用了,创建表等。记得要把hadoop的服务打开哦  ,    sbin/start-all.sh

总结:今天遇到的两个主要问题就是,1:bin/hive后一直报错,最后初始化之后就可以了。2、在linux中的sublim-text无法输入中文,且无法下载gpk解决,无法编译sublime_imfix.c,后来通过在github上面发现已经编译好的库,然后导入,经过一系列复杂的操作最后成功解决了这个问题。找对方法,找对工具。

时间: 2024-11-05 13:30:36

Hive基本原理及环境搭建的相关文章

Hive项目开发环境搭建(Eclipse\MyEclipse + Maven)

写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Maven) 我这里,相信,能看此博客的朋友,想必是有一定基础的了.我前期写了大量的基础性博文.可以去补下基础. 步骤一:File  ->  New  -> Project   ->  Maven Project 步骤二:自行设置,待会创建的myHBase工程,放在哪个目录下. 步骤三: 步骤四:

hive三种方式区别和搭建、HiveServer2环境搭建、HWI环境搭建和beeline环境搭建

说在前面的话 以下三种情况,最好是在3台集群里做,比如,master.slave1.slave2的master和slave1都安装了hive,将master作为服务端,将slave1作为服务端. hive三种方式区别和搭建 Hive中metastore(元数据存储)的三种方式: a)内嵌Derby方式 b)Local方式 c)Remote方式 1.本地derby这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可<?xml version="1.0"?&g

Hadoop项目开发环境搭建(Eclipse\MyEclipse + Maven)

写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Maven) Hive项目开发环境搭建(Eclipse\MyEclipse + Maven) MapReduce 开发环境搭建(Eclipse\MyEclipse + Maven) 我这里,相信,能看此博客的朋友,想必是有一定基础的了.我前期写了大量的基础性博文.可以去补下基础. 步骤一:File  ->

Hive基础之Hive环境搭建

Hive默认元数据信息存储在Derby里,Derby内置的关系型数据库.单Session的(只支持单客户端连接,两个客户端连接过去会报错): Hive支持将元数据存储在关系型数据库中,比如:Mysql/Oracle: 本案例采用的是将hive的元数据存储在MySQL中,故需要先安装MySQL数据库,使用的是CentOS6.4版本. MySQL安装 采用yum安装方式安装: yum install mysql #安装mysql客户端 yum install mysql-server #安装mysq

Apache Spark源码走读之12 -- Hive on Spark运行环境搭建

欢迎转载,转载请注明出处,徽沪一郎. 楔子 Hive是基于Hadoop的开源数据仓库工具,提供了类似于SQL的HiveQL语言,使得上层的数据分析人员不用知道太多MapReduce的知识就能对存储于Hdfs中的海量数据进行分析.由于这一特性而收到广泛的欢迎. Hive的整体框架中有一个重要的模块是执行模块,这一部分是用Hadoop中MapReduce计算框架来实现,因而在处理速度上不是非常令人满意.由于Spark出色的处理速度,有人已经成功将HiveQL的执行利用Spark来运行,这就是已经非常

《Programming Hive》读书笔记(一)Hadoop和hive环境搭建

<Programming Hive>读书笔记(一)Hadoop和Hive环境搭建 先把基本的技术和工具学好,才能更高效地思考和工作. Chapter 1.Introduction 简介 Chapter 2.Getting Started 环境配置 Hadoop版本会更新,以官方安装教程为准 http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html#Standalone_O

环境搭建 Hadoop+Hive(orcfile格式)+Presto实现大数据存储查询一

一.前言 以下简介摘自官方 Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等.接下来我们使用的是Hive Hive简介 Hive 是一个基于 Hadoop的开源数据仓库工具,用于存储和处理海量结构化数据.    它把海量数据存储于 hadoop 文件

《OD大数据实战》hive环境搭建

一.搭建hadoop环境 <OD大数据实战>hadoop伪分布式环境搭建 二.hive环境搭建 1. 准备安装文件 下载地址: http://archive.cloudera.com/cdh5/cdh/5/ hive-0.13.1-cdh5.3.6.tar.gz 2. 解压 tar -zxvf hive-0.13.1-cdh5.3.6.tar.gz -C /opt/modules/cdh/ 3. 修改配置 cd /opt/modules/cdh/hive-0.13.1-cdh5.3.6/con

Spark环境搭建(四)-----------数据仓库Hive环境搭建

Hive产生背景 1)MapReduce的编程不便,需通过Java语言等编写程序 2) HDFS上的文缺失Schema(在数据库中的表名列名等),方便开发者通过SQL的方式处理结构化的数据,而不需要Java等编写程序 Hive是什么 1)facebook开源,最初为解决海量的结构化日志数据统计问题 2)构建中Hadoop上的数据仓库 3)Hive定义了一种SQL查询语言:HQL(类似SQl但又不完全相同) 4)通常进行离线处理(采用MapReduce) 5)多种不同的底层执行引擎(Hive on