安装Hive之前先安装hadoop集群和mysql。

下载地址:

http://mirror.bit.edu.cn/apache/hive/

下载安装包:

wget http://mirror.bit.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gz

解压安装:

tar -xf apache-hive-1.2.2-bin.tar.gz -C /usr/local/
cd /usr/local/
ln -sv apache-hive-1.2.2-bin/ hive

下载连接mysql的依赖包:

cd /usr/local/hive/lib
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar

设置环境变量:

cat > /etc/profile.d/hive.sh <<EOF
export HIVE_HOME=/usr/local/hive
export PATH=\$PATH:\$HIVE_HOME/bin
EOF
. /etc/profile.d/hive.sh

普通用户环境变量:

cat >> ~/.bashrc <<EOF
export HIVE_HOME=/usr/local/hive
export PATH=\$PATH:\$HIVE_HOME/bin
EOF
. ~/.bashrc

根据spark的版本需要修改hive启动命令:要不然访问不到依赖包报错。

vim /usr/local/hive/bin/hive
sparkAssemblyPath=`ls ${SPARK_HOME}/lib/spark-assembly-*.jar`

修改为:

sparkAssemblyPath=`ls ${SPARK_HOME}/jars/*.jar`

创建配置:

cd /usr/local/hive/conf
cp hive-default.xml.template hive-site.xml

hive-site.xml:去掉原有其他的配置。

<configuration>
  <property>
    <name>hive.exec.scratchdir</name>
    <!--这个目录是在hdfs文件系统里的-->
    <value>/user/hive/tmp</value>
  </property>
 
  <!--Hive作业的HDFS根目录创建写权限 -->
  <property>
    <name>hive.scratch.dir.permission</name>
    <value>777</value>
  </property>
 
  <!--hdfs上hive元数据存放位置 -->
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <!--这个目录是在hdfs文件系统里的-->
    <value>/user/hive/warehouse</value>
  </property>
 
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://mysql: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>root</value>
  </property>
 
  <!--连接数据库用户密码 -->
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
  </property>
 
  <!--客户端显示当前查询表的头信息 -->
  <property>
    <name>hive.cli.print.header</name>
    <value>true</value>
  </property>
 
  <!--客户端显示当前数据库名称信息 -->
  <property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
  </property>
 
</configuration>

其他配置:

cp hive-log4j.properties.template hive-log4j.properties

修改个日志的目录:

property.hive.log.dir = /usr/local/hive/logs

创建日志目录:

mkdir /usr/local/hive/logs
chmod g+w /usr/local/hive/logs

修改属组属主:

cd /usr/local/
chown -R  hadoop.hadoop hive/ hive

初始化:

su hadoop
~]$ schematool -dbType mysql -initSchema

启动服务:这个服务是api接口,会监听在10000端口上。

hiveserver2 &

启动客户端:

~]$ hive
Logging initialized using configuration in file:/usr/local/apache-hive-1.2.2-bin/conf/hive-log4j.properties
hive (default)> show databases;
OK
database_name
default
Time taken: 0.98 seconds, Fetched: 1 row(s)
hive (default)>

关闭:

hive (default)> exit;

或:

kill 进程