安装环境配置
将文件apache-hive-1.2.1-bin.tar.gz通过XFTP工具上传到其node1
解压压缩包
tar -zxvf apache-hive-1.2.1-bin.tar.gz
将其移动到/usr下
mv apache-hive-1.2.1-bin /usr/
替换jline jar包
hadoop中yarn/lib下原有jline jar包版本:jline-0.9.94.jar
hive/lib下版本:jline-2.12.jar
把/usr/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar 替换为
/usr/apache-hive-1.2.1/lib/jline-2.12.jar
先把/usr/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar删除,再把hive目录下的包复制过来
rm -rf /usr/hadoop/share/hadoop/yarn/lib/jline-0.9.94.jar
cd /usr/apache-hive-1.2.1-bin/lib/
cp jline-2.12.jar /usr/hadoop/share/hadoop/yarn/lib/
查看是否拷贝成功
cd /usr/hadoop/share/hadoop/yarn/lib
通过ll命令查看
配置hive环境变量
vi /etc/profile
配置HIVE_HOME,并将HIVE_HOME/bin拼接到PATH后面
export HIVE_HOME=/usr/apache-hive-1.2.1-bin
export PATH=$PATH:$HIVE_HOME/bin
使生效
source /etc/profile
配置hive的hadoop目录
进入配置文件目录cd /usr/apache-hive-1.2.1-bin/conf/
复制hive-env.sh.template 文件并重命名为hive-env.sh
cp hive-env.sh.template hive-env.sh
编辑vi hive-env.sh
找到#HADOOP_HOME一行,重新写一行配置HADOOP_HOME路径
HADOOP_HOME=/usr/hadoop-2.5.2 (注意自己hadoop目录名字)
hive部署
hive部署包括三种方式:本地derby、本地mysql、远端mysql
本地derby
hive本身内置了一个derby数据库
进入配置文件目录
cd /usr/apache-hive-1.2.1-bin/conf/
复制hive-default.xml.template文件并重命名为hive-site.xml
scp hive-default.xml.template hive-site.xml
编辑hive-site.xml文件
vi hive-site.xml
清空配置:将光标置于要删除的首行,输入:.,
−
1
d
表
示
删
除
当
前
行
到
倒
数
第
二
行
这
里
把
光
标
定
位
于
<
p
r
o
p
e
r
t
y
>
一
行
!
[
在
这
里
插
入
图
片
描
述
]
(
h
t
t
p
s
:
/
/
i
m
g
−
b
l
o
g
.
c
s
d
n
i
m
g
.
c
n
/
20181208142343381.
p
n
g
?
x
−
o
s
s
−
p
r
o
c
e
s
s
=
i
m
a
g
e
/
w
a
t
e
r
m
a
r
k
,
t
y
p
e
Z
m
F
u
Z
3
p
o
Z
W
5
n
a
G
V
p
d
G
k
,
s
h
a
d
o
w
1
0
,
t
e
x
t
a
H
R
0
c
H
M
6
L
y
9
i
b
G
9
n
L
m
N
z
Z
G
4
u
b
m
V
0
L
3
d
l
a
X
h
p
b
l
8
z
O
T
M
4
M
T
g
z
M
w
=
=
,
s
i
z
e
1
6
,
c
o
l
o
r
F
F
F
F
F
F
,
t
7
0
)
然
后
输
入
:
.
,
-1d表示删除当前行到倒数第二行 这里把光标定位于<property>一行 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181208142343381.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTM4MTgzMw==,size_16,color_FFFFFF,t_70) 然后输入:.,
−1d表示删除当前行到倒数第二行这里把光标定位于<property>一行![在这里插入图片描述](https://img−blog.csdnimg.cn/20181208142343381.png?x−oss−process=image/watermark,typeZmFuZ3poZW5naGVpdGk,shadow10,textaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTM4MTgzMw==,size16,colorFFFFFF,t70)然后输入:.,-1d 再回车,即删除原来所有配置(configuration之间的未被注释的就是配置)
再配置如下内容
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
这种方式元数据保存在hive_home/conf/ metastore_db文件夹中,即上面配置的数据库名称
启动hive,保证hadoop已正常启动,
如未启动请分别启动zkServer.sh start、 start-dfs.sh、start-yarn.sh、service mysqld start
再直接输入hive
可以看到进入hive的一个命令行模式
如果报以下错误
解决:
打开 HADOOP下面/usr/hadoop-2.5.2/etc/haoop下的
(因为在做MapReduce和HDFS的实验的时候引入过这个,可以暂时注释之前的)
添加 :export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:SOMGTHING ELSE
改好之后重启hadoop集群,再次运行即可;
输入show tables; 成功查询
show functions
本地mysql方式
首先需要在本地安装mysql数据库:
yum -y install mysql-server
启动mysql服务
service mysqld start
安装后root的默认密码为空,可以登陆后设置root的密码:mysql -uroot -p
默认密码为空,直接回车
重新设置root密码:use mysql 这里我们也设置为root
执行语句: update user set password=password(‘root’) where user=‘root’;
重新刷新权限表: flush privileges;
exit退出
重新登陆mysql –uroot -p,则需要输入root密码
再切换到mysql数据库:use mysql
查询user表:select user,host from user
将user字段的值为空的记录删除:delete from user where user=’’;
再将host为node1的改为%,表示允许从其他主机远程访问
update user set host=’%’ where host=‘node1’;
给root授予所有权限:
GRANT ALL PRIVILEGES ON . TO root@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘root’;
刷新权限:flush privileges;
exit退出再重新启动service mysqld restart
再配置hive-site.xml为本地mysql模式
删除hive-site.xml原来所有配置
再添加以下内容,#后面(包括#)为注释,实际配置时请删除
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.81.131:3306/hive?createDatabaseIfNotExist=true</value>
</property> #node1的IP+端口号+数据库名
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value> #mysql数据库用户名
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value> #mysql数据库密码
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,node3</value> #zookeeper节点
</property>
将mysql的驱动jar 包放到hive的lib目录/usr/apache-hive-1.2.1-bin/lib下
重新启动hive,同样进入hive命令行模式
输入exit;退出
我们再进入mysql命令行通过show databases;可以看到多了一个hive的数据库,即我们在hive-site.xml中配置的数据库