Skip to main content

大数据之浅见

大数据是分布式存储和大规模并行处理.

开发语言: Java,Scala 基础: Hadoop,Hive 结构: 采集,存储,调度,计算,分析,可视化,监控,其他 流程: 1.从数据库(用DataX)或日志(用Flume)中,拉取数据存到分布式存储中(数据仓库或数据湖,见补充). 是个ETL(抽取,转换,加载)过程. 2.使用Hive计算出有用的结果(离线方式). 或使用Spark/Flink流式数据进行实时计算(流式是开启端口接收数据,非流访问的是外部数据源),把计算结果保存到数据库中,或推送到MQ里. 3.然后把这些结果数据使用图形化工具呈现出来用于展示或分析. 架构: Lambda 架构(离线+实时 两部分) ; Kappa 架构 实时(批流一体); IOTA架构(去ETL)

补充: 数据仓库: 结构化和非结构化 有:Hive, HBase, Kudu, Doris, ClickHouse 数据湖: 结构化,非结构化,媒体,图片,二进制数据. 有Hudi, Iceberg, Delta Lake. 三者的原理类似, 都是通过'表格式'去管理数据的, 数据都是存在HDFS上面的.

Hadoop 是大数据的基础, 由三个大模块组成,分别是: HDFS分布式存储, YARN通用调度器, MapReduce分布式计算.

HDFS分为NameNode元数据的管理和DataNode文件数据的存储

HDFS适合存储大文件,1个大视频文件上传到HDFS上会被拆分为若干块,分布在若干机器上,并建立备份. 满足高可用. YARN 可以 启动调度 Flink集群 (flink on yarn)

Hive 是在Hadoop的三大模块的基础上构建的数据仓库,分布式SQL查询, 是最早的分布式计算,是基于硬盘的查询,查询速度较慢.

(Hive SQL insert 数据非常慢,一般是导入文件的方式. 其次是 instal from table 的方式.)

在数据仓库和数据湖之上,有计算框架,

Spark 是基于内存的计算,也是基于Hadoop的HDFS,YARN 和自己的RDD模块 但是Spark没有元数据管理功能,访问元数据需要通过Hive的MetaStore服务.

Spark的Spark Streaming是有界流(微批处理) Flink 和 Storm 是无界流,Flink优于Storm

提交的分布式计算任务,数据源如果是本地文件,会报错.是远程数据源才行.因为其他机器本地的路径里不一定有文件.

Beam 支持多语言,可让你在各种执行引擎(flink或spark)之间进行自由选择.

Flume框架收集数据 导入 kafka 中 -> storm -> RDBMS/Nosql

Flume -> HDFS -> 流处理引擎(Spark/Flink/Storm)

Flume -> Kafka -> HDFS -> Spark/Flink/Storm -> ClickHouse <- SQL

计算后的结果存在下面这些数据库之中

HBase 不支持关联查询,面向列的存储, Rowkey 主键, Column Family列族, 列族包含多个Column 列, Cell存储单元. cell 保存同一份数据的多个版本,版本号是时间戳

Kudu,Doris,ClickHouse 都是列式存储数据库.

Alluxio 是内存级的存储系统,相当于数据仓库的缓存

数据仓库: 结构化和非结构化 有:Hive,HBase,Kudu,Doris,ClickHouse

数据湖:结构化,非结构化,媒体,图片,二进制数据. 有Hudi,Iceberg,Delta Lake, 三者的原理类似都是通过表格式去管理数据的.

离线数据采集:Sqoop,DataX,Kettle 实时数据采集:Flume,maxwell,canal,NiFi

BI : DataV,Hue,Superset,TCV

OLAP分析引擎:Kylin,Presto,Druid,Impala,Phoenix,Kudu,ClickHouse,Doris

任务调度: oozie,Azkaban,Airflow 集群管理:ClouderaManager Ambari

OLAP: 侧重查询 OLTP: 侧重事务