一、安装模式
内嵌模式:元数据保持在内嵌的Derby模式,只允许一个会话连接 
 本地独立模式:在本地安装Mysql,把元数据放到Mysql内 
 远程模式:元数据放置在远程的Mysql数据库 
官方文档:
 https://cwiki.apache.org/confluence/display/Hive/GettingStarted
二、内嵌模式
(1)下载hive包
wget http://mirrors.cnnic.cn/apache/hive/hive-1.1.0/apache-hive-1.1.0-bin.tar.gz
(2) 解压到工作目录
tar -xzvf hive-1.1.0.tar.gz
(3)移动到特定目录
sudo mv  apache-hive-1.1.0-bin  /home/mk/software/hive-1.1.0
#创建快捷方式方便使用
ln -s /home/mk/hive-1.1.0 /home/mk/software/hive-1.1.0(5)创建工作目录
hdfs dfs -mkdir /tmp
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod g+w /user/hive/warehouse
hdfs dfs -chmod g+w /tmp
(5)构建工作环境
在 /etc/profile.d/hive.sh中增加以下内容:
 export JAVA_HOME=/home/mk/jdk-1.8export Hadoop_HOME=/home/mk/hadoop-2.6.0export HIVE_HOME=/home/mk/hive-1.1.0export PATH=$PATH:$HIVE_HOME/bin
# hive中jline已升级到jline2,而hadoop lib中的 jline还是jline0.9,需要配置如下export HADOOP_USER_CLASSPATH_FIRST=true
当前shell窗口生效source /etc/profile或者重启系统
(6)配置Hive
cp $HIVE_HOME/conf/hive-default.xml $HIVE_HOME/conf/hive-site.xml配置hive-site.xml
hive.metastore.warehouse.dir:(HDFS上的)数据目录
hive.exec.scratchdir:(HDFS上的)临时文件目录
hive.metastore.warehouse.dir默认值是/user/hive/warehouse
hive.exec.scratchdir默认值是/tmp/hive-${user.name}
(7)改变 $HIVE_HOME的目录所有者
chown -R mk:mk $HIVE_HOME(8)初始化元数据
$HIVE_HOME/bin/hive --service metastore (9)运行hive
hive
hive>
(10)测试hive
hive> create TABLE pokes( id INT, name string); 
hive> SHOW TABLES;
hive> select * from pokes; 
hive> drop table pokes;
三、独立模式
(1)安装Mysql并启动服务
1)安装mysql服务端和客户端
Hive需要管理一些数据,一般我们使用MySQL来存放
在线安装执行命令
sudo apt-get install mysql-server mysql-client启动停止mysql服务
sudo start mysql  
sudo stop mysql  修改了配置文件后需要重启 mysqld 才能使这些修改生效。
  
 检查 mysqld 进程是否已经开启: 
pgrep mysqld如果进程开启,这个命令将会返回该进程的 id
2)mysql账号赋权
在Mysql中为hive建立账号,并授予足够的权限,例如hive账号,授予all privileges
mysql -u root -p
password:****
mysql>
use mysql;
create database if not exists hive_metadata;
grant all privileges on hive_metadata.* to 'hive'@'%' identified by 'mk' with grant option;
flush privileges;
用上述账号登陆mysql,然后创建数据库,比如名叫hive_metadata,用于存放hive的元数据
3)设置MySQL远程访问(可选)
1.取消本地监听
  正常情况下,mysql占用的3306端口只是在IP 127.0.0.1上监听,拒绝了其他IP的访问(通过netstat可以查看到)。
 取消本地监听需要修改 my.cnf 文件: 
sudo vim /etc/mysql/my.cnf//找到如下内容,并注释
 bind-address = 127.0.0.1
  2.重启 mysql
(2)安装Hive
下载安装包
 http://apache.fayea.com/apache-mirror/hive/stable/apache-hive-1.1.0-bin.tar.gz
 安装
 1、上传包
 上传hive包到/home/hadoop上
 2、解压
   tar–zxvf apache-hive-1.1.0-bin.tar.gz
 3、重命名包
 mv apache-hive-1.1.0-bin hive-1.1.0
(3)配置hive
1、  配置环境变量
 执行命令
sudo gedit /etc/profile.d/hive.sh注意CLASSPATH,PATH在原有上增加hive包路径
#set hive environment
HIVE_HOME=/home/mk/hive-1.1.0
PATH=$HIVE_HOME/bin:$PATH
CLASSPATH=$CLASSPATH:$HIVE_HOME/lib
export HIVE_HOME
export PATH
export CLASSPATH使配置生效:
source /etc/profile2、  配置hive-env.sh
 进入配置目录
cd $HIVE_HOME/conf打开配置文件hive-env.sh,
gedit hive-env.sh进行配置
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/home/mk/hadoop-2.6.0
# Hive Configuration Directory can be controlled by:export HIVE_CONF_DIR=/home/mk/hive-1.1.0/conf
3、配置hive-site.xml
 配置hive-site.xml文件,指出使用本地Mysql数据库,已经连接协议,账号、口令等
创建配置文件
 $cp hive-default.xml.template hive-site.xml
 在同上的目录下
 修改hive-site.xml
<property><name>hive.metastore.warehouse.dir</name><value>/home/mk/hive/warehouse</value><description>location of default database for the warehouse</description>
</property>
<property><name>hive.exec.scratchdir</name><value>/home/mk/hive/scratchdir</value><description>Scratch space for Hive jobs</description>
</property>
<property><name>hive.querylog.location</name><value>/home/mk/hive-1.1.0/logs</value><description>Location of Hive run time structured log file</description>
</property>
<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://haddop01:3306/hive_metadata?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>root</value><description>username to use against metastore database</description>
</property>
<property><name>javax.jdo.option.ConnectionPassword</name><value>root123</value><description>password to use against metastore database</description>
</property>
<property><name>hive.exec.local.scratchdir</name>  <!--拼凑目录--> <value>/home/mk/hive-1.1.0/local/${system:user.name}</value><description>Local scratch space for Hive jobs</description></property>
<property><name>hive.downloaded.resources.dir</name><value>/home/mk/hive-1.1.0/local/${hive.session.id}_resources</value><description>Temporary local directory for added resources in theremote file system.</description></property>
<property><name>hive.server2.logging.operation.log.location</name><value>/home/mk/hive-1.1.0/logs/operation_logs</value><description>Top leveldirectory where operation logs are stored if logging functionality isenabled</description></property>在hive-1.1.0目录下创建local目录
执行命令
mkdir local4、  配置log4j
 在同上目录下
 创建配置文件:
 cp hive-exec-log4j.properties.template  hive-exec-log4j.properties
 cp hive-log4j.properties.template  hive-log4j.properties
 修改上面两个文件中的配置
hive.log.dir=/home/mk/hive-1.1.0/logs
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter注意如果没有logs目录就建立一个 执行命令
mkdir /home/mk/hive-1.1.0/logs(4)添加Mysql驱动包
 1、下载驱动包
 本实验使用的mysql是mysql 5.6 版本,配套的jdbc是mysql-connector-java-5.1.9-bin.jar
 这个jar在网上下载就可以了,一定要根据mysql版本选择配套的版本
2、添加驱动包
    把驱动包放到 $HIVE_HOME/lib 目录下
3、修改hadoop的库文件
 在$HADOOP_HOME/share/hadoop/yarn/lib下备份jline-0.9.94.jar
 执行命令
mv jline-0.9.94.jar jline-0.9.94.jar.bakCopy高版本的jline
cp $HIVE_HOME/lib/jline-2.12.jar $HADOOP_HOME/share/hadoop/yarn/lib(5)启动hive
初始化元数据
$HIVE_HOME/bin/hive --service metastore &执行命令启动hive
hive启动hive能进入shell表示安装成功
(6)测试hive
hive> create TABLE pokes( id INT, name string); 
hive> SHOW TABLES;
hive> select * from pokes; 
hive> drop table pokes;