Spark 存储模块
在执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业[Job],并将作业转化为计算任务[Task],在各个 Executor 进程间协调任务的调度;后者负责在工作节点上执行具体的计算任务,并将结果返回给 Driver, 同时为需要持久化的 RDD 提供存储功能。由于 Driver 的内存管理相对来说较为简单,本节主要对 Executor 的内存管理进行分析,下文中的 Spark 内存均特指 Executor 的内存。
Execuor 内存模型堆内和堆外内存作为一个 JVM 进程,Executor 的内存管理建立在 JVM 的内存管理之上,Spark 对 JVM 的堆内 [On-heap]空间进行了更为详细的分配,以充分利用内存。
同时,Spark 引入了堆外[Off-heap]内存,使之可以直接在工作节点的系统内存中开辟空间,进一步优化了内存的使用。
堆内内存受到 JVM 统一管理,堆外内存是直接向操作系统进行内存的申请和释放。
堆内内存堆内内存的大小, ...
无题
数据转换算子简介在 Flink 应用程序中,无论你的应用程序是批程序,还是流程序,都是上图这种模型,有数据源(source),有数据下游(sink)
Source:
数据源,Flink 在流处理和批处理上的 source 大概有 4 类
基于本地集合的 source
基于文件的 source
基于网络套接字的 source
自定义的 source
Transformation
数据转换的各种操作,有 Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split / Select / Project 等,操作很多。
Sink: 接收器,Sink 是指 Flink 将转换计算后的数据发送的地点。Flink 常见的 Sink 大概有如下几类:写入文件、打印出来、写入 Socket 、自定义的 Sink 。
自定义的 sink 常见的有 Apache kafka、RabbitMQ、MySQL、ElasticSear ...
无题
应用层的任务是通过应用进程间的交互来完成特定网络应用。
应用层协议定义的是应用进程间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。把应用层交互的数据单元称为报文。
2. 域名系统 DNS用户在与互联网中的主机通信时,必须知道对方的 IP 地址,但是32位 IP 地址太长不便于,即使使用点分十进制的方式也不容易记忆,所以实际中都是使用域名来与对方通信,如访问百度可以直接输入 www.baidu.com 而不用使用百度服务器的IP地址。域名系统DNS就是把域名转换为 IP 地址。
2.1.域名任何一个连接在互联网上的主机或路由器都有一个唯一的层次结构的名字,即域名。每个域名都由标号序列组成,而各标号之间用点隔开。

它由三个标号组成,其中 com 是顶级域名,baidu 是二级域名,www 是三级域名。域名其实还有一个根,不过根没有名字,根下面才是顶级域名。
DN ...
无题
排序算法: 快速排序从序列中选择一个轴点元素
无题
1.目的复制很昂贵 HDFS 中的默认3x复制方案在存储空间和其他资源(例如,网络带宽)中具有200%的开销。但是,对于I/O活动相对较低的暖和冷数据集,在正常操作期间很少访问其他块副本,但仍会消耗与第一个副本相同的资源量。
因此,自然的改进是使用擦除编码(EC)代替复制,其提供相同级别的容错并且具有更少的存储空间。在典型的擦除编码(EC)设置中,存储开销不超过50%。EC文件的复制因子没有意义。它始终为1,无法通过-setrep命令进行更改。
在存储系统中,EC最值得注意的用途是廉价磁盘冗余阵列(RAID)。RAID通过条带化实现EC,条带化将逻辑顺序数据(例如文件)划分为更小的单元(例如位,字节或块),并将连续单元存储在不同的磁盘上。在本指南的其余部分中,这个条带分布单元称为条带化单元(或单元)。对于每个原始数据单元条带,计算并存储一定数量的奇偶校验单元 - 其过程称为编码。可以通过基于幸存数据和奇偶校验单元的解码计算来恢复任何条带化单元上的错误。
将EC与HDFS集成可以提高存储效率,同时仍然提供与传统的基于复制的HDFS部署类似的数据持久性。例如,具有6个块的3x复制文件将消耗 ...
无题
1.存储 Scheme
无题
虽然 Lambda 架构使用起来十分灵活,并且可以适用于很多的应用场景,但在实际应用的时候,Lambda 架构也存在着一些不足,主要表现在它的维护很复杂。使用 Lambda 架构时,架构师需要维护两个复杂的分布式系统,并且保证他们逻辑上产生相同的结果输出到服务层中。
1. Kappa 架构Kappa 架构是由 LinkedIn 的前首席工程师杰伊·克雷普斯(Jay Kreps)提出的一种架构思想。
像 Apache Kafka 这样的流处理平台是具有永久保存数据日志的功能的,通过平台的这一特性,我们可以重新处理部署于速度层架构中的历史数据。
与 Lambda 架构不同的是,Kappa 架构去掉了批处理层这一体系结构,而只保留了速度层。你只需要在业务逻辑改变又或者是代码更改的时候进行数据的重新处理。
Kappa 架构的核心思想包括以下三点:
用 Kafka 或者类似的分布式队列系统保存数据,你需要几天的数据量就保存几天。
当需要全量重新计算时,重新起一个流计算实例,从头开始读取数据进行处理,并输出到一个新的结果存储中。
当新的实例做完后,停止老的流计算实例,并把老的一些结果删除。
和 ...
无题
1. Lambda 架构1.1. 简介Lambda 架构是由 Storm 的作者 Nathan Marz 提出的一个实时大数据处理框架。Lambda 架构是其根据多年进行分布式大数据系统的经验总结提炼而成。Lambda 架构的目标是设计出一个能满足实时大数据系统关键特性的架构,包括有:高容错、低延时和可扩展等。Lambda 架构整合离线计算和实时计算,融合不可变性(Immunability),读写分离和复杂性隔离等一系列架构原则,可集成 Hadoop,Kafka,Storm,Spark,Hbase 等各类大数据组件。
数据从底层的数据源开始,经过各种各样的格式进入大数据平台,在大数据平台中经过Kafka、Flume等数据组件进行收集,然后分成两条线进行计算。一条线是进入流式计算平台(例如 Storm、Flink或者Spark Streaming),去计算实时的一些指标;另一条线进入批量数据处理离线计算平台(例如Mapreduce、Hive,Spark SQL),去计算T+1的相关业务指标,这些指标需要隔日才能看见。
1.2. 三层架构
1.2.1. Batch Layer(批处理层) ...
Cloudera平台搭建
1.服务器环境准备1.1 服务器环境概述数据集群包含两台专业服务器,通过XenServer服务器虚拟化软件把两台专业服务器虚拟化为五台虚拟服务器(1个master和4个slave);五台虚拟服务器都安装了CentOS7(Linux)操作系统,在此基础上安装了 Java、C/C++、Scala等基本开发工具,以及Hadoop(HDFS,YARN)、MySQL、ZooKeeper、Kafka 、Spark2
Hbase、Spark等数据集群必须的大数据存储及处理软件。数据集群需要安装的软件及其层次关系如表1.1所示。数据集群除了安装Hadoop、Spark、Hbase等组件外,在Master节点和data1节点安装了MySQL数据库。
主机
所在服务器
密码
192.168.10.96
192.168.10.90
123456
192.168.10.98
192.168.10.90
123456
192.168.10.100
192.168.10.90
123456
192.168.10.102
192.168.10.120
123456
192.168.1 ...