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' identified by 'a';
create database hive;
grant all privileges on *.* to 'hive'@'%' identified by 'a';
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上面发现已经编译好的库,然后导入,经过一系列复杂的操作最后成功解决了这个问题。找对方法,找对工具。
Hive基本原理及环境搭建的更多相关文章
- Hive On Spark环境搭建
Spark源码编译与环境搭建 Note that you must have a version of Spark which does not include the Hive jars; Spar ...
- Hive项目开发环境搭建(Eclipse\MyEclipse + Maven)
写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Mav ...
- Hadoop Hive概念学习系列之hive三种方式区别和搭建、HiveServer2环境搭建、HWI环境搭建和beeline环境搭建(五)
说在前面的话 以下三种情况,最好是在3台集群里做,比如,master.slave1.slave2的master和slave1都安装了hive,将master作为服务端,将slave1作为服务端. 以 ...
- Hadoop项目开发环境搭建(Eclipse\MyEclipse + Maven)
写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Mav ...
- MapReduce 开发环境搭建(Eclipse\MyEclipse + Maven)
写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Mav ...
- 环境搭建 Hadoop+Hive(orcfile格式)+Presto实现大数据存储查询一
一.前言 Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关 ...
- elasticsearch + hive环境搭建
一.环境介绍: elasticsearch:2.3.1 hive:0.12 二.环境搭建 2.1 首先获取elasticsearc-hadoop的jar包 链接地址:http://jcenter.bi ...
- 《OD大数据实战》Hive环境搭建
一.搭建hadoop环境 <OD大数据实战>hadoop伪分布式环境搭建 二.Hive环境搭建 1. 准备安装文件 下载地址: http://archive.cloudera.com/cd ...
- 《Programming Hive》读书笔记(一)Hadoop和hive环境搭建
<Programming Hive>读书笔记(一)Hadoop和Hive环境搭建 先把主要的技术和工具学好,才干更高效地思考和工作. Chapter 1.Int ...
随机推荐
- 【转】JAVA异常报错大全
算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...
- 前端开发必备之chrome插件
Chrome浏览器目前是网络上可用的最好的浏览器之一,并且自2011年11月超越了Firefox浏览器之后,已经成为了互联网上占主导地位的浏览器. 本篇文章将与大家分享一些与前端开发有关的实用的Chr ...
- 0323-DOM基础操作
dom操作 1.找到元素(标签对象) 标签名: document.getElementsByTagName()[]; //返回的是数组类型,需要有下标来找内容 属性: document.getElem ...
- [LeetCode] Can Place Flowers 可以放置花
Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, ...
- ueditor图片无法左右对齐的解决
找到ueditor的配置文件ueditor.config.js,里面搜索 whiteList 然后在下面找到img,在里面添加 'style'. 添加后如下: img : [ 'src', 'alt' ...
- tkinter 创建登陆注册界面
import tkinter as tk from tkinter import messagebox #设置窗口居中 def window_info(): ws = window.winfo_scr ...
- 机器学习技法:08 Adaptive Boosting
Roadmap Motivation of Boosting Diversity by Re-weighting Adaptive Boosting Algorithm Adaptive Boosti ...
- 机器学习基石:01 The Learning Problem
什么时候适合用机器学习算法? 1.存在某种规则/模式,能够使性能提升,比如准确率: 2.这种规则难以程序化定义,人难以给出准确定义: 3.存在能够反映这种规则的资料. 所以,机器学习就是设计算法A,从 ...
- 异步编程Promise/Deferred、多线程WebWorker
长期以来JS都是以单线程的模式运行的,而JS又通常应用在操作用户界面和网络请求这些任务上.操作用户界面时不能进行耗时较长的操作否则会导致界面卡死,而网络请求和动画等就是耗时较长的操作.所以在JS中经常 ...
- python学习记录2
一.两个模块(sys和os) #!/usr/bin/env python # _*_ coding: UTF-8 _*_ # Author:taoke import sys print(sys.pat ...