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

hive安装整合sparksql

一、安装hive

1、安装说明

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

hive报错

这里写图片描述

导致错误的原因参见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-2.1.0-bin.tar.gz -C /bigdata
mv apache-hive-1.2.1-bin hive

3、配置hive

cd /bigdata/hive21/conf/
1)、修改hive-env.sh文件
cp hive-env.sh.template 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

mv hive-default.xml.template hive-site.xml

将以下信息写入到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-2.12.jar /bigdata/hadoop-2.6.5/share/hadoop/yarn/lib
cd /bigdata/hadoop-2.6.5/share/hadoop/yarn/lib  
rm jline-0.09*.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-5.1.40-bin.jar /bigdata/hive/lib

6、添加hive元数据至mysql中

1)、准备mysql环境

root用户登入mysql

mysql –uroot –p

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

CREATE DATABASE `databasename` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

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

CREATE USER 'username'@'%' IDENTIFIED BY 'password'; 

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

GRANT all ON databasename.* TO 'username'@'%';
2)、初始化源数据
$HIVE_HOME/bin/schematool -dbType mysql -initSchema

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便可以了。

show databases;

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

注:如果使用hive1.2.1运行hive命令,且/etc/profile配置了SPARK_HOME环境变量
这里写图片描述
会出现: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

修改前:
这里写图片描述

将sparkAssemblyPath修改如下:

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

二、Sparksql使用hive元数据

1、编辑hive-site.xml

vim /bigdata/hive/conf/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中:

cp /bigdata/hive/lib/mysql-connector-java-5.1.40-bin.jar /bigdata/spark/jars/

3、测试

1)、hive端操作

启动hive的metastore

hive --service 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;

查询刚创建的表信息:

select * from students;

这里写图片描述
2)、sparksql端操作
启动sparksql

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

执行以下sql

use mybase;
select * from students;

这里写图片描述

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值