Overview
Hive is very similar to Apache Pig. What it does is let you create tables and load external files into tables using SQL. Then it creates MapReduce jobs in Java. Java is a very wordy language so using Pig and Hive is simpler.
Some have said that Hive is a data warehouse tool (Bluntly put, that means an RDBMS used to do analytics before Hadoop was invented.). In fact you can use Apache Sqoop to load data into Hive or Hadoop from a relational database.
(This article is part of our Hadoop Guide. Use the right-hand menu to navigate.)
Installation
In this document we will introduce Hive mainly by using examples. You need to install Apache Hadoop first. Then you can install MySQL to store metadata. (Or you could use Derby. Here we use MySQL). Hive will create data in Hadoop.
So first install Hadoop. Then execute these steps:
apt-get install mysql-server apt-get install libmysql-java
Download and extract Hive to /usr/local/hive. Then in .bashrc set:
export HIVE_HOME=/usr/local/hive/apache-hive-2.0.1-bin export PATH=$PATH:$HIVE_HOME/bin
Make this softlink:
ln -s /usr/share/java/mysql-connector-java.jar $HIVE_HOME/lib/mysql-connector-java.jar
Then open MySQL to create the schema,etc:
mysql -u root -p mysql> CREATE DATABASE metastore; mysql> USE metastore;
Here use the schema that most nearly matches the version you are using. (In this tutorial we are using Hive 2.0.1 but there is no 2.0.1 schema. So we used 2.0.0.)
mysql> SOURCE /usr/local/hive/apache-hive-2.0.1-bin/scripts/metastore/upgrade/mysql/hive-schema-2.0.0.mysql.sql mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY password'; mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'password'; mysql> flush privileges;
Now edit $HIVE_HOME/conf/hive-site.xml:
javax.jdo.option.ConnectionURL jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true metadata is stored in a MySQL server javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver MySQL JDBC driver class javax.jdo.option.ConnectionUserName hiveuser user name for connecting to mysql server javax.jdo.option.ConnectionPassword password password for connecting to mysql server
If you have set up Hadoop as a cluster you might need to run the next command. You will know if that is the case if you get an error about that.
$HADOOP_HOME/bin/hadoop dfsadmin -safemode leave
Also if you have installed Spark you could choose to execute this to get rid of a warning message-
unset SPARK_HOME
Now run the Hive shell:
hive