学习建议:大数据组件那么多,可以重点学习这几个

916 阅读8分钟

数据仓库系列文章

  1. 数仓架构发展史
  2. 数仓建模方法论
  3. 数仓建模分层理论
  4. 数仓建模—宽表的设计
  5. 数仓建模—指标体系
  6. 一文搞懂ETL和ELT的区别
  7. 数据湖知识点
  8. 技术选型 | OLAP大数据技术哪家强?
  9. 数仓相关面试题
  10. 从 0 到 1 学习 Presto,这一篇就够了!
  11. 元数据管理在数据仓库的实践应用
  12. 做中台2年多了,中台到底是什么呢?万字长文来聊一聊中台
  13. 数据仓库之拉链表
  14. sqoop用法之mysql与hive数据导入导出

经常有同学问我,基于Hadoop生态圈的大数据组件有很多,怎么学的过来呢,毕竟精力有限,我们需要有侧重点,我觉得下面这几个组件至关重要,是基础组件,大部分人都需要会的,其它组件可以用的时候再去查查资料学习。

  • hadoop
  • Hbase
  • Hive
  • Spark
  • Flink
  • Kafka

Hadoop

是大数据的基础组件,很多组件都需要依赖它的分布式存储、计算;主要包括Hdfs、MR、Yarn三部分,这个需要找一些好的资料(我的主页有资料领取方法),好好学学各自的用法,熟练之后,需要了解其背后的原理。

基本的,你得知道hadoop安装方法,cdh/hdp等等,启动后几个后台进程各自的作用,namenode高可用,以及高可用基于zk,namenode对元数据fs_image的保存,还有datanode,jobhistoryserver等。

  • Hdfs:你需要知道文件的基本操作,命令跟Linux命令差不多,用的时候自然就有机会敲了,上传、下载,回收站,多副本容错(hadoop3的纠删码容错,不使用多副本了,可以节约空间),文件分布式存储的切分,文件存储格式,压缩等待;
  • MR:主要是要掌握map -> shuffle -> reduce这一套经典编程模型的原理,MR的基本编写方法,以及map切块,reduce输出,mapjoin优化,内存调优等等;
  • Yarn:作为一个资源调度工具,yarn的资源分配(以container为单位,container指的是包含一点cpu和内存),一些常用参数的配置(比如每个应用最多使用资源,每个container资源,虚拟内存率等等),为了任务之间不互相影响,引入资源调度池,将资源隔离开,任务的调度方式(FIFO,fair,capacity)等 YARN调度器(Scheduler)详解

img

Hbase

这是一个基于Hdfs的列式存储的分布式数据库,在企业中使用普遍,需要重点学习其用法、原理和优化;Hbase集群挂掉的一次惊险经历

需要掌握的基本知识,hbase的基本原理,逻辑上的行与列,列式存储,底层数据hfile基于hdfs,并发高,横向扩展。hbase的HMaster和HRegionServer的作用,zk的作用,客户端读写数据的流程,memstore和bucketcache等缓存,region的分裂,建表预分区,rowkey的设计,数据容错HLog等。

img

Hive

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce或者Spark任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

  1. hive建表,分区表,外部表;
  2. udf开发和使用,Hiveserver2访问Hive;
  3. 关联hbase,使用Spark作为执行引擎等;
  4. join优化;
  5. 数据倾斜;
  6. 常用窗口函数;
  7. 基于Hive搭建数据仓库;

hive

Spark

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark使用Scala开发,拥有Hadoop MapReduce所具有的优点,可以进行微批实时处理;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

  1. Spark架构,DAG调度器,standalone/yarn/Kubernetes 提供资源运行,内存管理;
  2. Spark Core,主要包括SparkContext,RDD、action和transform算子;
  3. SparkStreaming,checkpoint和手动维护offset,消费kafka数据源;
  4. SQL,DataFrame与RDD的转化;
  5. Structured Streaming,有点鸡肋,通常用Flink基于event实时处理;
  6. ML(机器学习),包含了大部分常用的算法,分类、回归、聚类等等;
  7. Graphx,图计算,有些行业需要用,比如社会关系挖掘、诈骗交易等;
  8. SparkR,数据科学工作者使用R进行大规模分布式计算,R很耗内存一直是个诟病;
  9. PySpark,Spark又是很包容的,提供了Python编程的Api;

图9-7-Spark运行基本流程图

Flink

这是个实时数据处理的组件,企业普遍使用,Flink状态管理与状态一致性(长文)。Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。

主要包括,

  1. Flink的架构,提交应用在Yarn上面;
  2. DataSet / DataStream / Table Api ;
  3. Flink流式计算,flink对接kafka数据源;
  4. 容错,CheckPoint / Savepoint,两阶段提交等;
  5. Source / Sink操作(hbase、mysql、redis);
  6. WaterMark机制;
  7. 窗口函数Window;
  8. 不同数据流join操作;
  9. 侧输出(乱序、分流);
  10. Flink异步IO;

img

Kafka:Apache Kafka® 是一个分布式流处理平台。*可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。可以储存流式的记录,并且有较好的容错性。可以在流式记录产生时就进行处理。

  1. 生产者、消费者,消费者组、broker,leader,flower选举等;
  2. topic,partition,多副本,数据同步,高水位等;
  3. 抗峰流,数据生命周期;
  4. 数据写入的acks保证,数据的消费语义,数据的全局和局部有序;
  5. kafka性能为什么这么快,顺序写、零拷贝、分区并发、传输压缩、时间轮等,面试常问;
  6. 新版本kafka摒弃了zk;

img

数据仓库

数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策,数据仓库在数据平台中的建设有两个环节:一个是数据仓库的构建,另外一个就是数据仓库的应用。数仓架构发展史

  1. 经典的三范式,维表和事实表;
  2. 星型模型,雪花模型,星座模型;
  3. 范式建模和维度建模;
  4. 数仓分层,ods/dwd/dws/dim, ads层,dm层;
  5. 数据湖,与数据仓库相比更加灵活和节约成本;

img

impala

Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。

clickhouse

ClickHouse 是 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快 100-1000 倍。

kylin

Apache Kylin™是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的表。

Apache Kylin™ 令使用者仅需三步,即可实现超大数据集上的亚秒级查询。

  • 定义数据集上的一个星形或雪花形模型
  • 在定义的数据表上构建cube
  • 使用标准 SQL 通过 ODBC、JDBC 或 RESTFUL API 进行查询,仅需亚秒级响应时间即可获得查询结果

kylin

**docker / Kubernetes **

Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。

kudu

Kudu是Cloudera开源的新型列式存储系统,是Apache Hadoop生态圈的成员之一(incubating),专门为了对快速变化的数据进行快速的分析,填补了以往Hadoop存储层的空缺。

kudu

cdh/hdp

Apache Hadoop的开源协议决定了任何人可以对其进行修改,并作为开源或者商业版发布/销售。故而目前Hadoop发行版非常的多,有华为发行版(收费)、Intel发行版(收费)、Cloudera发行版CDH(免费)、Hortonworks版本HDP(免费),这些发行版都是基于Apache Hadoop衍生出来的。

当然了,还有很多其它的组件,比如sqoop,oozie等等,都有自己的应用场景。