版权声明:著作权归作者所有,任何形式的转载都请注明出处。 https://blog.csdn.net/xiaokui9/article/details/81127561
所有版本的下载地址:http://archive.apache.org/dist/hive/
网上太多版本,但是只是为了学习,本机虚拟机上安装一下试用,很多帖子里的配置是多台服务器的配置,因些整理了一个虚拟机本机版本的安装步骤。
关于hive的一些概念,特别有一些配置文件里的内容,建议看一下书后再去看帖子,会容易得多(我看的是hadoop权威指南里面的hive部分)
hadoop的安装,请参照上一篇文章https://blog.csdn.net/xiaokui9/article/details/81093340
一、hive安装
1、将hive解压到/opt/modules目录下。
2、修改环境变量,在/etc/profile文件尾添加:
export HIVE_HOME=/opt/modules/apache-hive-1.1.0-bin
export PATH=$PATH:$HIVE_HOME/bin
执行source /etc.profile:
3、测试安装是否成功,命令行执行hive --version
4、安装mysql
命令行命令:yum install mysql-server
这时报错:
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.neusoft.edu.cn
* extras: mirrors.neusoft.edu.cn
* updates: mirrors.cn99.com
No package mysql-server available.
Error: Nothing to do
网上找的解决方法是:首先必须添加mysql社区repo通过输入命令:sudo rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm,最后使用像安装MySQL的常规方法一样安装mysql: yum install mysql mysql-server mysql-libs mysql-server
然后再执行就可以了。
5、配置MySQL数据库
(1)启动mysql
service mysqld start
(2)设置root登陆密码:123456,然后使用修改后的密码进行登陆
/usr/bin/mysqladmin -u root password '123456'
service mysqld restart
mysql -uroot – p
(3)登录后:
mysql>use mysql;
mysql> select user,host from user;
出现如下结果:
(4)赋予root权限:
//本地操作的权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
结果如下:
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
结果同上一步。
注意:本地部署访问的时候不要执行以下内容,以下内容为部署访问远程服务器的方式,将第4步更换如下:
#######################start#################
(4)删除user为空的记录,否则后边服务启动会出现规则冲突。
mysql> delete from user where user='';
结果如下:
Query OK, 2 rows affected (0.05 sec)
(5)命令行执行:
update user set host = '%' where user = 'root';
这时可能会报错:
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
不用管它,再次进行查看。
mysql> delete from user where user='';
结果如下,就可以了。
说明:
默认的在mysql数据库下有一个user表存储着服务器用户名以及密码,因为只允许MySQL 的root用户登录,因此我们不能远程登录,可能会受到权限的限制,为了防止后续任务出现问题,这里我们将host为localhost的一条记录改为host为%:
mysql> update user set host='%' where host='localhost';
然后删除其他字段,只留这一条记录,这样我们就可以远程在其他主机上登录了。
(6)赋予root权限
//远程操作的权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> flush privileges;
####################### end#################
5、安装mysql-connector-java
(1)方法1
使用yum安装mysql-connector-java,然后将jar包复制到${HIVE_HOME}/lib目录下(yum安装后jar包在/usr/share/java/目录下)。
yum install mysql-connector-java -y
cp /opt/modules/hadoop-2.7.3/lib/mysql-connector-java-5.1.17.jar /opt/modules/apache-hive-1.1.0-bin/lib/
(2)方法2
将mysql-connector-java-***.jar,复制到hive安装目录下的lib下
需要下载mysql的jdbc<mysql-connector-java-5.1.28.jar>,然后将下载后的jdbc放到hive安装包的lib目录下,下载链接是:http://dev.mysql.com/downloads/connector/j/。
6、修改配置文件hive-env.sh
将配置文件中的HADOOP_HOME和HIVE_CONF_DIR内容修改如下:
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME="/opt/modules/hadoop-2.7.6"
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR="/opt/modules/apache-hive-1.1.0-bin/conf"
7、配置hive-site.xml文件
conf目录下拷贝一个hive-default.xml.template文件,重命名为hive-site.xml文件,修改文件中的以下配置项的内容:
<property>
<name>hive.querylog.location</name><!--日志存放目录-->
<value>/opt/modules/apache-hive-1.1.0-bin/logs/hive</value>
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name><!--mysql数据库JDBC连接的url-->
<value>jdbc:mysql://localhost:3306/hivecreateDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name><!-- JDBC驱动器的类名-->
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name><!-- mysql数据库的用户名-->
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name><!-- mysql数据库的用户密码-->
<value>123456</value>
</property>
然后搜索xml文件中所有的配置内容中有如下字符串的:
${system:java.io.tmpdir}/${system:user.name}
将其全部修改成:
/opt/modules/apache-hive-1.1.0-bin
8、运行hive
二、安装时的部分报错内容
在安装过程中出现过多个错误,本身安装也不是完全按照这个顺序来的,因为有一些出错,然后会去补全前面的步骤。将出现的错误列出在这里,供参考:
1、Access denied for user 'root'@'localhost' (using password: YES)
有说法是:root帐户默认不开放远程访问权限,所以需要修改一下相关权限。
有说法是:一般这个错误是由密码错误引起,解决的办法自然就是重置密码。
解决方法:
1.重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:
#vim /etc/my.cnf
在文档内搜索mysqld定位到[mysqld]文本段:
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程
2.重启MySQL:
service mysqld restart
3.重启之后命令行运行mysql即可进入mysql。
4.接下来就是用sql来修改root的密码
mysql> use mysql;
mysql> update user set password=password("你的新密码") where user="root";
mysql> flush privileges;
mysql> quit
到这里root账户就已经重置成新的密码了。
5.编辑my.cnf,去掉刚才添加的内容,然后重启MySQL。大功告成!
2、Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
配置文件conf/hive-site.xml中存在一些路径配置项未配置。
搜索conf/hive-site.xml文件中所有的配置内容中有如下字符串的:
${system:java.io.tmpdir}/${system:user.name}
将其修改成:
/opt/modules/apache-hive-1.1.0-bin
3、Caused by: javax.jdo.JDOFatalDataStoreException: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://localhost:3306/hivecreateDatabaseIfNotExist=true, username = root. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
之前按照另外一个文档配置的,所以mysql的root权限配置成了远程的方式,但hive-site.xml文件中是按本地方式配置的,所以解决方案是“5、配置MySQL数据库”中赋予root权限更改回本地权限方式:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
另外还有别的报错,可能是用户执行权限的问题,有些命令需要使用root用户执行,需要注意。
另外,Hive概述可参考https://www.2cto.com/net/201804/735478.html