Hadoop数据库性能优化

大数据基础知识

2021-05-16  本文已影响0人  偶余杭

为了一场紧急考试,没有正经系统学习过大数据知识的我开始恶补概念

涉及Hadoop、Hbase、Spark、Flink、Flume、Kafka、Sqoop、HDFS、Hive、Mapreduce、Impala、Spark-Sql、Elasticsearch、Yarn、Hue、Cloudera Manager,这篇文章的目的就是作为小白要把这些相关的知识概念还有可能的考点整理出来。

大数据-概念

什么是大数据

大数据(Big data或Megadata):大数据,或称巨量数据、海量数据、大资料,指的是所涉及的数据量规模巨大到无法通过人工,在合理时间达到截取、管理、处理、并整理成为人类所能解读的形式的数据资产。

☆大数据的5个特征(5V)

Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)、Veracity -(真实性)

大数据的数据单位

按顺序给出所有单位:bit(比特))、Byte(字节)、KB、MB、GB、TB、PB、EB、ZB、YB、NB、DB、CB。(进率2^10)
1Byte = 8 Bit
1 KB(Kilobyte) = 1,024 Bytes 
1 MB (Megabyte)= 1,024 KB = 1,048,576 Bytes 
1 GB(Gigabyte) = 1,024 MB = 1,048,576 KB = 1,073,741,824 Bytes
1 TB (Terabyte)= 1,024 GB = 1,048,576 MB = 1,073,741,824 KB = 1,099,511,627,776 Bytes
1 PB(Petabyte) = 1,024 TB = 1,048,576 GB =1,125,899,906,842,624 Bytes
1 EB(Exabyte) = 1,024 PB = 1,048,576 TB = 1,152,921,504,606,846,976 Bytes
1 ZB(Zettabyte) = 1,024 EB = 1,180,591,620,717,411,303,424 Bytes
1 YB(Yottabyte) = 1,024 ZB = 1,208,925,819,614,629,174,706,176 Bytes
1 NB(NonaByte) = 1,024 YB
1 DB(DoggaByte) = 1,024 NB
1 CB (Corydonbyte )= 1,024 DB

大数据的计算模式

批处理计算 ( MapReduce,Spark):最适合于完成大数据批处理的计算模式是MapReduce,首先,MapReduce对具有简单数据关系、易于划分的大规模数据采用“分而治之”的并行处理思想;然后将大量重复的数据记录处理过程总结成Map和Reduce两个抽象的操作;最后MapReduce提供了一个统一的并行计算框架,把并行计算所涉及到的诸多系统层细节都交给计算框架去完成,以此大大简化了程序员进行并行化程序设计的负担。

流式计算 (Scribe ,Flume,Storm,S4,SparkStreaming)流式计算是一种高实时性的计算模式,需要对一定时间窗口内应用系统产生的新数据完成实时的计算处理,避免造成数据堆积和丢失。

迭代计算( HaLoop ,iMapReduce,Twister,Spark)为了克服Hadoop MapReduce难以支持迭代计算的缺陷,工业界和学术界对Hadoop MapReduce进行了不少改进研究。HaLoop把迭代控制放到MapReduce作业执行的框架内部,并通过循环敏感的调度器保证前次迭代的Reduce输出和本次迭代的Map输入数据在同一台物理机上,以减少迭代间的数据传输开销;

交互式计算

图计算 (Pregel,PowerGrapg,GraphX)

内存计算(Dremel,Hana,redis)

大数据技术体系

image.png

大数据处理流程分为采集、存储、处理、可视化,其中需要安全、运维技术。

大数据的核心是Hadoop生态系统,Hadoop是目前应用最为广泛的分布式大数据处理框架,它包含大量的组件,从数据采集到数据存储、数据处理以及数据分析等一系列技术组件。


image.png

一、数据源说明

二、数据仓库

1、什么是数据仓库?

在计算中,数据仓库(DW或DWH)也称为企业数据仓库(EDW),是用于报告和数据分析的系统,被视为商业智能的核心组件。他们将当前和历史数据存储在一个地方,用于为整个企业的工作人员创建分析报告。

2、数据仓库两种操作方式的特点

①在线分析处理(OLAP)的特点是交易量相对较低。查询往往非常复杂,涉及到聚合。对于OLAP系统,响应时间是一种有效性度量。数据挖掘技术广泛使用OLAP应用程序。OLAP数据库以多维模式(通常为星型模式)存储汇总的历史数据。与数据集市相比,OLAP系统通常具有数小时的数据延迟,而数据集市预计延迟将接近一天。OLAP方法用于分析来自多个来源和视角的多维数据。OLAP中的三个基本操作是:总结(合并),钻取和切片和切块。

②联机事务处理(OLTP)的特点是大量短暂的在线事务(INSERT,UPDATE,DELETE)。OLTP系统强调非常快速的查询处理并保持多访问环境中的数据完整性。对于OLTP系统,有效性以每秒交易次数来衡量。OLTP数据库包含详细和当前的数据。用于存储事务数据库的模式是实体模型(通常是3NF)。规范化是对在该系统中数据建模技术的规范。

三、ETL与DM的区别

ETL/Extraction-Transformation-Loading——用于完成DB到DW的数据转存,它将DB中的某一个时间点的状态,“抽取”出来,根据DW的存储模型要求,“转换”一下数据格式,然后再“加载”到DW的一个过程,这里需要强调的是,DB的模型是ER模型,遵从范式化设计原则,而DW的数据模型是雪花型结构或者星型结构,用的是面向主题,面向问题的设计思路,所以DB和DW的模型结构不同,需要进行转换。

DM/Data Mining/数据挖掘——这个挖掘,不是简单的统计了,他是根据概率论的或者其他的统计学原理,将DW中的大数据量进行分析,找出我们不能直观发现的规律。

Hadoop

一、Hadoop

1、什么是Hadoop?

Hadoop的定义是:一个用java语言编写的便于大型数据集合的分布式储存和计算的软件框架。Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

2、Hadoop特点是什么?

①高效率(Efficient):分布式云计算,采用标准x86架构服务器大规模集群实现,每个模块都是一个离散的处理单元,使用并行计算技术,及群内各计算节点负载均衡,当某节点负荷过高时,可智能的将负荷转移到其他节点,并支持节点线性平滑扩展;分布式云存储,采用x86服务器的本地硬盘实现,使用分布式文件系统,每份数据至少保存在3个节点,保证存储设计的性能和可靠性目标。

②可靠性(Reliable):能搞自身的维护数据的多个成本,并且在任务失败是自动的重新部署计算任务

③可扩容性(Scalable):能可靠的储存和处理PB级的数据

④成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。

数据采集工具

离线数据采集:sqoop
实时数据采集:ogg
日志数据采集:logstash\flume

sqoop

Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。
用于收集日志数据、对数据进行简单处理,并写道数据接收方。
Flume提供了从console(控制台)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系统),支持TCP和UDP等2种模式,exec(命令执行)等数据源上收集数据的能力。

flume

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
可线性扩展,具有数据一致性。
Agent主要由:source,channel,sink三个组件组成.
Source:
从数据发生器接收数据,并将接收的数据以Flume的event格式传递给一个或者多个通道channel,Flume提供多种数据接收的方式,比如Avro,Thrift,twitter1%等
Channel:
channel是一种短暂的存储容器,它将从source处接收到的event格式的数据缓存起来,直到它们被sinks消费掉,它在source和sink间起着桥梁的作用,channel是一个完整的事务,这一点保证了数据在收发的时候的一致性. 并且它可以和任意数量的source和sink链接. 支持的类型有: JDBC channel , File System channel , Memory channel等.
sink:
sink将数据存储到集中存储器比如Hbase和HDFS,它从channels消费数据(events)并将其传递给目标地. 目标地可能是另一个sink,也可能HDFS,HBase.

数据存储工具

hdfs:分布式文件存储系统,适合一次写、多次读的场景
kudu:分布式文件存储系统,可快速更新,支撑快速读写场景
hbase:分布式数据库
kafka:消息总线
hive:数据仓库

HDFS

hdfs:基于java的hadoop分布式文件存储系统,适合大文件分布式存储,一次写、多次读的场景,比如一个1T的文件,存储的时候,会存储在多台机器而不是单台机器。
特点:

BLOCKSIZE:大文件会被切分成块,通常64或者128MB
每个数据库会被存储在不同的地方,通常是3个

HDFS命令:
1、列出文件和目录清单

//根目录下
hadoop fs -ls /
//当前目录下
hadoop fs -ls
//用户主目录
hadoop fs -ls /user/foo

2、hdfs目录操作

//建立目录
hadoop fs -mkdir /user/foo/newdir
//删除目录
hadoop fs -rmdir /user/foo/newdir

3、上传文件后目录

//上传文件
hadoop fs -put localfile /user/foo/newfile
//上传目录
hadoop fs -put localdir /user/foo/newdir
//追加上传
hadoop fs -apendToFile localfile /user/foo/oldfile

4、查看文件

//查看文件内容
hadoop fs -cat /user/foo/file
//查看文件末尾
hadoop fs -tail /user/foo/file

5、下载文件或目录

//下载文件
hadoop fs -get /user/foo/remotefile localfile

6、删除文件或目录

//删除文件
hadoop fs -rm /user/foo/remotefile

Hbase

Hbase是建立在HDFS之上的,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构存储集群。
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

hive

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。Hive主要包括用户接口、元数据存储、解释器、编译器、优化器、执行器等组成部分。

//建立数据库
create database db1
//删除数据库
drop database db1
//切换数据库
user db1

2、表操作

//显示库中所有表
show tables
//建表
create table table1(aaa string)
//删除表
drop table table1

spark-SQL

用来做数据仓库数据加工的工具,是spark生态的一个子系统,与hive一样把SQL处理成一个个job,由于是用内存计算,比mapreduce快,用于批量加工、交互式分析

impala

专注于数据仓库下的OLAP,一般用于前台交互式分析查询数据用,大数据处理性能较差

Elasticsearch

文档型数据查询,可用于多字段查询,适用于客户标签查询、客户资料查询等场景。

kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。是一个开源流处理平台,由scala和java编写。
是一个分布式队列系统。利用磁盘顺序读写实现持久化,完全分布式结构,基于zookeeper实现了消息生产者和消费者的负载均衡。支持多个消费者做为一个整体来消费消息,支持多主题的消息发布、订阅模式。
优点:

适用场景:

数据处理工具

离线计算:mapreduce
DAG计算:tez
内存计算:spark
实时计算:spark streaming(微批处理)、flink

mapreduce

Mapreduce是一种分布式计算模型,主要用于搜索领域,处理海量数据的计算问题。由两个阶段组成,Map和reduce,用户主需要实现map和reduce两个函数,就可以实现分布式计算。
特点:

spark

spark基于内存计算的开源集群分布式计算系统,使用scala开发。
基于内存计算,效率高于hadoop.job中间输出和结果可以保存在内存中,从而不需要读写HDFS,节省了磁盘IO耗时,号称性能比hadoop块一百倍。
它拥有Hadoop MapReduce所具有的优点,但不同于MapReduce的是:Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark兼容Hadoop生态系统,可以运行在Yarn上,能读取HDFS,HBase, Cassandra以及任何Hadoop数据源
Spark可以用于以下场景:
√ Spark Shell/Spark Submit的批处理
√ Spark SQL的交互式查询
√ Spark Streaming的实时处理应用
√ MLlib/MLbase的机器学习
√ GraphX的图处理和SparkR数据挖掘

使用场景:

flink

Flink是开源的分布式,高性能,高可用,准确的流处理框架,用于在无界和有界数据流上进行有状态计算,支持实时流处理和批处理。

开源软件,实时处理工具,可以同时处理批处理和流处理任务
快速可靠,用作通用数据处理,速度快
使用方便,采用java\scala编程语言
flink定位时数据处理引擎,flink可以批流结合
flink最大的优势是连续查询。

集群资源管理

YARN

YARN (Yet Another Resource Negotiator的缩写)是开源Hadoop 分布式处理框架中的资源管理和作业调度技术。作为Hadoop 的核心组件之一,YARN 负责将系统资源分配给在Hadoop集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。
组成:

数据可视化工具

hue:CDH自带的可视化工具,通过web界面查询hive、impala的可视化数据,任务执行比较慢,但是比较稳定,适用于大数据处理,性能较好,用户DPI日志离线分析、网络信令离线分析
zepplin:可视化工具
klbana:查询es数据

HUE

Hue是一个开源的Apache Hadoop UI系统,由Cloudera贡献给开源社区,它是基于Python Web框架Django实现的。通过使用Hue可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作Hive、Impala查询,运行MapReduce Job等等

数据安全运维

cloudera manager:CDH自带的工具,集群安装、部署、配置等

cloudera manager

cloudera manager覆盖了集群所有资源与服务的统一配置、管理、监控、诊断。
特点:

上一篇下一篇

猜你喜欢

热点阅读