1.安装hive
1.1解压缩(/opt下)
tar -zxvf apache-hive-1.2.1-bin.tar.gz
mv apache-hive-1.2.1-bin hive
1.2配置环境变量
vi ~/.bashrc
export HIVE_HOME=/opt/hive
export PATH=$HIVE_HOME/bin
source ~/.bashrc
2.安装mysql(hadoop001)
2.1 安装mysql server
yum install -y mysql-server
service mysqld start
chkconfig mysqld on
2.2 安装mysql connector
yum install -y mysql-connector-java
2.3 将mysql connector拷贝到hive的lib包中
cp /usr/share/java/mysql-connector-java-5.1.17.jar /opt/hive/lib
2.4 在mysql上创建hive元数据库,并对hive进行授权
create database if not exists hive;
grant all privileges on hive.* to 'hive'@'%' identified by 'hive';
grant all privileges on hive.* to 'hive'@'localhost' identified by 'hive';
grant all privileges on hive.* to 'hive'@'hadoop001' identified by 'hive';
flush privileges;
use hive_metadata;
3.配置hive-site.xml
3.1 创建hive-site.xml
mv hive-default.xml.template hive-site.xml
3.2 修改hive-site.xml中以下几项
vi hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop001:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
4.配置hive-env.sh和hive-config.sh
mv hive-env.sh.template hive-env.sh
vi /opt/hive/bin/hive-config.sh
export JAVA_HOME=/usr/jdk1.7.0_55
export HIVE_HOME=/opt/hive
export HADOOP_HOME=/opt/hadoop
5.使用
hive
6.Hive报错处理
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
解决
将hive下的新版本jline的JAR包拷贝到hadoop下:
cp /opt/hive/lib/jline-2.12.jar /opt/hadoop/share/hadoop/yarn/lib
---------------------------------
启动时
Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
解决:
创建文件夹/opt/hive/iotmp
修改配置文件hive-site.xml
将${system:java.io.tmpdir}所在value,替换为/opt/hive/iotmp/
---------------------------------
建表时
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:For direct MetaStore DB connections, we don't support retries at the client level.)
解决:
这是由于字符集的问题,需要配置MySQL的字符集:
mysql> alter database hive character set latin1;