大数据平台–Hive入门1
一.大数据平台以及ETL介绍
1,ETL简介
ETL,Extraction-Transformation-Loading,即数据抽取(Extract),转换(Transform),**装载(Load)**的过程,它是构建数据仓库的重要环节。
ETL是将业务系统的数据经过抽取,清洗转换之后加载到数据仓库的过程,目的是将企业中分散,零乱,标准不统一的数据整合到一起,为企业的决策提供分析依据,ETL是BI项目重要的一个环节,通常情况下,在BI项目中ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关系到BI项目的成败。
(1)数据抽取:把不同的数据源数据抓取过来,存到某个地方;
(2)数据清洗:过滤那些不符合要求的数据或者修正数据之后再进行抽取
- 不完整的数据:比如数据里一些应该有的信息缺失,需要补全后再进行抽取;
- 错误的数据:比如字符串数据后面有一个回车操作,日期格式不正确,日期越界等,需要修正再抽取;
- 重复的数据:重复的数据记录的所有字段,需要去重。
(3)数据转换:不一致的数据转换,比如同一个供应商在结算系统的编码是XX001,而在CRM中编码是YY001,统一编码,实现由多种方法:
- 借助ETL工具(如Oracle的OWB,SQL Server的DTS,SQL Server的SSIS服务,Informatic等等)实现;
- SQL方式实现;
- ETL工具和SQL相结合------Hive
借助工具可以快速建立起ETL工程,屏蔽了复杂的编码任务,提高了速度,降低了难度,但是缺少灵活性。
SQL的方法是优点是灵活,提高ETL运行效率,但是编码复杂,对技术要求比较高。
ETL和SQL结合综合了前二者的优点,会极大地提高ETL的开发速度和效率。
ELK简介
ELK是三个开源软件的缩写,分别表示:Elasticsearch,Lodstash,Kibana,它们都是开源软件。
新增一个FileBeat,他是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上收集日志后传输给Logastash。
Logstash:
主要是用来日志的收集,分析,过滤日志的工具,支持大量的数据获取方式,一般的工作方式为C/S架构,Client端安装在需要收集日志的主机上,Server端负责将收到的各个节点日志进行过滤修改等操作在一并发往elasticsearch上去。
Kibana也是一个开源,免费的工具,kibana可以为Logstash和Elasticsearch提供日志分析友好的Web界面,可以帮助汇总,分析和搜索重要的日志数据。
Filebeat隶属于Beats,目前Beats包含4种工具:
-
Packetbeat:搜集网络流量数据;
-
Topbeat:搜集系统,进程和文件系统级别的CPU和内存使用情况;
-
Filebeat:搜集文件数据;
-
Winlogbeat:搜集Windows事件日志数据。
2,大数据平台概述
大数据平台架构
大数据系统数据流向图
大数据平台架构概述
数据抽取:Canal/Sqoop(主要解决数据库数据接入问题),还有大量的数据采用Flume解决方案。
数据存储:HDFS(文件存储),HBase(K,V存储),kafka(消息存储)。
调度:采用YARN的统一调度以及Kubernetes的基于容器的管理和调度技术。
计算分析:MR,HIVE,Storm,Spark,Kylin以及深度学习平台比如Caffe,Tensorflow等等(flink)。
应用平台:交互分析sql,多维分析:时间,地域等等。
可视化:数据分析tableau,阿里datav,hcharts,echarts。
数据应用就是指数据的业务。
二.Hive概述
- Hive是一个基于Hadoop文件系统之上的数据仓库架构,他为数据仓库的管理提供了许多功能:数据ETL(抽取,转换和加载)工具,数据存储管理和大型数据集的查询和分析能力。
- Hive定义了类SQL语言–Hive QL,HQL允许用户进行和SQL相似的操作,它可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,还允许开发人员方便地使用Mapper和Reducer操作,可以将SQL语句转换为MapReduce任务运行,这对MapReduce框架来说是一个强有力的支持。
Hive体系结构
用户接口:Client
- CLI(hive shell),JDBC/ODBC(java访问hive),WEBUI(浏览器访问hive)
元数据:MetaStore
- 元数据包括:表名,表所属的数据库(默认是default),表的拥有者,列/分区字段,表的类型(是否是外部表,管理表),表的数据所在目录等。
- 默认存储在自带的derby数据库中,推荐使用采用MySql
Hadoop:使用HDFS进行存储,使用MapReduce进行计算
驱动器(Driver)
1.解析器
- 将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具完成,比如antlr;对AST进行语法分析,比如表是否存在,字段是否存在,SQL语义是否有误(比如select中被判定为聚合的字段在group by中是否有出现)。
2.编译器:将AST编译成逻辑执行计划;
3.优化器:对逻辑执行计划进行优化;
4.执行器:把逻辑执行计划转换成可以运行的物理计划,对于Hive来说,就是MR/TEZ/Spark;
- Hive的数据存储基于Hadoop HDFS
- Hive没有专门的数据存储格式
- Hive默认可以直接加载文本文件(TextFile),还支持SequenceFile,RCFile
- 创建表时,指定Hive的列分隔符和行分隔符,Hive即可解析数据
- 存储结构主要包括:数据库,文件,表,视图,索引。
三.Hive安装
1.解压安装包
[root@hadoop01 software]# ls
apache-hive-1.2.1-bin.tar.gz hadoop-2.7.6.tar.gz jdk-8u211-linux-x64.rpm
[root@hadoop01 software]# tar -zxf apache-hive-1.2.1-bin.tar.gz -C /opt/modules/apache/
[root@hadoop01 software]# ll /opt/modules/apache/
total 8
drwxr-xr-x 8 root root 4096 Jun 9 09:34 apache-hive-1.2.1-bin
drwxr-xr-x 10 20415 101 4096 Jun 5 13:26 hadoop-2.7.6
2.修改配置文件
[root@hadoop01 conf]# cp hive-env.sh.template hive-env.sh
[root@hadoop01 conf]# vi hive-env.sh
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/opt/modules/apache/hadoop-2.7.6
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/opt/modules/apache/hive-1.2.1/conf
3.配置Hive环境变量
[root@hadoop01 hive-1.2.1]# vi /etc/profile
export HIVE_HOME=/opt/modules/apache/hive-1.2.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin
[root@hadoop01 hive-1.2.1]# source /etc/profile
4.创建Hive数据仓库存放位置和修改配置文件
[root@hadoop01 conf]# cp hive-default.xml.template hive-default.xml
在HDFS文件系统上创建如下目录
[root@hadoop01 ~]# hdfs dfs -mkdir /tmp
#如果tmp目录已存在就不需要创建了
[root@hadoop01 ~]# hdfs dfs -mkdir -p /user/hive/warehouse
#修改目录的权限
[root@hadoop01 ~]# hdfs dfs -chmod g+w /tmp
[root@hadoop01 ~]# hdfs dfs -chmod g+w /user/hive/warehouse
5.启动Hive
[root@hadoop01 conf]# hive
Logging initialized using configuration in jar:file:/opt/modules/apache/hive-1.2.1/lib/hive-common-1.2.1.jar!/hive-log4j.properties
hive>
6.hive常用命令
hive> show databases
> ;
OK
default
Time taken: 0.788 seconds, Fetched: 1 row(s)
hive> use default;
OK
Time taken: 0.051 seconds
hive> show tables;
OK
Time taken: 0.044 seconds
#创建数据库
hive> create database test01;
OK
Time taken: 0.099 seconds
hive> show