目录
一、目的及要求:
目的:
掌握数据仓库Hive的使用
要求:
1.掌握数据仓库Hive的使用;
2.能够正常操作数据库、表、数据。
二、环境要求:
所需环境:
- 五台独立PC式虚拟机;
- 主机之间有有效的网络连接;
- 每台主机内存2G以上,磁盘剩余空间500M以上;
- 所有主机上安装CentOS7-64位操作系统;
- 已完成Hadoop平台的搭建;
- 已完成MySQL数据库平台的搭建;
- 已完成Hive数据仓库的安装。
集群规划:
主机名 |
IP地址 |
服务描述 |
Cluster-01 |
192.168.10.111 |
MC管理节点 |
Cluster-02 |
192.168.10.112 |
MC数据服务节点 |
Cluster-03 |
192.168.10.113 |
MC数据服务节点 |
Cluster-04 |
192.168.10.113 |
MC SQL服务节点 |
Cluster-05 |
192.168.10.114 |
MC SQL服务节点 |
三、详细步骤:
步骤一:启动
Hadoop、Hbase、Hive、Sqoop使用使用专门用于集群的用户admin进行。
启动HBase集群之前首先确保Zookeeper集群已被开启状态。 (实验5台)
Zookeeper的启动需要分别在每个计算机的节点上手动启动。如果家目录下执行启动报错,则需要进入zookeeper/bin目录执行启动命令。
启动HBase集群之前首先确保Hadoop集群已被开启状态。 (实验5台)
Hadoop只需要在主节点执行启动命令。
1、集群中所有主机上使用命令“zkServer.sh start”启动Zookeeper服务的脚本,使用命令“zkServer.sh status”查看该节点Zookeeper服务当前的状态,若集群中只有一个“leader”节点,其余的均为“follower”节点,则集群的工作状态正常;
2、在主节点使用“$start-all.sh”,备用主节点使用“$yarn-daemon.sh start resourcemanager”命令,启动Hadoop集群,在主节点查看Java进程信息,若有名为“NameNode”、“ResourceManager”的两个进程,则表示Hadoop集群的主节点启动成功。在每台数据节点,若有名为“DataNode”和“NodeManager”的两个进程,则表示Hadoop集群的数据节点启动成功;
3、确定Hadoop集群已启动状态,然后在主节点使用此命令,启动HBase集群。并在集群中所有主机上使用命令“jps”查看进程;
4、用root用户登录,并开启mysql集群,并在管理主机上查看集群是否全部已连接;
5、在主节点使用命令“hive”启动Hive,启动成功后能够进入Hive的控制台;
6、在控制台中使用命令“show databases;”查看当前的数据库列表;
步骤二:数据仓库的使用
1、查看表信息
在http://192.168.10.111:50070/查看表信息;
2、hive常用命令
(1)修改参数允许强制分桶,也可以修改hive_site.xml文件中的参数改为true;
(2)创建数据库;
(3)使用数据库;
(4)创建表;
(5)删除表;
(6)删除数据库;
(7)修改配置文件,使在导入数据的工程中,如果在见表的过程中没有指定location,那么就会在hive.metastore.warehouse.dir指定路径下,以表名创建一个文件夹,之后所有的数据就会存储在此文件夹中;
配置文件“/home/admin/hive/apache-hive-2.1.1-bin/conf/hive-site.xml”
3、Hive的数据模型_内部表;
练习:启动Hive,启动成功后能够进入Hive的控制台
(1)创建数据库,并使用数据库test2;
(2)创建数据库,并使用数据库test3;
(3)创建表t1、t2、t3、t4;
(4)查看hadoop集群中Hive仓库中的表;
(5)向t1表中添加列,并显示表信息;
(6)查看/user/hive/warehouse/目录下的test2.db和test3.db文件夹;
4、Hive的数据模型_分区表
(1)创建数据库test4,并在test4数据库中准备表数据;
(2)准备文本数据:admin用户家目录下新建sampledata.txt;
(3)将文本数据插入到数据表;
(4)向分区表中插入数据;
(5)查看表的分区信息;
(6)登录http://192.168.10.111:8088/cluster/apps可以查看job执行状态;
5、Hive的数据模型_外部表
(1)准备数据:在admin家目录下分别新建student1.txt、student2.txt、student3.txt、内容:
student1.txt内容: Tom,M,60,80,96
Mary,F,11,22,33
student2.txt内容: Jerry,M,90,11,23
student3.txt内容: Rose,M,78,77,76
Mike,F,99,98,98
(2)在hdfs上创建input目录,将文件放入HDFS文件系统;
(3)创建数据库test5,并在数据库test5中创建外部表external_student,并查询;
(4)删除HDFS上的student1.txt;
(5)查询外部表;
(6)将student.txt重新放入HDFS input目录下;
(7)查询外部表;
6、Hive的数据模型_桶表
(1)创建数据库test6,并新建一个非桶表;
(2)在admin用户家目录下新建user.txt内容;
(3)将文本数据插入到非桶数据表;
(4)查看桶表
7、Hive的数据模型_视图
(1)创建数据库test7,在test7中创建一个测试表test01,查看表结构;
(2)在admin用户的家目录下准备文本数据data1.txt;
(3)将文本数据导入 test01表,并查询test01表;
(4)创建一个View之前,使用explain命令查看创建View的命令是如何被Hive解释执行的;
(5)实际创建一个View;
(6)执行View之前,先explain查看实际被翻译后的执行过程;
(7)最后,对View执行一次查询,显示Stage-1阶段对原始表test进行了MapReduce过程;
(8)登录http://192.168.10.111:8088/cluster/apps可以查看job执行状态;
四、总结
问题一:
[root@localhost65apache-hive-2.1.1-bin]# hive
SLF4J: Class pathcontains multiple SLF4J bindings.
SLF4J: Found binding in[jar:file:/usr/local/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found bindingin[jar:file:/usr/local/hadoop-2.6.2/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Seehttp://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual bindingis of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Logging initializedusing configuration in file:/usr/local/apache-hive-2.1.1-bin/conf/hive-log4j2.propertiesAsync: true
Exception in thread"main" java.lang.RuntimeException:org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
atorg.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:591)
at
································
The last packet sentsuccessfully to the server was 0 milliseconds ago.
原因分析:hive中的日志和hadoop中日志包冲突导致
解决方法:将hive中的日志包去除即可(不要删除,修改名称即可)。如下:
[admin@Cluster-01apache-hive-2.1.1-bin]#mv/usr/local/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar/usr/local/apache-hive-2.1.1-bin/lib/log4j-slf4j-impl-2.4.1.jar.bak
[admin@Cluater-01apache-hive-2.1.1-bin]#
问题二:启动hive正常,进mysql查看hive元数据库myhive也正常,但在hive中执行show databases指令报如下错误:
解决方案:经过报错信息分析发现是metastore服务没有启动。
启动metastore(进安装hive的bin目录下执行以下命令):
bin/hive --service metastore &
启动metastore后再启动hive,然后就可以正常执行show databases指令
来源:CSDN
作者:T.machine
链接:https://blog.csdn.net/weixin_39329758/article/details/103455266