Ubuntu安装hive,并配置mysql作为元数据库
1、安装并配置hive
1.1下载并解压hive源程序
Hive1.1.1链接地址:
http://mirror.bit.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gz
#解压到/usr/local中,sudo是指以管理员的身份运行该文件
sudo tar -zxvf ./apache-hive-1.2.2-bin.tar.gz -C /usr/local
cd /usr/local
#将文件名修改为hive
sudo mv apache-hive-1.2.2-bin hive
#修改文件权限
sudo chown –R hduser:hduser hive
1.2配置环境变量
为了方便使用,我们把hive命令加入到环境变量中去,编辑~/.bashrc文件:
sudo gedit ~./barshc
在最前面一行添加:
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
保存退出后,运行source ~/.bashrc,(一定要记得source一下)使配置生效
1.3修改/usr/local/hive/conf下的hive-site.xml, 让其连接到mysql
将hive-default.xml.template重命名为hive-default.xml;
新建一个文件touch hive-site.xml,并在hive-site.xml中粘贴如下配置信息:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
</configuration>
2、安装并配置mysql
2.1使用以下命令即可进行mysql安装,注意安装前先更新一下软件源以获得最新版本:
sudo apt-get update
sudo apt-get install mysql-server
上述命令会安装以下包:
apparmor
mysql-client-5.7
mysql-common
mysql-server
mysql-server-5.7
mysql-server-core-5.7
因此无需再安装mysql-client等。安装过程会提示设置mysql root用户的密码,设置完成后等待自动安装即可。默认安装完成就启动了mysql。
2.2启动管理init.d里关于mysql的命令:
sudo /etc/init.d/mysql start|stop|restart|reload|force-reload|status
2.3确认是否启动成功,mysql阶段处于LISTEN状态表示启动成功
sudo netstat –tap | grep mysql
2.4 进入mysql shell界面
mysql –u root –p
mysql> show varibales like “char%”
导致导入时中文乱码的原因是character_set_server默认设置是latin1, 以下方式修改编码方式,可以一劳永逸:
sudo gedit /etc/mysql/my.cnf
在[mysqld]下添加一行character_set_server = utf8
2.5新建hive数据库
#这个hive数据库是和hive-site.xml中的localhost:3306/hive的hive对应,用来保存hive元数据
mysql> create database hive;
2.6 配置mysql允许hive接入
#将所有数据库的所有表的所有权限赋给hive用户,后面的”hive”是配置hive-site.xml中的连接密码
mysql> grant all on *.* to [email protected] identified by “hive”;
#刷新mysql系统权限关系表
mysql> flush privileges
3、hive安装配置中遇到的问题
3.1启动时报错
需要将hadoop下的jline-0.9.94.jar删除,然后从hive的lib目录中拷贝一个:
cp /usr/local/hive/lib/jline-2.12.jar /usr/local/hadoop/share/hadoop/yarn/lib
删除hadoop下的旧版本:
mv /usr/local/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar
3.2 Hive在spark2.0.0启动时无法访问spark-assembly-*.jar
自从spark2.0.0发布之后,每次启动hive的时候,总会发现一个小问题,启动 hive --service metastore的时候,会报一个小BUG: 无法访问<PathToSpark>/lib/spark-assembly-*.jar
分析其源码架构,发现主要原因是:在/<PathToHive>/bin/hive文件中,有这样的命令:加载spark中相关的JAR包。但是spark升级到spark2以后,原有lib目录下的大JAR包被分散成多个小JAR包,原来的spark-assembly-*.jar已经不存在,所以hive没有办法找到这个JAR包。
解决方法: 修改/<PathToHive>/bin/hive文件,将加载原来的lib/spark-assembly-*.jar`替换成jars/*.jar,就不会出现这样的问题。
3.3 启动时报错:拒绝连接
原因:namenode未启动