登录 |  注册 |  繁體中文


Hive安装配置

分类: 人工智能&大数据 颜色:橙色 默认  字号: 阅读(1758) | 评论(0)

一、前言

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

    Hive是由Facebook贡献给Apache的开源项目,这个工具可以说是完全为DBA而生,它的的目标,是希望能让精通SQL但不熟悉JAVA编程的工程师,在HADOOP的大潮中不至于下岗待业,即使完全不懂JAVA,也能在HDFS数据分析中继续发挥光和热。Hive是做什么呢,个人理解可以将其视为一个SQL语言的解释器,它能将DBA提交的SQL语句,转换成能够在HADOOP上执行的M-R作业,对于DBA或前端用户来说,不必再将精力花在编写M-R应用上,直接借助SQL的易用性来实现大规模数据的查询和分析。

 

与Hadoop类似,Hive也有三种运行模式:

1.内嵌模式:将元数据保存在本地内嵌的Derby数据库中,这得使用Hive最简单的方式,不过使用内嵌模式的话,缺点也比较明显,因为一个内嵌的Derby数据库每次只能访问一个数据文件,这也就意味着不支持多会话连接。这种情况应对本地测试可能都有所不足,仅供初学者熟悉应用Hive;

2.本地模式:这种模式是将元数据库保存在本地的独立数据库中(比如说MySQL),这样就能够支持多会话和多用户连接。

3.远程模式:如果我们的Hive客户端比较多,在每个客户端都安装MySQL服务还是会造成一定的冗余和浪费,这种情况下,就可以更进一步,将MySQL也独立出来,将元数据保存在远端独立的MySQL服务中。

 

二、环境

系统:CentOS6.4 32位 

软件包:

hive-0.8.1.tar.gz

mysql-connector-java-5.1.18-bin.jar

 

本实验均在上hadoop基础上做。

3种模式均在master主机(192.168.2.101)上配置,master主机已安装hadoop集群。

 

三、配置

1.内嵌模式

即将元数据存储在Derby数据库中,也是Hive默认的安装方式

# tar -zxvf hive-0.8.1.tar.gz -C /usr/
# mv /usr/hive-0.8.1/ /usr/hive
# chown -R hadoop:hadoop /usr/hive/      //修改所属关系,hadoop用户已在hadoop集群中添加
# vim /etc/profile                       //添加环境变量
HIVE_HOME=/usr/hive
PATH=$PATH:$HIVE_HOME/bin
export HIVE_HOME
# source /etc/profile                        //使之立即生效,而不必注销并重新登录。

 

# cd /usr/hive/conf/  //本模式使用默认配置无需修改。
# ll
-rw-rw-r--. 1 hadoop hadoop 46817 Jan 25  2012 hive-default.xml.template
-rw-rw-r--. 1 hadoop hadoop  1593 Jan 25  2012 hive-env.sh.template
-rw-rw-r--. 1 hadoop hadoop  1637 Jan 25  2012 hive-exec-log4j.properties.template
-rw-rw-r--. 1 hadoop hadoop  2043 Jan 25  2012 hive-log4j.properties.template

在HDFS上建立/tmp和/user/hive/warehouse目录,这是Hive默认的数据文件存放目录

# su - hadoop
$ hadoop dfs -mkdir /tmp
$ hadoop dfs -mkdir /user/hive/warehouse

$ hadoop dfs -ls /
drwxrwxr-x   - hadoop supergroup          0 2014-06-17 18:57 /tmp
drwxr-xr-x   - hadoop supergroup          0 2014-06-17 19:02 /user
drwxr-xr-x   - hadoop supergroup          0 2014-06-15 19:31 /usr
$ hadoop dfs -ls /user/hive/
drwxrwxr-x   - hadoop supergroup          0 2014-06-17 19:02 /user/hive/warehouse

$ hive                //启动
Logging initialized using configuration in file:/usr/hive/conf/hive-log4j.properties
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201406171916_734435947.txt
hive> show tables;
OK
Time taken: 7.157 seconds
hive> quit;
 

2.配置连接mysql (在内嵌模式上配置)

# mv mysql-connector-java-5.1.18-bin.jar /usr/hive/lib/      //上传JDBC,用于java程序与mysql的连接
# chown hadoop:hadoop mysql-connector-java-5.1.18-bin.jar

$ vim /usr/hadoop/conf/hive-site.xml 	//配置hive-site.xml文件,用于连接mysql

  javax.jdo.option.ConnectionURL         //所连接的MySQL数据库实例
  jdbc:mysql://localhost:3306/hive
  JDBC connect string for a JDBC metastore

 

  javax.jdo.option.ConnectionDriverName  //连接的MySQL数据库驱动
  com.mysql.jdbc.Driver
  Driver class name for a JDBC metastore

 

  javax.jdo.option.ConnectionUserName   //连接的MySQL数据库用户名
  hive
  username to use against metastore database

 

  javax.jdo.option.ConnectionPassword    //连接的MySQL数据库密码
  hive
  password to use against metastore database


$ hive         //启动
Logging initialized using configuration in jar:file:/usr/hive/lib/hive-common-0.8.1.jar!/hive-log4j.properties
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201406172021_1374786590.txt
hive> show tables;
OK
Time taken: 5.527 seconds
hive> quit;

 
3 远程模式:如果我们的Hive客户端比较多,在每个客户端都安装MySQL服务还是会造成一定的冗余和浪费,这种情况下,就可以更进一步,将MySQL也独立出来,将元数据保存在远端独立的MySQL服务中。

只需要修改ConnectionURL的ip为外部ip即可, 

hive.metastore.local:指定是否使用本地元数据,设为false表示使用远端的MySQL数据库存储元数据;(已过期)

4 参数说明

hive.metastore.warehouse.dir:指定数据目录,默认值是/user/hive/warehouse;
 
hive.exec.scratchdir:指定临时文件目录,默认值是/tmp/hive-${user.name};
 
javax.jdo.option.ConnectionURL:指定数据库的连接串,此处修改为:jdbc:mysql://192.168.2.10:3306/hive?createDatabaseIfNotExist=true
   
javax.jdo.option.ConnectionDriverName:指定数据库连接驱动,此处修改为com.mysql.jdbc.Driver;  
 
javax.jdo.option.ConnectionUserName:指定连接MySQL的用户名,根据实际情况设定;  
  
javax.jdo.option.ConnectionPassword:指定连接MySQL的密码,根据实际情况设定;  


 

最后说明下, mysql数据库的编码目前最好设置为latin1,否则使用hive会出现莫名其妙的问题

 




姓 名: *
邮 箱:
内 容: *
验证码: 点击刷新 *   

回到顶部