大数据总结
大数据之浅见
开发语言: 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适合存储大文件,1个大文件上传到HDFS上会被拆分为若干块,分布在若干机器上,并建立备份. 分摊流量和计算.
Hive 是在Hadoop的三大模块的基础上构建的数据仓库,分布式SQL查询, 是最早的分布式计算,是基于硬盘的查询,查询速度较慢. (Hive SQL insert 数据非常慢,一般是导入文件的方式. 其次是 instal from table 的方式.)
HBase 不支持关联查询,面向列的存储, Rowkey 主键, Column Family列族, 列族包含多个Column 列, Cell存储单元. cell 保存同一份数据的多个版本,版本号是时间戳
Kudu,Doris,ClickHouse 都是列式存储数据库.
Alluxio 是内存级的存储系统,相当于数据仓库的缓存 Presto 是数据库查询引擎
计算: YARN 可以 启动调度 Spark/Flink集群 (flink on yarn)
Spark SQL基于Hadoop的HDFS,YARN 和自己的RDD模块 但是Spark没有元数据管理功能,访问元数据需要通过Hive的MetaStore服务.
Spark的Spark Streaming是有界流(微批处理) Storm, Flink 是无界流,Flink优于Storm
Spark / Flink 连接外部数据源进行计算,机器学习,图计算
提交的分布式计算任务,数据源如果是本地文件,会报错.是远程数据源才行.因为其他机器本地的路径里不一定有文件.
Beam 支持多语言,可让你在各种执行引擎(flink或spark)之间进行自由选择.
其他: 离线数据采集: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