必须准备两个前提;
1、hadoop 集群
2、一个关系型数据库 推荐使用MySQL安装Mysql:https://blog.csdn.net/qq_41851454/article/details/79731930
https://hive.apache.org/
优点: 简单 使用方便
缺点: 管理不方便,数据没法迁移
1、 上传安装包 apache-hive-2.3.2-bin.tar.gz
2、 解压安装包 tar -zxvf apache-hive-2.3.2-bin.tar.gz -C /home/hadoop/apps/
3、 进入到 bin 目录,运行 hive 脚本:[hadoop@hadoop02 bin]$ ./hive
注意:
1、这时候一般会报错:Terminal initialization failed; falling back to unsupported,是因为hadoop(/root/apps/hadoop-2.6.5/share/hadoop/yarn/lib)集群的 jline-0.9.94.jar 包版本过低,替换成 hive/lib 中的 jline-2.12.jar 包即可。记住:所有 hdfs 节点都得替换hadoop-2.6.5/share/hadoop/yarn/lib/jline-0.9.4.jar 替换成 jline-2.12.jar
如果报错就按照此方式解决,没有报错就不用管,在使用新的 hadoop-2.7.5 版本中已经不存在这个问题。所以不用关注。
1、 准备好 MySQL(请参考以下文档,或者自行安装 MySQL,或者一个可用的 MySQL)
2、 上传安装包 apache-hive-2.3.2-bin.tar.gz
3、 解压安装包 tar -zxvf apache-hive-2.3.2-bin.tar.gz -c ~/apps/
[potter@potter2 ~]$ tar -zxvf apache-hive-2.3.2-bin.tar.gz -C ~/apps/
4、 修改配置文件
[potter@potter2 conf]# touch hive-site.xml
[potter@potter2 conf]# vi hive-site.xml
javax.jdo.option.ConnectionURL
jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true
JDBC connect string for a JDBC metastore
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore
javax.jdo.option.ConnectionUserName
root
username to use against metastore database
javax.jdo.option.ConnectionPassword
root
password to use against metastore database
可选配置,该配置信息用来指定 Hive 数据仓库的数据存储在 HDFS 上的目录
hive.metastore.warehouse.dir
/user/hive/warehouse
hive default warehouse, if nessecory, change it
5、 一定要记得加入 MySQL 驱动包(mysql-connector-java-5.1.40-bin.jar)该 jar 包放置在 hive的根路径下的 lib 目录
[potter@potter2 ~]$ cp mysql-connector-java-5.1.40-bin.jar /home/potter/apps/apache-hive-2.3.3-bin/lib/
6、 安装完成,配置环境变量vi ~/.bashrc 添加以下两行内容:
[potter@potter2 ~]$ vi ~/.bashrc
export HIVE_HOME=/home/hadoop/apps/apache-hive-2.3.2-bin
export PATH=$PATH:$HIVE_HOME/bin
保存退出。
最后不要忘记:
[potter@potter2 ~]$ source ~/.bashrc
7、 验证 Hive 安装
[potter@potter2 ~]$ hive --help
Usage ./hive --service serviceName
Service List: beeline cleardanglingscratchdir cli hbaseimport hbaseschematool help hiveburninclient hiveserver2 hplsql jar lineage llapdump llap llapstatus metastore metatool orcfiledump rcfilecat schemaTool version
Parameters parsed:
--auxpath : Auxiliary jars
--config : Hive configuration directory
--service : Starts specific service/component. cli is default
Parameters used:
HADOOP_HOME or HADOOP_PREFIX : Hadoop install directory
HIVE_OPT : Hive options
For help on a particular service:
./hive --service serviceName --help
Debug help: ./hive --debug --help
[potter@potter2 ~]$
8、 初始化元数据库注意:当使用的 hive 是 2.x 之前的版本,不做初始化也是 OK 的,当 hive 第一次启动的时候会自动进行初始化,只不过会不会生成足够多的元数据库中的表。在使用过程中会慢慢生成。但最后进行初始化。如果使用的 2.x 版本的 Hive,那么就必须手动初始化元数据库。使用命令:
[potter@potter2 ~]$ schematool -dbType mysql -initSchema
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/potter/apps/apache-hive-2.3.3-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/potter/apps/hadoop-2.7.5/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL: jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true
Metastore Connection Driver : com.mysql.jdbc.Driver
Metastore connection User: root
Starting metastore schema initialization to 2.3.0
Initialization script hive-schema-2.3.0.mysql.sql
Initialization script completed
schemaTool completed
[potter@potter2 ~]$
9、 启动 Hive 客户端
[potter@potter2 ~]$ hive --service cli
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/potter/apps/apache-hive-2.3.3-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/potter/apps/hadoop-2.7.5/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Logging initialized using configuration in jar:file:/home/potter/apps/apache-hive-2.3.3-bin/lib/hive-common-2.3.3.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive>
10、退出 Hive
hive> quit;
或者
hive> exit;