天天看点

spark2.0.1 on yarn with hue 集群搭建部署(四)hive、hive metastore安装hive安装整合sparksql

hive安装整合sparksql

一、安装hive

1、安装说明

由于使用apache-hive-1.2.1-bin.tar.gz安装测试时出现异常,使用hue创建数据库表时:

spark2.0.1 on yarn with hue 集群搭建部署(四)hive、hive metastore安装hive安装整合sparksql

hive报错

spark2.0.1 on yarn with hue 集群搭建部署(四)hive、hive metastore安装hive安装整合sparksql

导致错误的原因参见hive的相关bug:

https://issues.apache.org/jira/browse/HIVE-6893?jql=status%20%3D%20Resolved%20AND%20text%20~%20%22out%20of%20sequence%20response%22

以及:

https://issues.apache.org/jira/browse/HIVE-10956

主要是因为hive采用ThreadLocal来保存连接,当hue打开session连接使用完成以后并未及时关闭,当session多了将导致异常,最终导致内存溢出。

由于解决的版本在1.3.0和2.0.0,目前稳定版本只有1.2.1和2.1.0,所以最终选择2.1.0进行测试。

2、解压hive

cd /data/soft
tar -xvzf apache-hive--bin.tar.gz -C /bigdata
mv apache-hive--bin hive
           

3、配置hive

cd /bigdata/hive21/conf/
           

1)、修改hive-env.sh文件

将以下内容写入到hive-env.sh文件中,如果/etc/profile文件中已经存在可以不添加。

export JAVA_HOME=/bigdata/bigdata/jdk
export HADOOP_HOME=/bigdata/hadoop
export HIVE_HOME=/bigdata/hive
           

2)、修改hive-site.xml

hive配置参考:

https://cwiki.apache.org/confluence/display/Hive/AdminManual+Configuration

metastore配置参考:

https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-MetaStore

将以下信息写入到hive-site.xml文件中

<configuration>
   <property>
<name>javax.jdo.option.ConnectionURL</name>         <value>jdbc:mysql://bigdata1:3306/databasename?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>username</value>
     </property>
     <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>password</value>
</property>
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>
</configuration>
           

3)、修改日志存放目录

cd $HIVE_HOME/conf
cp hive-log4j2.properties.template hive-log4j2.properties
vim hive-log4j2.properties
           

修改property.hive.log.dir为:

property.hive.log.dir=/data/logs/hive/${sys:user.name}
           

4)、设置环境变量

sudo vim /etc/profile
           

添加以下内容:

export HIVE_HOME=/bigdata/hive
export PATH=$HIVE_HOME/bin:$PATH
source /etc/profile
           

4、修改hive中jar包与hadoop中jar冲突

cp /bigdata/hive/lib/jline-.jar /bigdata/hadoop-/share/hadoop/yarn/lib
cd /bigdata/hadoop-/share/hadoop/yarn/lib  
rm jline-*.jar
           

注:如果不修改,启动hive时报错:

Terminal initialization failed; falling back to unsupported

5、添加mysql驱动

下载地址:http://dev.mysql.com/downloads/connector/j/

解压,将mysql-connector-java-5.1.40-bin.jar上传至bigdata1:/data/soft目录下。

mv /data/soft/mysql-connector-java--bin.jar /bigdata/hive/lib
           

6、添加hive元数据至mysql中

1)、准备mysql环境

root用户登入mysql

mysql –uroot –p
           

创建数据库用于存储hive的源数据

创建用户,用于管理hive的元数据库

将刚创建的hive元数据库所有权限赋给刚创建的用户:

2)、初始化源数据

7、测试

1)、测试运行hive

hive
           

运行hive时会报:

Mon Nov 07 18:50:43 CST 2016 WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

提示异常,因为MySQL 5.5.45+, 5.6.26+ and 5.7.6+版本默认采用的ssl连接,修改如下:

vim $HIVE_HOME/conf/hive-site.xml
<property>
   <name>javax.jdo.option.ConnectionURL</name>         
   <value>jdbc:mysql://bigdata1:3306/databasename?useSSL=false</value>
</property>
           

重启hive便可以了。

便可以查看到一个default的数据库。

注:如果使用hive1.2.1运行hive命令,且/etc/profile配置了SPARK_HOME环境变量
spark2.0.1 on yarn with hue 集群搭建部署(四)hive、hive metastore安装hive安装整合sparksql

会出现:ls: 无法访问/bigdata/spark/lib/spark-assembly-*.jar: 没有那个文件或目录

其主要的原因是:当配置了SPARK_HOME,hive便会加载spark相关的JAR包。而自从spark升级到2.0.0之后,spark中的jar结构已经产生巨大变化,jar包由原来的lib目录更改到了jars目录,且spark-assembly-*.jar也拆分成多个jar包,所以肯定没有办法找到这个spark-assembly的JAR包。而hive2.1.0无此问题。

即将spark的jars目录下的jar包都加载进去就不会报错了,具体修改如下:

vim /bigdata/hive/bin/hive
           

修改前:

spark2.0.1 on yarn with hue 集群搭建部署(四)hive、hive metastore安装hive安装整合sparksql

将sparkAssemblyPath修改如下:

sparkAssemblyPath=`ls ${SPARK_HOME}/jars/*.jar`
           

二、Sparksql使用hive元数据

1、编辑hive-site.xml

添加如下内容:

<property>   
 <name>hive.metastore.uris</name>   
 <value>thrift://bigdata1:9083</value>   
 <description>Thrift uri for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
           

设置开启hive的metastore服务。

2、spark配置

将hive-site.xml复制到spark的conf目录下

cp /bigdata/hive/conf/hive-site.xml /bigdata/spark/conf
           

拷贝mysql驱动包至spark中:

3、测试

1)、hive端操作

启动hive的metastore

启动sparksql

$SPARK_HOME/bin/spark-sql --master yarn --deploy-mode client
           

创建测试数据

vim /home/hadoop/students
           

添加如下内容

1 dupu 18
2 懒猴 20
3 蓝走 40
4 libai 34
           

使用hive命令创建数据库

hive
           

创建数据库,及表并加载数据

create database mybase;

use mybase;

CREATE TABLE students(
     userid BIGINT,
     username STRING, 
     age int)
 ROW FORMAT DELIMITED
   FIELDS TERMINATED BY ' '
 STORED AS TEXTFILE;

load data local inpath '/home/hadoop/students' into table mybase.students;
           

查询刚创建的表信息:

spark2.0.1 on yarn with hue 集群搭建部署(四)hive、hive metastore安装hive安装整合sparksql

2)、sparksql端操作

启动sparksql

$SPARK_HOME/bin/spark-sql --master yarn --deploy-mode client
           

执行以下sql

use mybase;
select * from students;
           
spark2.0.1 on yarn with hue 集群搭建部署(四)hive、hive metastore安装hive安装整合sparksql

至此sparksql使用hive元数据便配置成功了。

欢迎拍砖,相互学习,相互进步