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

离线数据处理

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

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

你可能感兴趣的:(离线数据仓库,大数据,hadoop,sqoop,zookeeper,flume)