Hive on Spark
一、实验介绍
1.1 实验内容
Spark 2.0是支持读写 hive 中存储的数据的,但是因为 hive 有较多的依赖,所以默认情况下,这些依赖没有包含在 spark 的发布包中。本节课将二者整合起来使用,过程稍微复杂,请耐心配置。
1.2 先学课程
HIVE教程:https://www.shiyanlou.com/courses/38
1.3 实验知识点
Hive/MySQL 安装Hive 整合 SparkSpark SQL 测试
1.4 实验环境
hadoop-2.6.1spark-2.1.0-bin-hadoop2.6.tgzapache-hive-1.2.1-bin.tar.gzmysql-connector-java-5.0.8.tar.gzXfce 终端
1.5 适合人群
本课程属于中等难度级别,适合具有大数据基础的用户,如果对 Hive /Spark SQL 了解能够更好的上手本课程。
二、实验步骤
2.1 准备工作
本节课是在上节课的基础上进行,请确保一下服务启动。
2.2 启动并配置 MySQL
1). 实验楼环境默认已经安装 mysql ,启动即可。
$ sudo service mysql start
$ mysql -uroot -p
$ exit
2). 设置 mysql root 用户密码。
$ mysqladmin -uroot password
"123456"
$ mysql -root -p123456
3). 在 mysql 上创建 hive 元数据库,并对 hive 进行授权
$
create database if not exists hive_meta;
$
grant all
privileges on hive_meta.*
to 'root'@
'%' identified by '123456';
$
grant all
privileges on hive_meta.*
to 'root'@
'localhost' identified by '123456';
$
flush privileges;
$
use hive_meta;
$ exit
在 /opt 目录下下载 mysql-connector 并解压。
$ sudo wget
http:/
/labfile.oss.aliyuncs.com/courses/809/mysql-connector-java-
5.0.
8.tar.gz
$ sudo tar -zxvf mysql-connector-java-
5.0.
8.tar.gz
2.3 下载配置 Hive
1). 下载解压 hive
$ sudo wget
http:/
/labfile.oss.aliyuncs.com/courses/809/apache-hive-
1.2.
1-bin.tar.gz
$ sudo tar -zxvf apache-hive-
1.2.
1-bin.tar.gz
2). 修改 hive-site.xml。
$ sudo mv apache-hive-
1.2.
1-bin hive
$ cd hive/conf
$ sudo cp hive-default.xml.template hive-site.xml
$ sudo vi hive-site.xml
查找以下选项进行修改。
javax.jdo.option.ConnectionURL
把value的值改为jdbc:mysql://localhost:3306/hive_meta?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriverName
把value的值改为com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
把value的值改为root
javax.jdo.option.ConnectionPassword
把value的值改为123456
继续查找hive.metastore.uris
修改为
把hive-site.xml中所有${system:java.io.tmpdir}全部替换为 /opt/hive/iotmp
把hive-site.xml中所有${system:user.name}全部替换为 root
修改全部结束后,用:wq保存退出。
3). 拷贝 mysql 驱动。
$ sudo cp
/opt/mysql-connector-java-5.0.8/mysql-connector-java-5.0.8-bin.jar /opt/hive/lib/
4). 拷贝 jline-2.12.jar。
$ mv /opt/hadoop-
2.6.
1/share/hadoop/yarn/lib/jline-
0.
9.94.jar /opt/hadoop-
2.6.
1/share/hadoop/yarn/lib/jline-
0.
9.94.jar_bak
$ cp /opt/hive/lib/jline-
2.12.jar /opt/hadoop-
2.6.
1/share/hadoop/yarn/lib/
5). 复制 hive-env.sh。
$ sudo cp hive-env.sh.
template hive-env.sh
6). 修改 hive-config.sh。
$ sudo vi ../bin/hive-config.sh
添加以下变量:
export JAVA_HOME=
/usr/lib/jvm/java
-8-oracle
export HIVE_HOME=
/opt/hive
export HADOOP_HOME=
/opt/hadoop
-2.6.1
7). 将hive-site.xml放置到 spark 的conf目录下。
$ cp hive-site.xml
/opt/spark-2.1.0-bin-hadoop2.6/conf/
8). 在 /opt目录下对 hive 授权。
$ sudo
chmod 777 -R hive
9). 启动 MySQL,查看 hive 元数据信息是否存在。
$ mysql -uroot -p123456
$
show databases;
$
use hive_meta;
$
show tables;
$ exit
10). 在 hive 的bin目录下启动 hive。
$ ./hive --service metastore &
$ ./hive
$ show databases;
$ show tables;
$ exit
10). 再次启动MySQL,查看hive元数据信息是否存在。
$ mysql -uroot -p123456
$
use hive_meta;
$
show tables;
$ exit
以上步骤说明配置 hive 成功,hive 的元数据信息存在于 mysql 中。
三、hive on spark 测试
1). 准备测试数据。
用 vi 创建一份数据 student.txt:
John,20,88
Marry,21,93
Pet,22,78
Tom,22,89
Judy,22,90
Andy,24,91
这里我已经创建并上传至 hdfs 文件系统,请您创建。
2). 打开 hive 客户端,创建表加载数据。
$ ./hive
$
create table student(name string, age int, score double) row format delimited fields terminated by ',' stored as textfile;;
$ load data inpath
'hdfs://localhost:9000/testdata/student.txt' into table student;
#查看数据是否load进来
$
select *
from student;
$ exit;
3). spark-shell 运行针对 hive 的 sql 语句,验证 hive on spark 是否成功。
在 spark 的 bin 目录下启动 spark-shell。
$
cd spark-2.1.0-bin-hadoop2.6/bin
$ ./spark-shell --master spark://a4
cd888f4ca9:7077 --executor-memory 600m --driver-memory 600m
执行 hive 的 sql 语句。
spark.sql("
select *
from student
").show();
spark.sql("select name from student
where age=
22").show();
spark.sql("select count(*)
from student
").show();
当然也可以在 Spark webui 中检查是否有运行的作业记录。
双击打开浏览器,输入:localhost:4040 可以看到当前已经完成的 Jobs。
继续点击 SQL,可以看到已经完成的SQL查询操作,点击去会有更详细的执行过程等。
四、实验总结
本节课详细的介绍了 Hive 与 Spark 的整合过程,涉及的知识点较多,比如 MySQL 的安装,MySQL 与 Hive 的打通,尤其hive-site.xml的配置项较多,一定要仔细配置,每一步都很关键,最终实现了 Hive on Spark,希望能帮助你,少走一些弯路。
五、参考阅读
http://blog.csdn.net/kimsungho/article/details/51584016http://www.jianshu.com/p/a7f75b868568