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--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环境变量会出现: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
添加如下内容:
<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;
查询刚创建的表信息:
2)、sparksql端操作
启动sparksql
$SPARK_HOME/bin/spark-sql --master yarn --deploy-mode client
执行以下sql
use mybase;
select * from students;
至此sparksql使用hive元数据便配置成功了。
欢迎拍砖,相互学习,相互进步