准备工作
在安装hive之前要保证hadoop,mysql,jdk安装完毕
1.上传压缩包并解压
首先准备安装包和驱动,并将二者通过xftp传入到linux中
解压
tar -zxvf apache-hive-1.2.1-bin.tar.gz
2.修改目录名称
mv apache-hive-1.2.1-bin hive-1.2.1
3.备份配置文件
cd /usr/local/soft/hive-1.2.1/conf
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
4.修改配置文件
首先修改hive-env.sh,直接在上一步的conf目录下进行
//加入下面三行内容到文件中
HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
JAVA_HOME=/usr/local/soft/jdk1.8.0_171
HIVE_HOME=/usr/local/soft/hive-1.2.1
修改hive-site.xml
<!--数据存储位置就是我们在HDFS上看的目录-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
(注意:修改自己安装mysql的主机地址)
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.40.110:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8&useSSL=false</value>
</property>
(固定写法,mysql驱动类的位置)
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
(mysql的用户名)
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
(mysql的用户密码)
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
(你的hive安装目录的tmp目录)
<property>
<name>hive.querylog.location</name>
<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>
(同上)
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>
(同上)
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>
<!--指定这个的时候,为了启动metastore服务的时候不用指定端口-->
<!--hive --service metastore -p 9083 & | hive --service metastore-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
<description>thrift://master:9083</description>
</property>
5.拷贝mysql驱动到$HIVE_HOME/lib目录下
cp /usr/local/soft/mysql-connector-java-5.1.49.jar /usr/local/soft/hive-1.2.1/lib/
6.将hadoop的jline-0.9.94.jar的jar替换成hive的版本。
cp /usr/local/soft/hive-1.2.1/lib/jline-2.12.jar /usr/local/soft/hadoop-2.7.6/share/hadoop/yarn/lib/
7.配置环境变量并使其生效
export HIVE_HOME=/usr/local/soft/hive-1.2.1
export PATH=.:$HIVE_HOME/bin
环境变量生效
source /etc/profile
8.第一种交互方式
shell交互Hive,用命令hive启动一个hive的shell命令行,在命令行中输入sql或者命令来和Hive交互。
启动hadoop start-all.sh
服务端启动metastore服务(后台启动):nohup hive --service metastore &
进入命令:hive
退出命令行:quit;
9.第二种交互方式
Hive启动为一个服务器,对外提供服务,其他机器可以通过客户端通过协议连接到服务器,来完成访问操作,这是生产环境用法最多的
但在使用第二种交互方式之前,需要先进行配置
修改hadoop的core-site.xml配置文件,改完重启hadoop即可
cd /usr/local/soft/hadoop-2.7.6/etc/hadoop
<!--该参数表示可以通过httpfs接口hdfs的ip地址限制-->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<!--通过httpfs接口访问的用户获得的群组身份-->
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
将设置好的配置文件分别传给node1,node2
scp core-site.xml node1:`pwd`
scp core-site.xml node2:`pwd`
要想使用beeline让其他节点连接上hive,需要将master中的hive文件夹移动到node1,node2中
scp -r /usr/local/soft/hive-1.2.1/ node1:`pwd`
scp -r /usr/local/soft/hive-1.2.1/ node2:`pwd`
服务端启动hiveserver2服务:
nohup hive --service metastore &
nohup hiveserver2 &
需要稍等一下,启动服务需要时间:进入命令:
1)先执行: beeline ,再执行: !connect jdbc:hive2://master:10000
2)或者首先要进入到hive-1.2.1的bin目录下
直接执行: beeline -u jdbc:hive2://master:10000 -n root
退出命令行:!exit
10.第三种交互方式
使用 –e 参数来直接执行hql的语句
或者将sql语句写入文件夹,用 hive -f执行
hive cli和beeline cli的区别