赞
踩
大数据组件繁多,五花八门,这里花了几天时间针对以前笔记的Hadoop、Spark 两大生态圈的相关组件进行了分类整理,用简短的几句话对相关特性进行了总结描述,强化记忆,供学习、选型、面试。详细组件功能介绍请参考其它博文。
没有什么是一张图解决不了的,如果有就再画一张
目录
1.1 HDP
公司:hortonworks,apach社区
管理页面:Ambari
主要特点:
稳定性:较差,打开页面慢
二次开发:支持,且支持邮件报警
安装:简单,RPM包,支持滚动重启(hdfs需要设计成ha才能滚动重启)
集成性:版本较新,ambari较强,支持es,redis,presto,kylin
1.2 CDH
公司:cloudera
管理页面:cloudera manager
主要特点:
稳定性:较好
二次开发:不支持
安装:复杂,parcel包,支持滚动重启
集成性:较弱,版本较老
1.3 华为FusionInsight HD
管理页面:Manager
操作页面:Hue
主要特点:
SmallFS 小文件处理
Oozie 任务编排
2.1 HDFS
扩展性:只能横向扩展
高持久性:S3比HDFS更耐用
保留:当停止EC2和EMR实例时数据不会保留
2.2 S3
扩展性:能根据存储自动扩展
高持久性:11个9
保留:数据始终存在
计算引擎:
map/reduce
JobTracker分配任务
TaskTracker监控任务
hdfs
NameNode
SecondaryNameNode
DateNode
特点:等待上一环节全部处理完才向下
流计算:storm
机器学习:Mahout
计算引擎:
Spark
Application->Driver->Work node->Executor->Task
多个Task组成一个Stage,每个Job会被拆分成多组Task称为Stage
DAGScheduler:根据job构建基于Stage的DAG,并提交Stage给TaskScheduler(根据RDD分配)
TaskScheduler:将TaskSet提交给Work,Executor任务来源于此
特点:向前拉取数据、有向无环,基于内存比Hadoop快100倍
流计算:Spark Streaming
机器学习:Spark Mlib
5.1 HBase
特点:
主要适用于海量明细数据随机实时查询,如日志明细、交易清单、轨迹行为等
定位:列式存储数据库,适用于稀疏性数据,非结构化数据存储
支持二级索引
类似Bigtable
主键设计策略避免热点:
加盐-随机数
哈希
反转
加时间戳
结构:
HMaster
HRegionServer
HRegion 按RowKey划分
Store 对应列簇
MemStore
StoreFile
HFile
HLog
5.2 Phoneix
特点:
phoenix查询引擎会将SQL查询转换为一个或多个HBASE scan
开源的sql on hbase,它就是为Hbase而生,支持事务,高并发、低延时、简单查询、方便的二级索引,支持JDBC等优点
5.3 Kudu
特点:
定位:与HBASE类似的列式存储分布式数据库,是一个既支持随机读写、又支持OLAP分析的大数据存储引擎
master主要负责管理元数据信息,tserver主要负责table的存储与数据的增删改查
5.4 CarbonData
特点:
场景:希望一份存储同时满足快速扫描,多维分析,明细数据查询的场景
是一种新型的Apache Hadoop本地文件格式,使用先进的列式存储、索引、压缩和编码技术以提高计算效率
支持一张表内混合格式:CSV,TXT,JSON,Parquet,ORC,CarbonFile,DB实时数据同步,Flink流入库,支持Spark Extenoin,
支持非结构化数据,对接TensorFlow,Pytorch深度神经网络模型训练
结构:
carbonData file->blocket->Data Chunks
5.5 Hive
引擎:
map reduce
Tez
特点:
适用于离线的批量数据计算,通过元数据来描述HDFS上的结构化文本数据,支持HSQL、UDF
定位:数据仓库,有元数据,分内外表
适用查询分析、清洗、处理,不支持索引、修改数据
支持文本、RCFile、Hbase、ORC等多种文件格式或存储类型
表结构:
分区:指定列列值相同的分到一个区,缩小数据查询范围,提高查询速度和性能
分桶:列值取哈希将不同的数据放到不同的文件中
5.6 Impala
引擎:
查询引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分组成),可以直接从HDFS或HBASE中用select、join和统计函数查询数据
特点:
定位:一种新型的MPP查询引擎,加快数据访问,数据存储在HDFS、HBASE或者Kudu
类似分布式数据库Greenplum,分解查询,暴力scan,由Impalad、State Store和CLI组成
支持Parquet、Avro、Text、RCFile、SequenceFile等多种格式,支持存储在HDFS、HBASE、Amazon S3的数据操作
资源不能通过Yarn统一资源管理调度,所以Hadoop集群无法实现Imapla\Spark\Hive等组件动态资源共享
5.7 presto
特点:
presto是一个分布式查询引擎,完全基于内存并行计算,类impala,使用Catalog\Schema和Table这3层结构管理数据
presto可以通过Connector接入多种数据源,灵活性高,包括Hive、RDBMS(Mysql\Oracle\Tidb等)、Kafka、MongoDB、Redis等
5.8 Spark SQL
引擎:有向无环图,以Schema RDD为核心
特点:
满足低并发、高延迟、复杂计算场景,支持流、OLAP、离线分析、数据清洗、支持多源(Hbase\MongoDB\Redis\OSS等)
支持parquet/Avro/Text/JSON/ORC等多种文件格式,支持存储在HDFS、HBASE、Amazon S3上的数据操作。
5.9 Waterdrop
特点:
是一个非常易用、高性能、支持实时流式和离线批处理的海量数据处理产品,架构于Apache spark和Apache flink之上
支持海量数据ETL、聚合、多源数据处理,灵活配置,无需开发,支持从TiDB、Kafka、HDFS、Kudu中读取数据进行各种各样的数据处理
并将结果从TiDB、Clickhouse、Elasticsearch、Kafka
5.10 mongDB
特点:
是一个面向文档存储的数据库,旨在为web应用提供可扩展的高性能数据存储解决方案,利用内存计算的优势
NOSQL 最终一致性而非ACID属性,满足CAP定理,BASE,支持丰富的查询表达式、索引,热点数据放入内存,其它数据存在磁盘
5.11 汇总
整体性能:
CarbonData>Impala>spark SQL>presto>hive(Tez)
物理内存够用时:redis>mongDB>mysql
行式存储VS列式存储:
行式:
优:数据被保存在一起,insert和update容易
缺:几列查询时所有数据也都被读取,效率低
列式:
优:查询时只有被涉及到的才会被读取,查询速度快,适合高并发场景
缺:数据需重新组装,不适合表关联
6.1 Storm Hadoop生态圈
storm的容错机制需要对每条data进行ack,因此容错开销对throughputs影响巨大
几十ms级latency,容错性差
6.2 Spark Streaming
spark是micro-batch级别的计算,各种优化做的很好,它的throughputs是最大的
延时latency是秒级,容错性好
6.3 Flink
容错机制较为轻量,对throughputs影响较小
百ms级latency
一个面向流处理框架,基于事件,输入在flink中是无界的
6.4 Kafka
作为消息队列,在企业中主要用于存储数据,配合流计算
7.1 Elasticsearch
仅支持json文件格式,适合处理分析查询,监控和指标
适用于新兴实时搜索应用
自身带有分布式协调管理功能Xen
7.2 Solr Cloud
solr 支持更多格式数据,提供分布式搜索和索引复制
单纯的对已有的数据进行搜索时,solr更快,不适用实时,数据量越大越慢
利用Zookeeper进行分布式管理
8.1 textfile snappy
8.2 orcfile
先按行水平分割,再按列垂直分割,针对不同的列采用特定的编码格式
适合Hive-on-Tez
8.3 parquet
数据打平和重建算法,实现按列存储(列组)
适合Impala和Spark SQL
8.4 RCFile
先水平切Row,再垂直切Column
适合presto
8.5 Avro
基于行,主要目标是为了满足schema evolution
8.6 汇总压缩性能对比
orcfile>parquet>RCFile>text>Avro
9.1 snappy 有效平衡压缩率和解压缩速度
9.2 Gzip 最高压缩率的归档数据压缩
9.3 Deflate 不支持文本文件
9.4 Bzip LZO 只支持文本文件
10.1 sqoop 支持批量从结构化数据存储导入数据到HDFS
11.1 ActiveMQ 吞吐量:万级,时效:ms,架构:主从,适合小公司
11.2 RabbitMQ 吞吐量:万级,时效:us,架构:主从,小公司优先
11.2 RocketMQ 吞吐量:十万级,时效:ms,架构:分布式,适合大公司
11.2 kafka 吞吐量:十万级,时效:ms,架构:分布式,适合大公司
12.1 Flume
适用于移动大规模流数据到HDFS
可靠性、扩展性最佳
12.2 Scribe
结构:Scribe agent,Scribe和存储系统
容错负载均衡稍弱
12.3 Chukwa
结构:adaptor,agent,collector
hadoop集群日志分析
13.1 SAS 把数据存储、管理、分析和展现有机融为一体
13.2 SPSS 数据定量分析工具,简单
13.3 Kylin 为超大规模数据集提供亚秒级标准SQL查询
13.4 Pig 常用于检索和分析数据量较大的数据集,适合实时
14.1 EChart
主要采用canvas画图
Canvas通过JavaScript来绘制2D图形
依赖分辨率,不支持事件处理器,能够以jpg,png格式保存结果图像
14.2 D3.js
主要采用svg画图
可自由创建图表,比较底层
14.3 Highchart
主要采用canvas画图,svg是一种使用XML描述2D图形语言
不依赖分辨率,支持事件处理器
15.1 Yarn
主要为Hadoop jobs管理资源
通过进程隔离,失败任务重新获取资源
15.2 Mesos
为各个框架(hadoop,spark,web services)提供dynamical partitioning
采用Linux Container容器对多计算框架共享资源进行隔离
slave失败任务转移,个框架自身容错
码字不易,转载请说明~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。