Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. tez, spark) or using Hive 1.X releases
hive默认使用mr作为计算引擎,当进入cli时会看到以上的提示信息,刚好有hive2.1.0,查了下pom文件,依赖了spark1.6.0,版本应该可以兼容spark1.6.1,所以在此基础上搭建hive on spark环境。
安装过程略。
安装过程略。
虽要注意的一点是,使用hive on spark模式时,spark-assembly-1.6.1-hadoop2.6.0.jar不能包含hive的相关依赖,所以需要自己编译spark源码,在编译时去掉-Phive参数。
采用mysql来存储hive的元数据,使用了免安装的mysql,安装过程略。
5.1 下载hive2.1.0
https://hive.apache.org/downloads.html
5.2 解压到服务器
/usr/apache-hive-2.1.0-bin
5.3 配置环境变量
export HIVE_HOME=/usr/apache-hive-2.1.0-bin
export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/bin
export HCAT_HOME=$HIVE_HOME/hcatalog/
5.4 初始化hive配置
创建hive-default.xml文件
cp hive-default.xml.template hive-default.xml
创建hive-site.xml文件
参考hive-default.xml文件生成hive-site.xml,并将内容修改为以下:
javax.jdo.option.ConnectionURL
jdbc:mysql://master:3306/hive2?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
mysql
把mysql的驱动包旋转到$HIVE_HOME/lib目录下
初始化元数据:schematool -initSchema -dbType mysql
使用hive进入cli客户端验证hive是否安装成功
5.5 配置hive on spark
添加spark依赖到hive环境中
scala-library.jar
spark-core_2.10-1.6.1.jar
spark-network-common_2.10-1.6.1.jar
设置hive的执行引擎为spark
方式一:进入cli后通过以下命令进行动态设置
set hive.execution.engine=spark;
set spark.master=spark://master:7077;
方式二:在hive-site.xml中进行全局设置
hive.execution.engine
spark
hive.enable.spark.execution.engine
true
spark.master
spark://master:7077
其余一些配置项参考:https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-Spark
验证hive on spark
create table tb_user(id int,name string ,age int);
insert into tb_user values(1,'name1',11),(2,'name2',12),(3,'name3',13);
5.6 使用hiveserver2和beline
启动hiveserver2服务:$HIVE_HOME/hiveserver2
通过beline连接hiveserver2
6.安装配置过程遇到问题
问题1
Error: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate anonymous (state=,code=0)
在$HODOOP_HOME/hadoop/core-site.xml中添加:
hadoop.proxyuser.root.groups
*
hadoop.proxyuser.root.hosts
*
问题2
Exception in thread "main" java.lang.NoSuchFieldError: SPARK_RPC_SERVER_ADDRESS
Failed to execute spark task, with exception 'org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create spark client.)'
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.spark.SparkTask
spark中不能含有hive的依赖,去掉-Phive进行编译spark
参考:
https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started