hive是什么?
- 由facebook开源,用于解决海量结构化日志的数据统计;
- 基于hadoop的一个数据仓库工具,使用HDFS进行存储并将结构化数据文件映射成一张表,并提供类sql查询的功能,其底层采用MR进行计算;
- 本质是将HQL转化成MR程序。
准备工作
- Java 1.5以上(我的为jdk1.8)
- Hadoop 2.0以上(我的为2.8.4)
安装流程
# 1. 下载解压安装包
cd /usr/local
wget http://archive.apache.org/dist/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz
tar -zxvf apache-hive-0.13.1-bin.tar.gz
2.配置环境变量
vi /etc/profile
#添加内容:
#Hive
export HIVE_HOME=/usr/local/hive-1.2.1
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
# 3.配置文件
# conf/hive-env.sh
cd conf
cp hive-env.sh.template hive-env.sh
vi hive-env.sh
#添加内容:
#Hadoop&&Hive
HADOOP_HOME=/usr/local/hadoop-2.8.4
export HIVE_CONF_DIR=/usr/local/hive-1.2.1/conf
#4.配置hive-site.xml
[root@master conf]# cp hive-default.xml.template hive-default.xml
[root@master conf]# vi 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>
安装并配置mysql
这里我们采用MySQL数据库保存Hive的元数据,而不是采用Hive自带的derby来存储元数据。
1.centos7下mysql的安装请参考:centos7安装MySQL
##安装Mysql
cd /usr/local
wget http://dev.mysql.com/get/Downloads/MySQL-5.5/MySQL-5.5.48-1.linux2.6.x86_64.rpm-bundle.tar
tar -zxvf MySQL-5.5.48-1.linux2.6.x86_64.rpm-bundle.tar
yum install perl
rpm -ivh MySQL-server-5.5.48-1.linux2.6.x86_64.rpm
rpm -ivh MySQL-client-5.5.48-1.linux2.6.x86_64.rpm
rpm -e [原有数据库] --nodeps
service mysql start
/usr/bin/mysql-secure-installation
Mysql安装不成功,我这里暂时是用MariaDB替代的,目前启动Hive是没有问题的,不知道会不会在其他方面遇到问题。
##安装mariaDB
##centos7内置的MySQL镜像已经放弃Oracle公司的MySQL,改用MySQL的分支mariaDB,安装mariadb:
yum install mariadb
##然后使用命令systemctl start mariadb,提示如下:
Failed to start mariadb.service: Unit mariadb.service failed to load: No such file or directory
##则是找不到mariadb这个服务。之所以找不到,是因为mariadb的安装本身就没有完成,执行以下命令,查看mariadb的依赖情况:
$ sudo yum search mariadb
执行以下,安装缺少的依赖包:
$ yum install mariadb-embedded mariadb-libs mariadb-bench mariadb mariadb-sever
##然后再启动mariadb,正常,如果要设置开机自启动mariadb,使用以下命令:
$ systemctl enable mariadb
##一定要记得,使用yum install命令安装mysql时,需要多加一个通配符"*",使用如下命令:
yum install mariadb*
关于mysql与mariaDB的关系,这还是一个挺有故事的情节:CentOS 7为什么放弃了MySQL,而改使用MariaDB?
2.下载mysql jdbc 包,下载mysql-connector-java-5.1.46.tar.gz
cd /usr/local
tar -zxvf mysql-connector-java-5.1.46.tar.gz
cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar /usr/local/hive-1.2.1/lib
3. 启动并登陆mysql shell
mysql -uroot -p
create database hive;
grant all on *.* to hive@localhost identified by 'hive';
4. 新建hive数据库:
mysql -uroot -p
create database hive;
5. 配置mysql允许hive接入:
grant all on *.* to hive@localhost identified by 'hive';
flush privileges;
6. 启动hive
start-dfs.sh
start-yarn.sh
hive
启动hive之前,请先启动hadoop集群。
Hive起来如图:
参考:
https://www.zhihu.com/question/41832866