Hive体系结构:

    是建立在hadoop之上的数据仓库基础架构.

    和数据库相似,只不过数据库侧重于一些事务性的一些操作,比如修改,删除,查询,在数据库这块发生的比较多.数据仓库主要侧重于查询.对于相同的数据量在数据库中查询就比较慢一些,在数据仓库中查询的效率就比较快.

    数据仓库是面向于查询的,并且处理的数据量要远远高于数据库处理的数据量.
    传统的数据仓库产品,依然有数据存储的瓶颈,那么在这个瓶颈下查询的速度慢了,那么就不适用了,我们的hadoop是处理海量数据的,所以我们可以在上面建立数据仓库.
    Hive和MapReduce的区别,最简单的一个区别就是MapReduce是使用Java写的,平时开发的过程中,需要用java语言进行书写,对于很多人是有瓶颈的.
    hive封装在Hadoop之上的,可以使用SQL进行查询的一个框架.

    Hive中的数据是从其他数据库产品中导入进来的,所以他要从其他数据库中把数据提取出来,然后转化过来,因为我们的数据库有很多,并且业务很分散,但是我们的数据仓库一般都是面向某个领域某个主题的,这个时候我们数据仓库中的一张表要融合很多数据库中的多张表,多张表在进入数据仓库的时候也需要进行转化.将转化之后的数据加载到数据仓库中.
    在数据仓库中经常做的一个事就是ETL(extract transform load)的过程.hive的查询语言非常类似于SQL,但是又有自身的特色,称为HiveQL(HQL).
    Hive数据转化的过程可以使用Hive自身的,可以MapReduce,也可以使用其他的一些东西.通常是使用MapReduce.
    Hive查询的数据位于HDFS中.
    HiveQL的查询在执行时转化为MapReduce,透过MapReduce去执行HDFS.对Hive的优化看生成MapReduce运行的效率如何.

    hive和hdfs对应关系:

      Hive中的数据库,表对应HDFS中的文件夹.
      Hive表中的列对应HDFS中的文件夹中的数据文件中的数据的不同字段.
      Hive表中的数据对应于HDFS中的文件夹中的数据文件中的数据.
    Hive与HDFS的对应关系是存放在Hive的一个组件metastore中的.

    metastore表现为关系数据库,可以是derby,也可以是mysql.也就是说我们的关系是存放在derty或者是mysql中的表里面的.
    Hive和Hadoop结合在一起,需要有一个映射的关系,这个映射的关系就是metastore,sql语句的执行在这里边要转换为对表的操作,对文件夹的操作,对文件的操作,以及对数据的列的操作是通过查询metastore来实现的.
    HDFS中存储的文件,数据类型都是字节数组,本身是不区分类型的,但是在hql语句中是需要区分类型的,还有类型的对应.

Hive安装:

    hive相当于客户端,hadoop相当于服务端,所以我们的hive要配置hadoop的某一台机器上.

    cd /usr/local
解压缩:tar -zxvf hive-0.9.0.tar.gz
重命名:mv hive-0.9.0.tar.gz hive
进入hive配置目录:cd hive/conf
mv hive-exec-log4j.properties.templater hive-exec-log4j.properties
mv hive-log4j.properties.templater hive-log4j.properties
mv hive-env.sh.template hive-env.sh
mv hive-default.xml.template hive-default.xml
cp hive-default.xml hive-site.xml

    删除hive-site内部所有内容
    修改bin目录下的hive-config.sh,增加以下三行

    export JAVA_HOME=/usr/local/jdk
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop

hive的使用:

    cd bin/
执行hive
显示数据库:show databases;
进入数据库:use default;
显示数据库中的表:show tables;
创建表:create table t1(id int);
查询内容:select * from t1;

  hive的映射关系:

    Hive中的数据库,表对应HDFS中的文件夹.
    Hive表中的列对应HDFS中的文件夹中的数据文件中的数据的不同字段.
    Hive表中的数据对应于HDFS中的文件夹中的数据文件中的数据.
    当hive部署成功后,hive默认的数据库default在hdfs上对应的目录是/usr/hive/warehouse

  修改hive的metastore为mysql

  centos上安装mysql

    yum install mysql-server
启动mysql service mysqld start
启动mysql mysqld_safe &
访问mysql mysql -uroot
进入mysql数据库 use mysql;
查询用户user的密码 select password ,user from user;
修改用户密码 update user set password=password('admin');
修改mysql为允许远程连接 grant all on *.* to 'root'@'%' identified by 'admin';
刷新 flush privileges; 之前的操作在当前回话中立即生效
退出登录 mysql -uroot -padmin

    将mysql的jdbc驱动放到hive的lib目录中, 

  cp mysql-connector-java-5.1.10 /usr/local/hive/lib

    修改hive/conf/hive-site.xml

    <property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop4:3306/hive_hadoop?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>admin</value>
</property>

    删除hive/bin/下面的metastore_db,derby.log

    操作:

    hive
use default;
show tables;
create table t1(id int);
quit;
mysql -uroot -padmin
show databases;
use hive_hadoop;
shwo tables;

    DBS:hive上的数据库

    TBLS:表的信息
    COLUMNS_V2:列的信息

    select * from dbs;
select * from tbls \g;
select * from columns_v2;

    加载linux磁盘文件到hive表中:对hive的操作实际上是对hdfs的操作,对hdfs的操作只允许一次写入不允许修改的,load的数据来自于磁盘文件.

    vi onecolumn
1
2
3
4
5

vi onecolumn 数据

    将hive配置到环境变量中:

    vi ~/.bashrc
export PATH=/usr/local/hive/bin:$PATH
source ~/.bashrc
hive
load data local inpath './onecolumn' into table t1;
select * from t1;查询
drop table t1;删除表 hive中没有修改

将hive添加到环境变量中

    多列数据的上传:

    create table t2(id int,name string) row format delimited fields terminated by '\t';
vi user
1 zhangsan
2 lisi
3 wangwu
load data local inpath './user' into table 't2';
select * from t2;
select name from t2;

    当需要查询某一列的时候,hive就不能够进行全表扫描了,只能走mapreduce

    创建表:

    create table t1(id int);
create table t2(id int,name string) row format delimited fields terminated by '\t';

    加载linux磁盘文件到hive的表中:

    load data local inpath './onecolumn' into table t1;
load data local inpath './user' into table t2;

HIve体系结构,hive的安装和mysql的安装,以及hive的一些简单使用的更多相关文章

  1. linux安装卸载MySQL以及密码设置+Hive测试

    linux系统卸载MYSQL 1,先通过yum方式卸载mysql及相关组件 命令:yum remove mysql* 2.通过命令:rpm -qa|grep -i mysql 查找系统的有关于mysq ...

  2. mysql安装图解 mysql图文安装教程(详细说明)

    MySQL5.0版本的安装图解教程是给新手学习的,当前mysql5.0.96是最新的稳定版本. mysql 下载地址 http://www.jb51.net/softs/2193.html 下面的是M ...

  3. linux(Debian)下安装与MySql的安装、卸载、配置及使用

    参考资料:http://www.cnblogs.com/xusir/p/3334217.html 以下是简要记录. 一.安装 安装:apt-get install mysql-server mysql ...

  4. mysql安装图解 mysql图文安装教程(详细说明)-[转]

    很多朋友刚开始接触mysql数据库服务器,下面是网友整理的一篇mysql的安装教程,步骤明细也有详细的说明. MySQL5.0版本的安装图解教程是给新手学习的,当前mysql5.0.96是最新的稳定版 ...

  5. linux rpm 安装后 mysql 默认安装目录等信息

    MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件.配置文件和命令文件分别在不同的目录,了解这些目录非常重要,尤其对于Linux的初学者,因为 Linux本身的目录结构就比 ...

  6. Linux+Redis实战教程_Linux上安装jdk,mysql,tomcat_安装jdk

    1. Linux上安装jdk,mysql,tomcat[重点] Windows 控制面板 添加/卸载程序 进行程序的安装.更新.卸载.查看 rpm命令:相当于windows的添加/卸载程序 进行程序的 ...

  7. linux中jdk的安装与mysql 的安装

    1.linux安装jdk #先找到 安装包#cd /usr/java tar -zxvf jdk-8u31-linux-x64.tar.gz 2.安装选择要安装java的位置,如/usr/目录下,新建 ...

  8. 一、Linux&配置,依赖安装&Tomcat,Mysql,jdk安装

    基础知识: 1 OS Operation System 作用:控制硬件,服务软件 2 VMware虚拟机: 虚拟出一台计算机环境 配置两个虚拟网卡,适配器里查看 3 在虚拟机上安装操作系统Linux ...

  9. mysql8.0.20安装教程,mysql下载安装教程8.0.20

    mysql8.0.20下载安装教程  mysql8.0.20安装教程 mysql安装包+mysql学习视频+mysql面试指南视频教程 下载地址: 链接:https://pan.baidu.com/s ...

随机推荐

  1. Android开发环境的安装 Eclipse

    Android开发环境的安装 1 IDE Android可以使用开发的IDE有Eclipse 或者 Android Studio.Android Studio还处于v 0.1.x版本,是early a ...

  2. asp开发微信扫码支付

    这个任务已经给了.现在正在学习开发中.主要注意的是2点. 1:返回参数的验证. 2:通知后业务处理和处理后返回财付通.大部分操作,api中已经处理好. 现在需要的业务逻辑部分. 需要正确3个参数  r ...

  3. 无锁编程(六) - seqlock(顺序锁)

    seqlock(顺序锁) 用于能够区分读与写的场合,并且是读操作很多.写操作很少,写操作的优先权大于读操作. seqlock的实现思路是,用一个递增的整型数表示sequence.写操作进入临界区时,s ...

  4. 浅谈配置chrome浏览器允许跨域操作的方法

    浅谈配置chrome浏览器允许跨域操作的方法 一:(Lying人生感悟.可忽略) 最近有一天,对着镜子,发现满脸疲惫.脸色蜡黄.头发蓬松.眼神空洞,于是痛诉着说生活的不如意,工作没激情,工资不高,一个 ...

  5. Qt之QLCDNumber

    简述 QLCDNumber控件用于显示一个LCD数字. 它可以显示几乎任意大小的数字.可以显示十进制.十六进制.八进制或二进制数.很容易使用display()槽连接到数据源,这个槽可以被任何五个参数类 ...

  6. MVC+Ef项目(4) 抽象业务逻辑层BLL层

    接下来,我们就要到业务逻辑层了,简单的说,业务逻辑层就是调用Repository(可以看做是DAL数据库访问层) 先来看看项目的架构 我们现在就开始来做BLL层.  同样,先编写  UserInfoS ...

  7. 基于Html5的爱情主题网站–表白神器(第二版)

    第二版在第一版的基础上增加了一个动态3D的白云效果背景,鼠标悬浮在页面上云朵会向屏幕Z轴方向运动,在第一人称视角看来向着云朵方向前进的,由此形成一个伪3D效果.有点绕,直接看demo就能理解了.3D白 ...

  8. console.log的一个应用 -----用new方法生成一个img对象和document.createElement方法创建一个img对象的区别

    我用两种方法来生成img对象,第一种方法是用new方法,第二种方法是用document.createElement方法. var img1 = new Image(); var img2 = docu ...

  9. [转载] 老版本ubuntu 更新源

    untu的普通版本支持的时间都有限,过了支持的时间,更新源都会被停用,比如ubuntu9.10原来的源都失效了(包括官方源,类似ustc的第 三方源,因为这些第三方源也是和官方源同步的).因此,直接用 ...

  10. string tips

    1. .net文档中说,split 比 indexOf 消耗更多的性能.在as3中经过本人测试,这个结论一样成立.而且,字符串越长,split和indexOf的差距就越明显!!所以,能用indexOf ...