一、大数据简介

1.1 大数据特点

  1. Volume大量(数据量大)
  2. Velocity高速(处理数据的效率)
  3. Variety多样(结构化和非结构化数据)
  4. Value低价值密度(价值密度的高低与数据总量的大小成反比,快速对有价值数据“提纯”)

    1.2 大数据应用场景

  5. 抖音:推荐你喜欢的视频

  6. 电商:推荐你喜欢的商品
  7. 零售:分析用户消费习惯,为用户购买商品提供方便,从而提高商品销量
  8. 物流仓储:根据区域的不同,仓库存储的品种不同

    1.3 大数据部门内组织结构

    image.png

    二、Hadoop入门

    2.1 Hadoop是什么

    Hadoop是Apache旗下的一个用Java语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台。允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理。

  9. Hadoop是一个由Apache基金会所开发的分布式系统基础架构

  10. 主要解决,海量数据的存储和海量数据的分析计算问题
  11. 广义上来说,Hadoop通常是只一个更广泛的概念——Hadoop生态圈 :::info 狭义上说,Hadoop指Apache这款开源框架,广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈 ::: 通常说的Hadoop,一般指广义上的Hadoop,即Hadoop生态圈,包括Hbase、Hive、ZooKeeper等。
    image.png

2.2 Hadoop优势

  1. 高可靠性:Hadoop底层维护多个数据副本,所有即使Hadoop某个计算元素或者存储出现故障,也不会导致数据的丢失。
  2. 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。(动态添加、删除节点)
  3. 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务的处理速度
  4. 高容错性:能够自动将失败的任务重新分配

    2.3 Hadoop组成(重点)

    Hadoop1.x 与 Hadoop2.x 、Hadoop3.x的区别
    image.png

    2.3.1 HDFS(数据存储)

    :::info HDFS(Hadoop Distributed File System):分布式文件系统,用于存储和管理数据。它可以将大文件切分成多个块并分布到多个节点上存储,保证高可靠性和高可扩展性。 :::

  5. NameNode(简称 NN ): 存储文件的元数据,如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。

  6. DataNode(简称 DN ): 在本地文件系统存储文件块数据,以及块数据的校验和。
  7. Secondary NameNode(简称 2NN ): 每隔一段时间对NameNode元数据备份。

    2.3.2 YARN(资源调度)

    :::info YARN(Yet Another Resource Negotiator):资源管理器,用于对集群中的资源进行管理和调度,为各种数据处理应用程序提供资源和服务。 ::: image.png
    其中:
  • client客户端可以有多个
  • 集群上可以运行多个ApplicationManager
  • 每个NodeManager上可以有多个Container

YARN的组成:

  • ResourceManager(简称 RM ):整个集群资源(内存、CPU等)的管理者
  • NodeManager(简称 NM ):管理单个节点服务器的CPU、内存等
  • ApplicationMaster(简称 AM ):管理单个任务运行
  • Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等

    2.3.3 MapReduce(数据处理)

    :::info MapReduce:分布式计算框架,用于将数据处理任务拆分成多个小任务进行并行计算。它包括Map和Reduce两个阶段,Map阶段将数据进行拆分和处理,Reduce阶段将中间结果合并。 ::: MapReduce将计算过程分为两个阶段:Map和Reduce。
  1. Map阶段并行处理输入数据
  2. Reduce阶段对map结果进行汇总

MapReduceStruct.jpg

2.3.4 三者调用关系

image.png

三、大数据技术生态体系

image.png

  • Sqoop:是一款开源的工具,主要用于在Hadoop、Hive与传统数据库(Mysql、Oracle)之间进行数据的传递,可以将一个关系型数据库中的数据导进HDFS中,也可以将HDFS的数据导入关系型数据库中
  • Flume:是一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据
  • Kafka:是一种高吞吐量的分布式发布订阅消息系统
  • Spark:是当前最流行的开源大数据内存计算框架,可以基于Hadoop上存储的大数据进行计算
  • Flink:是当前最流行的开源大数据内存计算框架,用于实时计算的场景比较多
  • Oozie:是一个管理Hadoop作业(job)的工作流程调度管理系统
  • HBase:是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库
  • Hive:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行执行。可以通过类似SQL语句来快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析
  • ZooKeeper:是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等