Hive环境搭建

    xiaoxiao2021-12-14  16

    简介

    此篇博文主要记录一下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

    转载请注明原文地址: https://ju.6miu.com/read-971066.html

    最新回复(0)