Hive是构建在Hadoop之上的数据仓库平台,设计目标就是将hadoop上的数据操作同SQL结合,让熟悉SQL编程的开发人员能够轻松的向Hadoop平台上转移。
Hive可以在HDFS上构建数据仓库存储结构化数据,这些数据来源就是hdfs上,hive提供了一个类似sql的查询语言HiveQL来进行查询、变换数据等操作。 当然HiveQL语句的底层是转换为相应的mapreduce代码进行执行的。
Hive包含用户接口、元数据库、解析器和数据仓库等组件组成,其中用户接口包含shell客户端、JDBC、ODBC、Web接口等。 元数据库主要是指定义在hive中的表结构信息,一般保存到关系型数据库中,默认是derby,一般使用mysql进行保存。 解析器主要功能是将HQL语句转换为mapreduce代码。 数据仓库就是由hdfs组成的数据存储容器。
image.png
Hive根据metastore的存储位置不同,分为三种安装模式: 内嵌模式,本地模式,远程模式。 内嵌模式就是使用derdy存储元数据; 本地模式是将hvie.metastore.local设置为true,就是说metastore和hive客户端安装在同一台机器上; 远程模式指的是我们明确指定metastore安装的机器位置,而且可以指定多个,需要给定参数hive.metastore.uris并且hive.metastore.local必须设置为false。 Hive远程模式安装,使用mysql进行元数据的存储。
安装步骤: 1. 安装mysql数据库。 2. hive本地模式安装。
安装步骤:
安装步骤:
Hive提供了一个Web的操作客户端,一般我们通过该页面查看hive的信息,配置信息包括: hive.hwi.listen.host指定监听ip(默认0.0.0.0), hive.hwi.listen.port监听端口(默认9999), hive.hwi.war.file=xxx。
另外需要将java的tool.jar文件移动到hive的lib文件夹中。
启动命令为:
hive --service hwi &
一、 安装mysql
1. 使用root用户: su root
2. 安装
yum install mysql
yum install mysql-server
yum install mysql-devel(可选)
3. 修改配置信息,添加: vim /etc/my.cnf
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
lower_case_table_names=1
4. 启动mysql:service mysqld restart/stop/start
5. 配置超级用户名和密码, mysqladmin -u root password 123456
6. root用户登录mysql -u root -p 123456
7. 创建mysql用户:create user 'hive' identified by 'hive';
8. 授权:grant all privileges on *.* to 'hive'@'%' with grant option
9. 重启一下这个mysql服务。
10. 使用hive用户创建数据库并修改连接信息。
create database hive;
alter database hive character set latin1;
二、 安装hive
1. 下载hive:http://archive.cloudera.com/cdh5/cdh/5/hive-0.13.1-cdh5.3.6.tar.gz
2. hive的帮助文档位置:https://cwiki.apache.org/confluence/display/Hive/LanguageManual,
hive官网:http://hive.apache.org
3. 参考hive-site.xml文件
4. 将bin目录添加到path目录中,
vim ~/.bash_profile
export HIVE_HOME=/home/hadoop/bigdater/hive-0.13.1-cdh5.3.6/
export PATH=$PATH:$HIVE_HOME/bin
source ~/.bash_profile
5. 移动mysql驱动jar到hive的lib文件夹下。
6. 启动metastore服务(启动hdfs+yarn服务)
hive --service metastore &
7. 进入hive的客户端
hive
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://hh:9083</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hh:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
</configuration>