文章目录
1. Hive的基本安装
1.1 下载
Hive的下载地址:下载链接
1.2 上传解压
在Hadoop用户状态下,将Hive的安装文件拷贝到安装目录下并解压。
1.3 配置Hive的环境变量
配置Hive的环境变量时,需要root用户配置,所以首先切换到root用户下:
su root
vi /etc/profile
使环境变量生效:
source /etc/profile
1.4 验证Hive
使用hive命令,成功报错:
注意:如果没有安装Spark不会报该错误,如果安装高版本的Spark会报该错误,原因是:
spark升级到spark2以后,原有lib目录下的大JAR包被分散成多个小JAR包,原来的spark-assembly-*.jar已经不存在,所以hive没有办法找到这个JAR包
使用vi hive命令,找到出处:
修改为:
继续使用hive命令,接着报错:
解决方案:
用Hive的lib目录下的jline包,替换掉/home/hadoop/software/hadoop-2.6.5/share/hadoop/yarn/lib下低版本的JAR包,如下图所示:
删掉:
拿过来:
cp jline-2.12.jar /home/hadoop/software/hadoop-2.6.5/share/hadoop/yarn/lib
继续使用hive命令:
怎么说???不老实就盘它,,如果有任何解决不了的BUG欢迎下方留言讨论。。
2. MySQL的安装
上一篇文章有讲到有3种Metastore的配置方式,分别是内嵌模式、本地模式和远程模式。一般采用本地模式,而本地模式需要MySQL作为Hive Metastore的存储数据库,因此需要安装MySQL。
2.1 下载安装
首先,看一下linux系统中是否已经有mysql了:
rpm -qa | grep mysql
果然有,影响我发挥了,删掉!
rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64
删不掉就强制删除!(强力模式是针对提示有依赖的其他文件时使用的)
然后,使用yum进行安装:
yum install -y mysql-server mysql mysql-deve
然后,看看有木有:
2.2 MySQL的初始化
首先,启动MySQL服务:
由于在使用MySQL数据库时,需要首先启动MySQL服务,所以我们设置为开机自启动,首先看一下是否已经为开机自启动:
全部关闭了,则表示没有开机自启动,那么,设置为开机自启动:
chkconfig mysqld on
注意:如果2,3,4,5为启动状态则表明已经开机自启动。
我们在第一次开启服务时发现:
所以,我们需要给root账号设置密码(这个root账号时MySQl的root账号而非Linux的root账号):
mysqladmin -u root password '这里写你的密码'
mysql -u root -p
登录成功!!!
3. Hive的配置
3.1 配置MySQL为Hive元数据存储数据库
- 使用root用户登入MySQL
mysql -u root -p
- 创建hadoop账户
create user 'hadoop'@'localhost' identified by 'hadoop';
- 为hadoop账户添加权限
grant all privileges on *.* to 'hadoop'@'localhost' with grant option;
- 检查账户是否创建成功
select User,Host from mysql.user;
- 退出MySQL,并重启MySQl服务
exit;
service mysqld restart
- 使用hadoop账户登录
mysql -u hadoop -p
密码是hadoop
- 创建Hive元数据库
create database hive_metadata
- 配置hive的hive-site.xml文件
进入Hive的conf目录:
cp hive-default.xml.template hive-site.xml
vi hive-site.xml
3000多行的配置文件怎么配!!!
vi搜索操作:需要修改的地方:
<name>javax.jdo.option.ConnectionURl</name>
<value>jdbc:mysql://localhost:3306/hive_metadata?createDatabaseIfNotExist=true</value>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hadoop</value>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
3.2 配置hosts文件
进入root用户,编辑/etc/hosts文件,插入:
4. 启动hive
错误原因:
hive/lib中缺少mysql-connect的jar包
解决错误:
下载连接
mysql-connector-java-5.1.47.tar.gz
上传到linux之后解压,然后拷贝到hive/lib目录下:
执行hive接着报错:
解决问题:
mkdir /home/hadoop/software/apache-hive-1.2.2-bin/tmp
然后再修改hive-site.xml文件,需要设置Hive作业的本地临时空间,就是上面创建tmp文件,我具体查了一下总共需要修改四个地方:
<property>
<name>hive.exec.local.scratchdir</name>
<value>/home/hadoop/software/apache-hive-1.2.2-bin/tmp/${system:user.name}</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/home/hadoop/software/apache-hive-1.2.2-bin/tmp/${hive.session.id}_resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
<property>
<name>hive.querylog.location</name>
<value>/home/hadoop/software/apache-hive-1.2.2-bin/tmp/${system:user.name}</value>
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/home/hadoop/software/apache-hive-1.2.2-bin/tmp/${system:user.name}/operation_logs</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
再次启动hive:
终于成功了!!!