与 Hadoop 类似,Hive 也有 3 种运行模式: 1. 内嵌模式 将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。
2. 本地模式 这种模式是将元数据保存在本地独立的数据库中(一般是 MySQL),这用就可以支持多会话和多用户连接了。
3. 远程模式 此模式应用于 Hive 客户端较多的情况。把 MySQL 数据库独立出来,将元数据保存在远端独立的 MySQL 服务器中,避免了在每个客户端都安装 MySQL 服务从而造成冗余浪费的情况。
二、下载安装HIVE1、 下载: 到hive官网下载对应的hive安装包 2、 安装 解压到安装目录
tar -zxvf apache-hive-x.tar.gz
3、配置环境变量
vi /etc/profile
添加:
export HIVE_HOME=/usr/local/hive ###安装路径
export PATH=$PATH:$HIVE_HOME/bin
4、hive 的配置文件 $HIVE_HOME/conf 对应的是 Hive 的配置文件路径: 4.1 hive-site.xml
cp hive-default.xml.template hive-site.xml
hive-site.xml 主要配置有: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y2Wjc5oX-1594976765789)(https://dn-anything-about-doc.qbox.me/userid46108labid766time1427423801808)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4KU7mrQt-1594976765790)(https://dn-anything-about-doc.qbox.me/userid46108labid766time1427423813828)]
- hive.metastore.warehouse.dir 该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。
- hive.exec.scratchdir 该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下。
4.2 hive-env.sh 根据实际情况修改
# The heap size of the jvm stared by hive shell script can be controlled via:
#
# export HADOOP_HEAPSIZE=1024
#
# Larger heap size may be required when running queries over large number of files or partitions.
# By default hive shell scripts use a heap size of 256 (MB). Larger heap size would also be
# appropriate for hive server (hwi etc).
# Set HADOOP_HOME to point to a specific hadoop install directory
# HADOOP_HOME=/usr/local/hadoop
# Hive Configuration Directory can be controlled by:
# export HIVE_CONF_DIR=/usr/local/hive/conf
# Folder containing extra ibraries required for hive compilation/execution can be controlled by:
# export HIVE_AUX_JARS_PATH=/usr/local/hive/lib
5、 创建必要的目录 在hive-site.xml中我们提到了两个重要的目录, hive.metastore.warehouse.dir : Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。 hive.exec.scratchdir : Hive 的数据临时文件目录 ,默认位置为 HDFS 上面的 /tmp/hive 路径下。 hdfs上没有,我们要创建, 并赋予写(w)的权限
$ hadoop dfs -mkdir /user/hive/warehouse
$ hadoop dfs -mkdir /tmp/hive
$ hadoop dfs -chmod 777 /user/hive/warehouse
$ hadoop dfs -chmod 777 /tmp/hive
如果你遇到 no such file or directory 类似的错误,就一步一步新建目录,例如:
$ hadoop dfs -mkdir /tmp
$ hadoop dfs -mkdir /tmp/hive
6、修改 io.tmpdir 路径 要修改 hive-site.xml 中所有包含 ${system:java.io.tmpdir} 字段的 value 即路径(vim下 / 表示搜索,后面跟你的关键词,比如搜索 hello,则为 /hello , 再回车即可),你可以自己新建一个目录来替换它,例如 /home/hive/iotmp . 同样注意修改写权限。(以下是一个修改示例,其他的同理)
将
${system:java.io.tmpdir}/${system:user.name}
改为:
/home/hive/iotmp
三、启动hive
su hadoop # 进入hadoop用户,密码:hadoop
ssh localhost # 确保ssh直连
start-all.sh # 启动hadoop
schematool -dbType mysql -initSchema # 初始化hive的元数据库
hive # 启动hive
##二、安装hive-1.2.2 ###2.1、删除HDFS下的hive元数据
hdfs dfs -rm -r /user/hive/
###2.2、删除数据库中的元数据
mysql -h 135.251.254.224 -P 3307 -uroot -proot
drop database hive;
###必须使用flush privileges;
flush privileges;
###2.3、问题: Terminal initialization failed; falling back to unsupported ####原因: 原因是hadoop目录下存在老版本jline: ####解决办法: 将hive1.2.2lib下的jline复制到/opt/hadoop/share/hadoop/yarn/lib
hive的jdbc模式