大数据常用技术介绍

604 阅读7分钟

大数据常用技术介绍

文章来源: 陶老师运维笔记- 微信公众号

大数据技术

1.架构

image.png

2.平台展示

2.1 数据流图

xx 是一数据收集、分析、下载、可视化的数据分析平台,提供离线分析、实时分析、日志检索、消息队列服务。支持xx平台、门户、游戏、安全等多个产品线。

image.png

2.2 平台展示

image.png

3.组件介绍

3.1 日志采集

多种日志:Apache, Nginx, Mysql, Hadoop, App 海量日志: KB -> MB -> GB -> TB 散落的日志:node_A/path_x, node_B/path_y, node_B/path_z, node_B/path_m

多种海量日志,运维困难:cat, tail, grep, sort, shell, python 故需要采集工具

Scribe:

image.png

Logstash:

www.elastic.co/guide/en/lo…

image.png

Filebeat:

www.elastic.co/guide/en/be… Filebeat是轻量级单用途的日志收集工具,用于在没有安装java的服务器上专门收集日志,可以将日志转发到logstash、elasticsearch或redis等场景中进行下一步处理。

Rsyslog:

Flume:

  • flume.apache.org/FlumeUserGu…
  • www.cnblogs.com/qingyunzong… Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

3.2 Kafka

Kafka特点: 高吞吐量: 生产者约25万消息/s(50 MB/s),消费55万消息/s (110 MB/s)。 分布式: producer、broker和consumer均为分布式的。 持久化: 将消息持久化到磁盘,数据持久化以及replication防止数据丢失。 应用场景: 同时支持online和offline的场景。

image.png

image.png

命令:

bin/kafka-server-start.sh config/server.properties
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
bin/kafka-topics.sh --list --zookeeper localhost:2181
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
This is a message
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

3.3 Hadoop

Hadoop是使用Java编写,允许分布在集群,使用简单的编程模型的计算机大型数据集处理的Apache的开源框架。

image.png
Hadoop主要有两个层次,即:加工/计算层(MapReduce),以及存储层(Hadoop分布式文件系统)。

MapReduce: MapReduce是一种处理技术和程序模型基于Java的分布式计算。 MapReduce算法包含了两项重要任务,即Map 和 Reduce。Map采用了一组数据,并将其转换成另一组数据,其中,各个元件被分解成元组(键/值对)。其次,减少任务,这需要从Map 作为输入并组合那些数据元组成的一组小的元组输出。作为MapReduce暗示的名称的序列在Map作业之后执行reduce任务。

HDFS : Hadoop 分布式文件系统(HDFS)提供了一个设计在普通硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。来自其他分布式文件系统的差别是显著。它高度容错并设计成部署的低成本的硬件。提供了高吞吐量的应用数据访问。并且适用于具有大数据集的应用程序。

除了上面提到的两个核心组件,hadoop的框架还包括以下两个模块。

  • Hadoop通用:这是Java库和其他Hadoop组件所需的实用工具。
  • Hadoop YARN :这是作业调度和集群资源管理的框架。

常见流程:

image.png

3.4 HBASE

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;

image.png
组成部件说明: Client: 使用HBase RPC机制与HMaster和HRegionServer进行通信 Client与HMaster进行通信进行管理类操作 Client与HRegionServer进行数据读写类操作

Zookeeper: Zookeeper Quorum存储-ROOT-表地址、HMaster地址 HRegionServer把自己以Ephedral方式注册到Zookeeper中,HMaster随时感知各个HRegionServer的健康状况 Zookeeper避免HMaster单点问题

HMaster: HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master在运行 主要负责Table和Region的管理工作: 1 管理用户对表的增删改查操作 2 管理HRegionServer的负载均衡,调整Region分布 3 Region Split后,负责新Region的分布 4 在HRegionServer停机后,负责失效HRegionServer上Region迁移

HRegionServer: HBase中最核心的模块,主要负责响应用户I/O请求,向HDFS文件系统中读写数据

3.5 Hive

image.png

HiveSQL

su - hdfs
 hive> create TABLE mypokes( id INT, name string)  ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t’  LINES TERMINATED BY '\n' STORED AS TEXTFILE;
  hive> describe mypokes;
  hive> show create table mypokes;
  hive> load data local inpath '/tmp/tt.txt' into table mypokes;   
  hive> select * from mypokes; 
  hive> drop table mypokes;

Hive VS RDBM

image.png

3.6 Storm

水平扩展:通过加机器、提高并发数就提高处理能力 自动容错:自动处理进程、机器、网络异常 实时:数据不写磁盘,延迟低(毫秒级) 流式:不断有数据流入、处理、流出

image.png
image.png

3.7 Spark

spark.apache.org/

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。 Spark特点:

  • 基于内存的分布式计算模型。轻量级快速处理。
  • 很适用于数据挖掘与机器学习等需要迭代场景。
  • 可以方便地和Hadoop整合。
  • 快速的实时的流处理
    image.png

Spark SQL是Spark用来处理结构化数据的一个模块,它提供了两个编程抽象分别叫做DataFrame和DataSet,它们用于作为分布式SQL查询引擎。从下图可以查看RDD、DataFrames与DataSet的关系。

image.png
Hive,它是将Hive SQL转换成MapReduce,然后提交到集群上执行的,大大简化了编写MapReduce程序的复杂性,而且MapReduce这种计算模型执行效率比较慢。类比Hive,Spark SQL,它时将Spark SQL转换成RDD,然后提交到集群上执行,执行效率非常快!

3.8 ES

www.elastic.co/guide/index… www.elastic.co/guide/en/el…

ES (elaticsearch简写), Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

ES/MYSQL概念对比:

image.png

3.9 Presto

Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析;但是对于OLTP场景,并不是Presto所擅长,所以不要把Presto当做数据库来使用。

数据源: Presto需要从其他数据源获取数据来进行运算分析,它可以连接多种数据源,包括Hive、RDBMS(Mysql、Oracle、Tidb等)、Kafka、MongoDB、Redis等

一条Presto查询可以将多个数据源的数据进行合并分析。 比如:select * from a join b where a.id=b.id;,其中表a可以来自Hive,表b可以来自Mysql。

优点: Presto是一个低延迟高并发的内存计算引擎,相比Hive,执行效率要高很多。

3.10 Greenplum

greenplum.cn/

Greenplum 大数据平台基于MPP(大规模并行处理)架构,具有良好的弹性和线性扩展能力,内置并行存储、并行通讯、并行计算和优化技术,兼容 SQL 标准,具备强大、高效、安全的PB级结构化、半结构化和非结构化数据存储、处理和实时分析能力。

Greenplum属于OLAP

OLTP(On-Line Transaction Processing,联机事务处理)系统:也称为生产系统,它是事件驱动的、面向应用的,比如交易系统就是一个典型的OLTP系统。 OLAP(On-Line Analytical Processing,联机分析处理)系统: 是基于数据仓库的信息分析处理过程,是数据仓库的用户接口部分。是跨部门的、面向主题的。

image.png

GreenPlum架构:

image.png

参考:


陶老师运维笔记