一、Hive安装软件下载地址
- 1.Hive 官网地址:http:/hive.apache.org/
- 2.文档查看地址:https://cwiki.apache.org/confluence/display/Hive/GettingStarted
- 3.下载地址:http:/archive.apache.org/dist/hive/
二、Hive安装--外置 MySQL 版本
1、 准备好hadoop集群,准备好 MySQL(任意一台集群的机器上)
hadoop集群搭建:https://blog.csdn.net/weixin_41685388/category_9439573.html
Linux的MySQL安装:https://blog.csdn.net/weixin_41685388/article/details/102522730
2、 上传安装包
apache-hive-2.3.4-bin.tar.gz -->[hdp@hdp02 ~]$ 根目录下
在linux编辑窗口用alt+p 打开sftp插件:put -r 路径\文件 或者直接拖拽上传
3、 解压安装包
[hdp@hdp02 ~]$ mkdir apps
[hdp@hdp02 ~]$ tar -zxvf apache-hive-2.3.4-bin.tar.gz -C ~/apps/
4、 修改配置文件
- [hdp@hdp02 ~]$ cd ~/apps/apache-hive-2.3.4-bin/conf/
- [hdp@hdp02 conf]$ touch hive-site.xml
- [hdp@hdp02 conf]$ vi hive-site.xml #在新建的配置文件中写入下列代码信息
-
说明一下代码:① mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true 如果mysql安装不在这台机上,如安装在hdp03机上,那么将localhost改为hdp03的主机ip或者主机映射名称;② hive.metastore.warehouse.dir 可选配置,该配置信息用来指定 Hive 数据仓库的数据存储在 HDFS 上的目录 。
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hivedb?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>root</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>hive default warehouse, if nessecory, change it</description>
</property>
</configuration>
5、加入 MySQL 驱动包
- 一定要加入 MySQL 驱动包(mysql-connector-java-5.1.40-bin.jar)该 jar 包放置在 hive 的根路径下的 lib 目录(下载--上传--复制)
- cp -p /home/hdp/mysql-connector-java-5.1.40-bin.jar /home/hdp/apps/apache-hive-2.3.4-bin/lib/mysql-connector-java-5.1.40-bin.jar
6、配置环境变量
vi ~/.bashrc 在后面添加以下两行内容:
- export HIVE_HOME=/home/hadoop/apps/apache-hive-2.3.3-bin
- export PATH=$PATH:$HIVE_HOME/bin
保存退出。 最后不要忘记重启: source ~/.bashrc
7、验证是否安装Hive : hive --help
[hdp@hdp02 ~]$ hive --help
Usage ./hive <parameters> --service serviceName <service parameters>
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
8、元数据库初始化
[hdp@hdp02 ~]$ schematool -dbType mysql -initSchema
9、 启动 Hive 客户端
[hdp@hdp02 ~]$ hive --service cli
# 或者
[hdp@hdp02 ~]$ hive
10.退出
hive> quit;
# 或者
hive> exit;
三、Hive 的命令窗口使用(三种连接方式 )
3.1、CLI 连接使用Hive
- 直接输入命令:[hdp@hdp02 ~]$ hive
- 即可使用,测试:hive> show databases; #返回OK
- 在apps/apache-hive-2.3.4-bin/conf/下的hive-site.xml文件中添加如下配置信息,实现显示当前数据库,及查询表的头信息配置。重新启动hive即可。(这里不配置CLI也是可以使用的)
-
<property> <name>hive.cli.print.header</name> <value>true</value> </property> <property> <name>hive.cli.print.current.db</name> <value>true</value> </property>
- 接下来就可以直接进行相关操作了,感受一下
-
hive> show databases; OK default Time taken: 5.726 seconds, Fetched: 1 row(s) hive> create database demo01; OK Time taken: 0.366 seconds hive>create table demo01(id int, name string) row format delimited fields terminated by ","; ... OK Time taken: 0.369 seconds hive> show databases; OK default demo01 Time taken: 5.111 seconds, Fetched: 2 row(s) hive> use demo01; OK Time taken: 0.031 seconds hive> insert into demo01 (id,name) values (1101,"zhangsan"); ... OK Time taken: 42.906 seconds #是不是非常非常慢,慢就对了,因为以后都会尽量避免写操作 hive> select * from demo01; OK 1101 zhangsan Time taken: 0.231 seconds, Fetched: 1 row(s)
-
-
-
3.2、jdbc(HiveServer2/beeline )连接使用Hive
(0)第一次连接前需要修改hadoop的两个配置文件
①修改 hadoop 集群的 hdfs-site.xml 配置文件:加入一条配置信息,表示启用 webhdfs
[hdp@hdp02 ~]$ cd /home/hdp/hadoop-2.7.7/etc/hadoop/
[hdp@hdp02 hadoop]$ vi hdfs-site.xml
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
②修改 hadoop 集群的 core-site.xml 配置文件:加入两条配置信息:表示设置 hadoop 的代理用户
配置解析: hadoop.proxyuser.hdp.hosts 配置成*的意义,表示任意节点使用 hadoop 集群的代理用户 hadoop 都能访问 hdfs 集群,hadoop.proxyuser.hdp.groups 表示代理用户的组所属
[hdp@hdp02 hadoop]$ vi core-site.xml
<property>
<name>hadoop.proxyuser.hdp.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hdp.groups</name>
<value>*</value>
</property>
③ 将修改过的集群发送到其他节点
-
[hdp@hdp02 hadoop]$ scp hdfs-site.xml core-site.xml hdp01:/home/hdp/hadoop-2.7.7/etc/hadoop/
-
......
-
[hdp@hdp02 hadoop]$ scp hdfs-site.xml core-site.xml hdp04:/home/hdp/hadoop-2.7.7/etc/hadoop/
④ 重启集群
(1)、启动HiveServer2/beeline
①先启动 hiveserver2 服务 (假如我的hive建立在那台机就在哪台机操作)
启动为前台:hiveserver2 启动为后台: nohup hiveserver2 1>/home/hdp/hiveserver.log 2>/home/hdp/hiveserver.err & 或者:nohup hiveserver2 1>/dev/null 2>/dev/null & 或者:nohup hiveserver2 >/dev/null 2>&1 & 以上 3 个命令是等价的,第一个表示记录日志,第二个和第三个表示不记录日志 。1:表示标准日志输出, 2:表示错误日志输出 ,如果我没有配置日志的输出路径,日志会生成在当前工作目录,默认的日志名称叫做: nohup.xxx 注意:如果使用启动为前台,那么启动后就不要动这个窗口了,然后在克隆一个该节点的操作窗口 |
[hdp@hdp02 hadoop]$ nohup hiveserver2 1>/home/hdp/hiveserver.log 2>/home/hdp/hiveserver.err &
[1] 13823
[hdp@hdp02 hadoop]$ jps
9920 ResourceManager
9811 NodeManager
13915 Jps
9501 DataNode
13823 RunJar
② 启动 beeline 客户端去连接:
- [hdp@hdp02 hadoop]$ beeline -u jdbc:hive2://hdp02:10000 -n hdp #一步到位的启动[-u : 指定元数据库的链接信息 -n : 指定用户名和密码 ]
- 或者:分步启动
- [hdp@hdp02 hadoop]$ beeline #开启beeline
- beeline> !connect jdbc:hive2://hdp02:10000 #指定元数据库的链接信息
- Enter username for jdbc:hive2://hdp02:10000: hdp #用户名
- Enter password for jdbc:hive2://hdp02:10000: ****** #密码
[hdp@hdp02 hadoop]$ beeline
......
Beeline version 2.3.4 by Apache Hive
beeline> !connect jdbc:hive2://hdp02:10000
Connecting to jdbc:hive2://hdp02:10000
Enter username for jdbc:hive2://hdp02:10000: hdp
Enter password for jdbc:hive2://hdp02:10000: ******
Connected to: Apache Hive (version 2.3.4)
Driver: Hive JDBC (version 2.3.4)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://hdp02:10000>
- 实际操作一下
0: jdbc:hive2://hdp02:10000> show databases;
+----------------+
| database_name |
+----------------+
| default |
| demo01 |
+----------------+
2 rows selected (2.024 seconds)
0: jdbc:hive2://hdp02:10000> use demo01;
No rows affected (0.188 seconds)
0: jdbc:hive2://hdp02:10000> show tables;
+-----------+
| tab_name |
+-----------+
| demo01 |
+-----------+
1 row selected (0.277 seconds)
0: jdbc:hive2://hdp02:10000> select * from demo01;
+------------+--------------+
| demo01.id | demo01.name |
+------------+--------------+
| 1101 | zhangsan |
+------------+--------------+
1 row selected (2.278 seconds)
0: jdbc:hive2://hdp02:10000>
3.3、Web UI 连接使用Hive
这里由于不常用暂时就不再介绍,想要深入了解的同学百度一下,按照搭建步骤操作。