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

Ubuntu安装hive,并配置mysql作为元数据库

2.4 进入mysql shell界面

mysql –u root –p

mysql> show varibales like “char%”

Ubuntu安装hive,并配置mysql作为元数据库

导致导入时中文乱码的原因是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启动时报错

Ubuntu安装hive,并配置mysql作为元数据库

需要将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

Ubuntu安装hive,并配置mysql作为元数据库

分析其源码架构,发现主要原因是:在/<PathToHive>/bin/hive文件中,有这样的命令:加载spark中相关的JAR包。但是spark升级到spark2以后,原有lib目录下的大JAR包被分散成多个小JAR包,原来的spark-assembly-*.jar已经不存在,所以hive没有办法找到这个JAR包。

解决方法: 修改/<PathToHive>/bin/hive文件,将加载原来的lib/spark-assembly-*.jar`替换成jars/*.jar,就不会出现这样的问题。

Ubuntu安装hive,并配置mysql作为元数据库

 3.3 启动时报错:拒绝连接

   原因:namenode未启动