由于前面安装版本过老,导致学习过程中出现了很多问题,今天安装了一个新一点的版本。安装结束启动时遇到一点问题,记录在这里。
第一步:hive-1.2安装
通过WinSCP将apache-hive-1.2.1-bin.tar.gz上传到/usr/hive/目录下
[root@spark1 hive]
[root@spark1 hive]
[root@spark1 hive]
[root@spark1 hive]
export HIVE_HOME=/usr/hive/hive-1.2
export PATH=$HIVE_HOME/bin
[root@spark1 hive]
[root@spark1 hive]
第二步:安装mysql
[root@spark1 hive]
[root@spark1 hive]
[root@spark1 hive]
[root@spark1 hive]
[root@spark1 hive]
第三步:在mysql上创建hive元数据库,并对hive进行授权
mysql> create database if not exists hive_metadata;
mysql> grant all privileges on hive_metadata.* to 'hive'@'%' identified by 'hive';
mysql> grant all privileges on hive_metadata.* to 'hive'@'localhost' identified by 'hive';
mysql> grant all privileges on hive_metadata.* to 'hive'@'spark1' identified by 'hive';
mysql> flush privileges;
mysql> use hive_metadata;
mysql> exit
第四步:配置文件
[root@spark1 hive]
[root@spark1 conf]
[root@spark1 conf]# vi hive-site.xml
javax.jdo.option.ConnectionURL
jdbc:mysql:
JDBC connect string for a JDBC metastore
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore
javax.jdo.option.ConnectionUserName
hive
username to use against metastore database
javax.jdo.option.ConnectionPassword
hive
password to use against metastore database
hive.metastore.warehouse.dir
/user/hive/warehouse
location of default database for the warehouse
[root@spark1 conf]
[root@spark1 ~]
export JAVA_HOME=/usr/java/jdk1.8
export HIVE_HOME=/usr/hive/hive-1.2
export HADOOP_HOME=/usr/hadoop/hadoop-2.6.0
[hadoop@spark1 hive]$ cd hive-1.2
[hadoop@spark1 hive-1.2]$ hive
测试hive
hive> hive;
启动报错
Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: {system:java.io.tmpdir%7D/{system:java.io.tmpdir%7D/%7Bsystem:user.name%7D
启动hive-1.2报错1
Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: {system:java.io.tmpdir%7D/{system:java.io.tmpdir%7D/%7Bsystem:user.name%7D
解决办法
将hive-site.xml中三个含有system:java.io.tmpdir配置项的值修改为 $HIVE_HOME/iotmp 即:
/usr/hive/hive-1.2/iotmp
hive.exec.local.scratchdir
/usr/hive/hive-1.2/iotmp
Local scratch space for Hive jobs
hive.downloaded.resources.dir
/usr/hive/hive-1.2/iotmp
Temporary local directory for added resources in the remote file system.
hive.downloaded.resources.dir
/usr/hive/hive-1.2/iotmp
Temporary local directory for added resources in the remote file system.
搞定1之后报错2
[ERROR] Terminal initialization failed; falling back to unsupported
原因是hadoop目录下存在老版本jline:
/usr/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib/jline-0.9.94.jar
解决方法:
将hive目录/usr/hive/hive-1.2/lib下的新版本jline的JAR包拷贝到hadoop下:
cp jline-2.12.jar /usr/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib
结果如下图