您的位置:首页 > 其它

Hive笔记一之基本概念与安装

2016-12-13 22:27 357 查看

简介

         随着数据量的增大传统数据库已经不能支持所以需要将海量的数据迁移到hdfs上,而伴随着海量数据的迁移原有的业务也需要进行迁移。而hive提供了使用sql来操作大数据不一定非要求会写mapreduce,这样就降低了迁移难度。Hive是facebook公司开发在08年由其贡献给了apach基金会是hadoop生态圈中的重要组成部分。

 

1.hive是建立在hadoop基础之上的数据仓库

    数据仓库存放的数据可以为公司各个级别的业务决策提供支撑,进入数据仓库的数据只能查询追加不能修改OLAP(OLTP可以修改)。

2.hive可以对数据进行ETL操作

    Extract----提取,从服务器上采集相关的数据如日志。

    Transform----转化,对采集的数据按照一定的格式进行转化以便入库。

    Load----加载,将转化的数据录入到仓库中。

3.hive是sql的解析引擎

    提供类似sql的hql来查询,hive最终将sql转化为mapreduce任务然后在hadoop中执行,几乎无事务,

4.hive允许自定义map和reduce处理内建的map和reduce无法完成的复杂工作

5.hive表对应hdfs的目录

    Hive表中的数据对应hdfs目录下的文件

    Hive表中的行对应hdfs目录下文件中的行

    Hive表中的列对应hdfs目录下文件中的列

6.hive相当于hadoop的一个客户端工具,不一定部署在管理节点

7.hive是用来作离线数据分析的

数据存储

1.      hive的数据存储基于hdfs,它没有专门的数据存储格式

2.      存储结构主要包括,数据库,文件,表,表,视图,索引。

3.      默认可以加载文本,支持sequenceFile

4.      创建表时必须指定行列分隔符,这样才能解析hdfs数据,也有默认的分隔符。

 

体系架构

1客户端

CLI,shell命令;java,使用jdbc;webGUI,使用浏览器访问

 

2.元数据

存储hive表的名字列属性和与hdfs的映射关系,通常存储在关系型数据库中如derby,mysql,但是derby只支持单会话所以一般用mysql存储元数据。

 

3.解释器,编译器,优化器,执行器:

    对hql进行语法分析,编译,优化,生成执行计划并存储在hdfs中,最后由mapreduce调用执行。

安装mysql

我使用的是在线安装并且使用root用户登录linux

1.卸载已安装的mysql依赖

执行rpm -qa | grep mysql命令,显示如下

[root@shb01 local]# rpm -qa | grep mysql

mysql-libs-5.1.73-5.el6_6.x86_64

 

2.执行安装

[root@shb01 local]# yum install -ymysql-server

 

3.启动

[root@shb01 local]# service mysqld start

 

4.初始化

[root@shb01 local]#mysql_secure_installation

此处我的密码设置为root





5.加入开机启动项

[root@shb01 local]# chkconfig mysql on

 

6. 登录mysql

[root@shb01 local]# service mysqld status

mysqld (pid 3904) is running...

 

[root@shb01 local]# mysql -u root -p

-u后市用户名,-p输入密码后登录,我的用户名是root密码也是root,刚刚在第四部初始化时设置的。



7. 权限授予

grant all privileges on *.* to 'root'@'%'identified by 'root';

flush privileges;

 


8. 注意

离线安装中的mysql 服务为mysql,在线安装中mysql 服务为mysqld

离线服务操作sudo service mysql [start|stop|restart|status]

在线服务操作sudo service mysqld [start|stop|restart|status]

Sudo是非root用户使用,root用户去掉sudo

安装Hive

1.下载安装包

Hadoop使用的是2.6,hive是hive-1.0.1

Hive下载地址:http://hive.apache.org/downloads.html

安装包为:apache-hive-1.0.1-bin.tar.gz





2.解压安装包并修改文件

[root@shb01 local]# tar -zxvf apache-hive-1.0.1-bin.tar.gz

进入解压后hive目录结构如下图



进入conf目录修改文件名

[root@shb01 conf]# cp hive-env.sh.templatehive-env.sh

[root@shb01 conf]# cp hive-default.xml.template hive-site.xml

 

 

修改hive-env.sh文件,配置java,hive,hadoop

export JAVA_HOME=/usr/local/jdk1.7.0_79

 

export HIVE_HOME=/usr/local/apache-hive-1.0.1-bin

 

export HADOOP_HOME=/usr/local/hadoop-2.6.0

 

修改hive-site.xml

首先修改元数据的存储数据库,hive默认是derby改成mysql,一共四项URL,Driver,username,password

另外在修改3个路径

 

<property>

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

   <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>com.mysql.jdbc.Driver</value>

   <description>Driver class name for a JDBC metastore</description>

 </property>

 

<property>

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

   <value>root</value>

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

 </property>

 

<property>

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

   <value>root</value>

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

 </property>

 

以下3个property路径全部改为/usr/local/apache-hive-1.0.1-bin/tmp,0.12以上版本增加

<property>

   <name>hive.querylog.location</name>

   <value>/usr/local/apache-hive-1.0.1-bin/tmp</value>

   <description>Location of Hive run time structured logfile</description>

 </property>

 

<property>

   <name>hive.exec.local.scratchdir</name>

   <value>/usr/local/apache-hive-1.0.1-bin/tmp</value>

   <description>Local scratch space for Hive jobs</description>

 </property>

 

 <property>

   <name>hive.downloaded.resources.dir</name>

   <value>/usr/local/apache-hive-1.0.1-bin/tmp</value>

   <description>Temporary local directory for added resources in theremote file system.</description>

 </property>

 

 

将mysql的java驱动包放到hive的lib目录下

将mysql-connector-java-5.1.33-bin.jar放到目录/usr/local/apache-hive-1.0.1-bin/lib下

3.启动Hive

首先启动hadoop,启动mysql

在hive的bin目录下执行hive命令

/usr/local/apache-hive-1.0.1-bin/bin

[root@shb01 bin]# hive



此时进入mysql,执行show create database hive;命令,注意mysql的编码格式必须是latin1否则会报错,如果不是使用命令修改alter database hive character set latin1;



Hive的访问方式

前面的体系架构中介绍了hive的客户端有三种分别是CLI,shell命令;java,使用jdbc;webGUI,使用浏览器访问。

 

CLI访问方式

Hive终端

在hive中直接执行hql语句



inux终端

在linux中使用sh命令来执行一个hql脚本,注意hive.hql的路径

sh $HIVE_HOME/bin/hive -f hive.hql

 

Java访问方式

此种方式实在java代码中调用hive的jdbc,这个后面会专门介绍

 

WebGUI访问方式

此种需要搭建环境,在Hive下载地址:http://hive.apache.org/downloads.html中下载源码,注意第一个是安装包,第二个是源码。



下载后将其拷贝到linux下并解压

tar -zxvf apache-hive-1.0.1-src.tar.gz

 

进入解压后的hwi子目录制作war包

在/usr/local/apache-hive-1.0.1-src/hwi目录下执行jar cvfM0 hive-1.0.1.war -C web/ .

生成war包



 拷贝war包和JAVA_HOME/lib下的tools.jar到hive的lib目录下,是这个目录/usr/local/apache-hive-1.0.1-bin/lib

 

    修改hive-site.xml文件,文件在这个目录下/usr/local/apache-hive-1.0.1-bin/conf

<property>

   <name>hive.hwi.listen.host</name>

   <value>shb01</value>

   <description>This is the host address the Hive Web Interface willlisten on</description>

 </property>

 

//value改为ip或主机名

 

<property>

   <name>hive.hwi.listen.port</name>

   <value>9999</value>

   <description>This is the port the Hive Web Interface will listenon</description>

 </property>

 

<property>

   <name>hive.hwi.war.file</name>

   <value>lib/hive-1.0.1.war</value>

   <description>This sets the path to the HWI war file, relative to${HIVE_HOME}. </description>

 </property>

 

//Value是刚刚生成并拷贝到hive的lib目录下的war包

 

 

重新启动hive

在hive的bin目录下执行启动命令

[root@shb01bin]# hive --service hwi >/dev/null 2&>1 &

在浏览器访问地址:http://shb01:9999/hwi。如下图





好,到此结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hive