Hive环境搭建

简介

此篇博文主要记录一下hive搭建的过程(集群模式,多用户访问)
此处配置的为多用户模式,hive的元数据存储在mysql中,hive的元数据主要包括:表信息、表属性、分区、列等等信息,Owner
hive的实际数据存储在HDFS上

下载Hive

Hive可以直接到官方网站去进行下载,我下载的hive版本为1.2.0.下载时注意选择bin.tar文件,该文件为hive编译后的版本,src为hive的源码包
这里写图片描述

解压Hive

将下载以后的Hive上传到linux机器上,我的软件放在software中。然后将Hive解压至目标文件夹:

tar zxf ./apache-hive-1.2.1-bin.tar.gz -C /home/spark/hive

主要此处的目标文件夹必须存在,tar解压命令不同于cp,不会自动创建未存在的文件夹

配置环境变量

这步操作和搭建hadoop及spark类似,需要将hive的安装路径加入到linux的/etc/profile中

vim /etc/profile

加入hive的安装路径,如下

#HIVE_HOME
export HIVE_HOME=/home/spark/hive/apache-hive-1.2.1-bin
export PATH=$PATH:$HIVE_HOME/bin

保存只有,要执行source操作,将刚才进行的配置生效

source /etc/profile

Hive配置

hive默认使用自带的derby数据库作为元数据的存储数据库,但是derby数据库只支持单用户访问,在生产环境下我们通常采用mysql作为hive的元数据存储仓库.下面我们的配置也是以mysql作为运输局存储来配置的

hive的配置文件放置在conf文件夹内,配置文件如下:

  • hive-site.xml hive的配置文件
  • hive-env.sh hive的运行环境文件
  • hive-default.xml.template 默认模板
  • hive-env.sh.template hive-env.sh默认配置
  • hive-exec-log4j.properties.template exec默认配置
  • hive-log4j.properties.template log默认配置

配置Hive主要配置conf中的hive-env.sh及hive-default.xml,我们进入conf文件夹下发现并没有这两个文件,因此需要cp这两个文件的模板文件,并且去掉结尾的template

cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml

hive-env.sh

vim hive-env.sh

加入hadoop的安装路径:

HADOOP_HOME=/home/spark/hadoop/hadoop-2.6.3

hive-site.xml

配置4项内容即可
先将hive-site.xml进行备份

mv hive-site.xml hive-site.xml.bk

在重新vim一个hive-site.xml,加入如下内容:

<configuration>
 <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://centos:3306/hive?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>hive</value>
  </property>
 <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
  </property>
</configuration>

javax.jdo.option.ConnectionURL配置的为hive连接mysql的数据库连接字符串,hive将会去连接mysql的hive数据库,若该数据库不存在将会创建
javax.jdo.option.ConnectionDriverName配置的为hive连接mysql使用的jdbc驱动类名称,需要带mysql官网去下载mysql的jdbc驱动(http://dev.mysql.com/downloads/connector/j/),然后将该驱动解压并将jar包copy到hive下的lib文件夹类,否则会爆出如下的错误:

Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFoundException: The specified datastore driver (“com.mysql.jdbc.Driver”) was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver.
at org.datanucleus.store.rdbms.connectionpool.AbstractConnectionPoolFactory.loadDriver(AbstractConnectionPoolFactory.java:58)
at org.datanucleus.store.rdbms.connectionpool.BoneCPConnectionPoolFactory.createConnectionPool(BoneCPConnectionPoolFactory.java:54)
at org.datanucleus.store.rdbms.ConnectionFactoryImpl.generateDataSources(ConnectionFactoryImpl.java:238)
… 68 more

javax.jdo.option.ConnectionUserName配置的为连接mysql使用的用户名
javax.jdo.option.ConnectionUserName配置的为连接mysql使用的密码

metastore初始化

我们选择的数据库为mysql,因此使用schematool -initSchema -dbType mysql对元数据库进行初始化

mysql配置

由于需要使用hive去连接mysql,我们配置的连接用户为hive,密码为123456.因此要给这个用户赋予本地连接及远程连接的权限;使用root用户进入mysql中,输入以下命令行:

grant all privileges on . to hive@”localhost” identified by “123456” with grant option;
grant all privileges on . to hive@”%” identified by “123456” with grant option;
flush privileges;

第一句将赋予hive用户通过本地服务器访问hive的权限
第二句将赋予hiv用户通过任意外网服务器访问hive的权限,此处赋予的为对任意数据库及表的操作
第三局将刷新权限的修改

我们修改完之后,可以进行验证:

mysql -u hive -p
输入123456发现已经可以访问mysql了

错误汇总:

1.Exception in thread “main” java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

这个错误是因为在hadoop的目录下存在老版本的jline,jline在yarn的lib文件夹下

cd /home/spark/hadoop/hadoop-2.6.3/share/hadoop/yarn/lib
rm jline-0.9.94.jar

rm掉yarn下的jline之后,要从hive的lib中cp一份高版本的jline

cp /home/spark/hive/apache-hive-1.2.1-bin/lib/jline-2.12.jar /home/spark/hadoop/hadoop-2.6.3/share/hadoop/yarn/lib

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值