1.安装环境:有一个完全分布式的Hadoop-2.6.0。
2.安装准备:需要在网上下一个Hive的压缩包,我这儿用的是apache-hive-1.2.1-bin.tar.gz。下载地址here
3.将下载下来的hive压缩包解压,并更改用户权限。我的解压在/usr/local
sudo tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local
sudo chown -R persistence:persistence /usr/local/apache-hive-1.2.1-bin
4.设置环境变量
sudo vim /etc/profile
在最后加上
export HIVE_HOME=/usr/local/apache-hive-1.2.1-bin(这儿是你的hive的解压路径)
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile ->使配置文件生效
5.metastore->MYSQL的安装(我这是ubuntu系统)
sudo apt-get install mariadb-server mariadb-client
sudo service mysql start
sudo service mysql enable
安装好后去网上下载一个链接MYSQL的JDBC驱动,我用的是mysql-connector-java-5.1.32-bin.jar,并方人员hive的解压文件的lib目录下。
设置mysql数据库,使其能远程连接
sudo vim /etc/mysql/my.cnf
将bind-address = 127.0.0.1这行改为 bind-address = 0.0.0.0
用root登录mariadb,创建存储需要用的数据库以及相应用户
mysql -u root -p ->输入之后会提示你输入之前你设置的root密码
create database hiveDB; -> 建立数据库
alter database hiveDB character set latin1;->将编码改为Latin1,你可以设置其他编码
create user 'bee' identified by '123456'; ->创建用户
grant all privileges on hiveDB.* to 'bee'@'%' identified by '123456'; ->将允许从任意地点登陆的bee用户对hiveDB数据库的所有表执行增删查改四种操作
flush privileges; -> 刷新系统权限表
6.配置HIVE,配置文件目录在hive目录下的conf目录下
① 配置hive-site.xml,conf目录下应该没有这个文件,需要将hive-default.xml.template中的配置文件中内容复制到hive-site.xml 文件中,但是现在我们只需要用一些配置信息,所以可以在conf目录下直接新建hive-site.xml,然后在文件中写入一下内容即可。
sudo vim hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://HadoopMaster:9000/tmp/hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://HadoopMaster:3306/hiveDB?createDatabaseIfNotExist=true&characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>bee</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://HadoopMaster:9000/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>javax.jdo.option.Multithreaded</name>
<value>true</value>
</property>
</configuration>
PS:hive.exec.scratchdir->执行HIVE操作访问HDFS用于临时存储数据的目录。目录权限设置为733。我这儿用的是/tmp/hive目录。
javax.jdo.option.ConnectionURL -> 设置hive通过JDBC链接MYSQL数据库存储metastore存放的数据库地址
javax.jdo.option.ConnectionDriverName ->设置链接mysql的驱动名称。
javax.jdo.option.ConnectionUserName -> 设置存储metastore内容的数据库用户名
javax.jdo.option.ConnectionPassword -> 设置存储metastore内容的数据库用户名密码
hive.metastore.warehouse.dir -> 设置用于存放hive元数据的目录位置,改配置有三种模式,内嵌模式,本地元数据,远程元数据。具体解析见hive配置指北
②配置hive-env.sh,这个文件也是没有的,是hive-env.sh.template复制过来的
sudo cp hive-env.sh.template hive-env.sh
sudo vim hive-env.sh
将jdk的路径和hadoop的家目录导入到这个文件中:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export HADOOP_HOME=/usr/local/hadoop
注意:这时也不能启动hive服务,因为hadoop的版本是2.6.0,hive的版本是1.2.1,HIVE_HOME/lib目录下的jline-2.12.jar比HADOOP_HOME/share/hadoop/yarn/lib下的jline-0.9.94.jar版本高,版本不一致导致。所以将HIVE_HOME/lib目录下的jline-2.12.jar复制到HADOOP_HOME/share/hadoop/yarn/lib下,并将jline-0.9.94.jar删除,然后重启hadoop。
sudo cp /usr/local/apache-hive-1.2.1-bin/lib/jline-2.12.jar /usr/local/hadoop/share/hadoop/yarn/lib/
sudo rm jline-0.9.94.jar
6.安装完成验证
输入hive,进入命令行,能正常进入没有抛异常,则证明安装基本完成,以下是验证截图