• 猿创征文|大数据之离线数据处理总结+思维导图(全面总结)


    离线数据处理

    Java和MySQL

    Linux

    Linux操作目录

    Linux树状结构操作目录
    /根目录

    /bin、/sbin、/usr、/root、/home、/cd、/tmp、/etc、/proc、/boot、/dev、/sys、/var、/mnt、/opt、/src

    Linux常用命令

    ls、cd、pwd、mkdir、touch、echo、cp、mv、vi、In、cat、more、head、tail、find、grep、which、whereis、df、du、free、tar、gzip、bzip2、zip、date、shutdown、powoff、reboot、ping、ip addr、netstat、ps、pstree、top、kill、nohup、uptime、su、sudo、useradd、password、userdel、groupadd、chmod、chown、yum、rpm

    定时器crontab
    Linux中进行定时任务

    配置

    年 year、月 month、日 day、小时 hour、分钟 minute

    *代表所有、数字代表具体、-数字与数字之间的范围、/数字与数字之间做跳跃范围

    shell编程
    #!/bin/bash
    bash或sh运行shell脚本

    定义变量、位置参数变量、环境变量、系统变量、预定义变量

    运算符(expr)、${变量}、字符串、数组、if语句、循环语句、函数

    Linux版本

    CentOS主要版本

    Hadoop

    大数据的概念

    海量数据、具有高增长率、数据类型多样化

    大数据的4V特征
    • 数据量庞大
    • 数据多样性
    • 数据增长快
    • 数据价值低密度
    大数据的日常应用

    美团单车保修、饿了么杀熟、嘀嘀打车杀熟、电商推荐、对用户日常画像

    企业大数据的处理流程

    数据源、数据采集与同步、数据存储、数据清洗、数据分析、数据展示

    大数据框架Hadoop

    Hadoop是大数据常用框架提供数据统一存储与计算

    Hadoop框架安装{本地模式(测试)、伪分布式(测试)、完全分布式(实际开发)}

    HDFS分布式文件系统

    分布式文件系统中的组件
    • NameNode 主进程
    • SecondaryNameNode 备份进程
    • DataNode数据存储
    分布式文件系统shell命令

    hdfs dfs 主执行命令

    mkdir、put、get、ls、cat、rm、cp、mv、chmod

    分布式文件系统存储操作
    块概念

    HDFS中存储数据时,默认存储数据块大小是128M

    块存储是分散存储,尽量每个节点都保留数据块(块的备份默认是三个)

    向HDFS中提交和获取数据 读写流程

    NameNode和DataNode之间使用心跳机制进行管理

    NameNode和SecondaryNameNode之间使用的是检查点 fsimage和edits_log

    分布式文件系统API操作

    利用IDEA编译进行HDFSAPI进行开发

    Zookeeper分布式协调框架

    Zookeeper

    分布式协调资源框架,解决分布式系统一致性问题

    基于Linux系统中目录树结构的数据存储结构

    Zookeeper特点

    • 分布还是集群 leader、follower
    • 全局数据一致性,同一时刻提供一个ServerClient进行服务
    • 数据的实时性、数据原子性、更新请求顺序进行
    • 搭建zookeeper的时候有一个重要的操作:myid

    Zookeeper的shell

    zkCli.sh启动客户端命令

    ls /、create、get、set、delete、quit

    利用IDEA进行zookeeperAPI操作

    Zookeeper选举机制

    leader、follower、observer

    进行投票选举 myid权重占比,zxid事务id、Epoch逻辑时间 原则epoch>zxid>myid

    选举的时机 第一次启动Zookeeper或leader挂了

    避免脑裂 zookeeper的个数是奇数个

    HA高可用(生产环境)

    利用Zookeeper进行高可用HDFS点的搭建提供主NameNode和从NameNode,去掉SecondaryNameNode

    DataNode不变依旧存储数据

    ActiveNameNode和StandbyNameNode作为集群管理

    JournalNode作为NameNode通信数据机制提供一个ZKFC角色来管理NameNode之间切换,ZKFC依赖于Zookeeper作为切换依据

    YARN资源任务调度框架

    Yarn的产生

    在搭建Hadoop集群时不仅提供HDFS分布式文件系统,也提供离线式计算引擎MR

    在计算数据的时候数据分布在不同的节点上

    在计算时移动数据OR计算时移动计算 考虑各个方面性能优势的前提下,产生了一个概念 移动数据不如移动计算

    Hadoop毕竟是一个综合框架,所以在这个基础上就专门提供了一个调用任务计算的资源框架Yarn

    Yarn1.0版本

    Client作为提交者

    JobTracker 初始作业,分配作业,与TaskTracker进行通信协调整个作业的调度

    TaskTracker保持与JobTracker进行通信,在分配的数据片段上执行MR任务

    Yarn2.0版本

    Client提交作业

    ResourceManager提供整个任务资源调度分配 内置Scheduler

    NodeManager 每个节点的资源管理器,负责启动和监视Container资源使用情况,并向ResourceManager进行资源的报告

    • Container 即使用集群上资源(CPU、网路、内存、磁盘)
    • ApplicationMaster(AM)每个应用程序启动的一个角色,他的任务就是负责与ResourceManager进行沟通,并监视NodeManager

    Yarn的作业提交流程

    作业提交命令 Hadoop jar 使用Yarn就是使用Yarn jar

    Yarn的三种调度

    • FIFO调度器
    • 容量调度器
    • 公平调度器

    MapReduce分布式离线计算引擎

    MapReduce的出现

    海量数据的计算操作,其中主要核心概念就是映射(Map)和规约(Reduce)

    基于谷歌中一篇论文的计算引擎

    MapReduce的编程逻辑

    • Map端进行数据的初级处理
    • Reduce端进行数据聚合操作
    • MR的核心语义“相同Key为一组进行一次Reduce计算”

    MapReduce序列化

    Writeable接口

    自定义序列化使用Java模式

    保证数据可以在MR中进行有效传输

    MapReduce的Shuffle流程

    MR

    Combiner函数、合并小文件、可以自定义分区、自定义输出效果

    Scala语言

    为了后续学习Spark和Flink编程的语言,Scala语言与Java语言类似

    变量的定义

    • var-可变变量

    • val-不可变变量

    数据类型

    • AnyVal——所认知的基本数据类型(Int、Short、Long、Byte、Char、Double、Float、Boolean、Unit)
    • AnyRef——Null、类、特质
    • 数据类型之间允许进行转换操作
      • 基本数据类型可以使用 toXXX
      • 引用类型 asInstance[数据类型]

    操作符号

    • 算数运算符

    • 关系运算符

    • 逻辑运算符

    • 赋值运算符

    • Scala中是没有三目运算符的 ? :

    表达式

    Scala中只要是使用{}括起来都可以认为是块表达式,具备返回值的效果

    标准的表达式 变量、常量和运算符组成

    if分支语句和循环分支语句 都可以得到返回值但是多用于if分支语句

    Scala中式没有Switch…case

    函数(核心)

    函数是Scala中一等公民基本使用函数都可以解决大部分问题

    Scala中本质上是区分函数和方法,因为方法的定义使用def 而函数会用val或匿名函数

    方法的定义:def方法的名字(参数列表):返回值类型={方法体}

    函数的定义

    • val变量(函数名)=(函数参数列表)=>{函数体}
    • val函数名字:(函数参数类型)=>返回值类型={(参数列表)=>函数体实现}
    • 函数遵守的原则就是至简原则

    集合

    可变集合

    如果要使用可变集合需要导入Scala.collection.mutable——每个不可变都对应一个可变的

    不可变集合

    Array、Tuple、Map、List、Set

    需要记忆集合中操作方法

    map、flatmap、foreach、filter、partition、find、takeWhile、dropWhile、contains、sortwith、sortBy、sorted、size、length、take、sum、reduce、fold

    高阶函数

    函数可以作为方法参数类型

    可以使用匿名函数方式进行方法参数传递

    也可以将方法作为方法参数进行传递(默认转换为函数)

    函数也可以作为方法的返回值存在

    闭包 和 柯里化

    类与对象

    Scala中的对象与类的概念支持继承(单继承)

    单例对象即Object修饰的类并且衍生出了伴生类和伴生对象并提供apply 和 unapply 方法

    Scala中没有实现的概念只有继承概念 所以无论是类还是特质都是使用extends进行操作的多特质使用with

    Scala中独有的类 case class样例类主要作用就是用于传递消息(即类名就是消息)和进行数据封装传递(提供主构造器进行数据封装进行传递)

    模式匹配match…case

    • 值匹配
      • 变量匹配
      • 常量匹配
    • 类型匹配
    • 集合匹配
    • 样例类匹配

    隐式转换

    Scala中类是默认存在隐式转换操作{创建Scala类是默认导入java.long、scala、Predef}

    隐式类、隐式转换函数、隐式参数

    隐式转换是从当前类中进行查找、再查找包、再查找ScalaAPI如果都没有就要报错,否则进行转换操作

    泛型

    上界[B<:A] B类型的上界是A类型

    下界[B>:A] B类型的下界是A类型

    视界[B<%A] 表示B类型要转换为A类型是一个隐式转换

    上下文界[B:A] 提供一个隐式转换可以将B引用到A中

    逆变 [-A]、协变 [+B]、不变 [A]

    Scala中的通信模式

    Scala2.11Actor通信模型

    Scala2.12Akka通信模型

    无论是哪个通信模式使用的都是 邮箱通信操作模型,主要提供目的就是为了让各位了解它内部通信机制

    Spark分析计算引擎(离线和实时)

    SparkCore
    SparkSQL

    Hive数据分析工具

    Sqoop数据导入导出工具

    Flume数据采集工具

    Azkaban分布式任务调度工具

    综合项目离线数仓分析项目

    数仓建模

    数据采集

    数据清洗ETL

    数据分析

    任务执行调度

    数据整合导出DataX

    数据整体展示SuperSet

    在这里插入图片描述

  • 相关阅读:
    如何自学网络安全?零基础入门看这篇就够了(含路线图)_网络安全自学
    rabbimq之java.net.SocketException: Connection reset与MissedHeartbeatException分析
    【RDMA】librdmacm库和连接建立过程
    嵌入式Linux:串口传输文件的工具lrzsz软件的移植
    JAVA小说小程序系统是怎样开发的
    java毕业设计农田节水灌溉监测系统源码+lw文档+mybatis+系统+mysql数据库+调试
    D - Snuke Panic (1D)
    JWT介绍
    OceanBase 来参加外滩大会了(内附干货PPT)
    Redis-分布式锁
  • 原文地址:https://blog.csdn.net/Mr_Ren_0_1/article/details/126682400