写点什么

架构师训练营 - 大数据

用户头像
Pontus
关注
发布于: 2020 年 09 月 01 日



参考

参考

一、大数据技术介绍

1、大数据技术的起源

   1)技术背景:Google的搜索引擎需要处理海量的数据

   2)大数据“三驾马车”

        a. 分布式文件系统GFS--文件系统

        b. 大数据分布式计算框架MapReduce--计算框架

        c. NoSQL数据库系统BigTable--数据库系统

2、大数据技术体系



3、大数据技术的应用历史

    1)大数据应用的搜索引擎时代

    2)大数据应用的数据仓库时代

    3)大数据应用的数据挖掘时代

    4)大数据应用的机器学习时代

4、大数据技术的应用领域

    1)医学影像智能识别

    2)病历大数据智能诊疗

    3)AI外语老师

    4)智能解题

    5)舆情监控与分析

    6)大数据风控

    7)新零售

    8)无人驾驶

二、大数据存储之HDFS介绍

1、面临的问题

    1)如何存储一个大文件?

    2)如何快速访问一个大文件?

    3)如何保证文件的高可用(损坏了怎么办)

2、HDFS设计

    1)系统架构





    2)不适合HDFS的场景

        a. 低延迟的数据访问

        b. 大量小文件

            -> 超过NameNode的处理能力

        c. 多用户随机写入修改文件



3、如何存储一个大文件

   1)文件切分成块,以块为单位,存储在多台机器上

   2)NameNode:构建一个集群环境下的文件系统。管理文件名、文件目录结构、文件属性等,记录文件的存储位置(所在DataNode)

   3)DataNode:存储文件块。启动后向NameNode注册,注册通过后会周期性的向NameNode上报所有的块信息;启动后也会定时向NameNode发送心跳检测。

4、如何保证系统的高可用以及存储文件的高可用

    1)需要解决的问题

        a. DataNode中的磁盘挂了怎么办?

        b. DataNode所在的机器挂了怎么办?

        c. NameNode挂了怎么办?

        d. Client挂了怎么办?

    2)DataNode中的磁盘 or 所在机器挂了怎么办

        a. 数据复制(冗余机制):机架感知策略        b. 故障检测        c. 心跳报告

    3)NameNode挂了怎么办

    4)Client挂了怎么办

    5)高可用下的写文件流程





    6)高可用下的读文件流程



三、大数据计算之MapReduce介绍

1、需要解决的问题

   1)处理海量数据

   2)利用大量CPU实行并行处理--分布式计算

2、MapReduce设计

    1)MapReduce1整体架构



    2)MapReduce的框架设计

        a. InputFormat

        b. FileInputFormat

        c. OutputFormat

        d. Partitioner

        e. 任务调度方法

        f. JobTracker实现

        g. JobTracker容错

        h. TaskTRacker容错

        i. Task容错

        j. Record容错



3、MapReduce处理过程







4、MapReduce编程

    1)继承Mapper&Reduce,实现对应的方法

    2)抓住的核心点:关注Mapper&Reduce的输入和输出。数据从哪里来?数据代表什么意思?

四、大数据技术--Yarn的介绍

1、Yarn的诞生

    1)是什么?

        a. 集群资源调度管理系统       

        b. 通用的运行时框架,可以基于其编写自己的计算框架,而不限于使用MapReduce计算框架

    2)为什么会诞生 or Hadoop1中的MapReduce架构面临的问题?

        a. 集群资源调度管理与MapReduce执行过程耦合严重,不利于集成其他的计算框架,如Spark、Storm

2、Yarn的设计

    1)核心思想

        a. 将原来的MapReduce中的JobTracker的两个主要功能:资源管理+作业管理 拆分成两个独立的进程

        b. 资源管理+作业管理 对应两个组件,ResourceManager+ApplicationMaster

        c. ApplicationMaster对应一个单独的MapReduce作业或者DAG作业

    2)整体架构



    3)系统主要角色

        a. 资源管理器 ResourceManager:负责整个集群的资源调度管理

            -> 调度器:根据应用程序提交的任务,进行资源分配,本质上是一个资源分配算法

            -> 应用程序管理器:负责应用程序的提交和运行状态的监控

        b. 节点管理器 NodeManager:负责具体服务器上的资源和任务管理,会在每一台服务器上启动,基本会和HDFS的DataNode进程一起出现

    4)工作流程

五、大数据技术--Hive的介绍

1、Hive的诞生

    自己写一套MapReduce程序本身比较麻烦?有没有更简单的方式?将一个SQL翻译成/转换成MapReduce程序--Hive

2、Hive架构





3、Hive执行流程





作业

一、在你所在的公司(行业、领域),正在用大数据处理哪些业务?可以用大数据实现哪些价值

公司目前是互联网金融领域,主要业务是外汇,主要是用大数据做用户画像,分析用户的属性,推荐成为高手等,是重要的获客和分析手段。

二、分析如下 HiveQL,生成的 MapReduce 执行程序,map 函数输入是什么?输出是什么,reduce 函数输入是什么?输出是什么?

INSERT OVERWRITE TABLE pv_users

SELECT pv.pageid, u.age

FROM page_view pv

JOIN user u

ON (pv.userid = u.userid);

Page_view 表和 user 表结构与数据示例如下:

1、Map函数的输入&输出

1)输入:

    a. user表/page_view表 的行记录

2)输出:

    a. 输出的格式如 Map<String,Map<String,String>>

    b. 外部Map的key为user表/page_view表 的userid,value任然是一个Map

    c. 内部Map的key为user表/page_view表 的属性名,value是各个属性对应的值

2、Reduce函数

1)输入:

    a. 格式如 Map<String,Map<String,String>>,说明Map函数的输出

2)输出:

    a. 格式如 Map<String,Map<String,String>>

    b. 外部Map的key为page_view表 的userid,value任然是一个Map

    c. 内部Map的key为pageid、age两个属性,value是属性对应的值



用户头像

Pontus

关注

还未添加个人签名 2018.04.21 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 大数据