大数据之浅见
大数据是分布式存储和大规模并行处理.
开发语言: 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: 侧重事务