菜鸟学Linux 第105篇笔记 海量存储解决

简介:

菜鸟学Linux 第105篇笔记 海量存储解决



内容总览

大数据带来的挑战

传统存储SAN

分布式存储

多线程与进程执行模式

计算机五大部件变化

分布式系统的难点

分布式文件系统设计目标

分布式事务的模型及规范

CAP, BASE, 

集群内数据一致性算法实施过程案例

分布式应用(存储,计算)

mogilefs





DFS

大数据带来的挑战

数据采集(传感器)

数据存储(分布式)

数据搜索(计算, 索引)

数据共享(分布式存储的主节点)

数据传输(迁移数据在不同系统之间machine learning, data learning)

数据分析(分析算法可以自我进化)

数据可视化



传统存储SAN

问题

纵向扩展受陈列空间限制(升级设备)

横向扩展受交换设备限制

节点受文件系统限制



分布式存储

挑战

节点间通信

数据存储

数据空间平衡

容错

文件系统支持

分布式存储是分布式系统的一种



多线程与进程执行模式

互不通信的多线程模式

基于共享容器协同的多线程模式

通过事件协同的多线程模型



计算机五大部件变化

输入设备的变化

控制器的变化

透明代理(类似nginx, haproxy反向代理)

旁路模式(类似lvs)

名称服务

规则服务器

运算器的变化


存储器的变化

代理模型

旁路模型

规则服务

Master 原数据和值数据分开,原数据放在name node, 数据存放在数据节点中



分布式系统的难点

缺乏全局时钟

面对故障的独立性

处理单点故障(做冗余, 降低单点故障影响范围)

事务的挑战ACID Atomicity原子性, Consistency一致性, Isolation隔离性, Durability持久性

2PC(两段式提交), 最终一致, BASE, CAP, Paxos



分布式文件系统设计目标

访问透明

位置透明

并发透明

失效透明

硬件透明

可扩展性

复制透明

迁移透明



分布式事务的模型及规范

X/Open: XA

DTP: Distributed Transaction Processing Reference Mmodel

定义了三个组件

AP Application Program

RM Resource Manager

TM Transaction Manager



CAP (Consistency Availability P Tolerance of network Partition)

BASE

BA: Basically Available

S: Soft state, 软件状态,接受一段时间内的状态不同步

E: Eventually consistent 最终一致性



集群内数据一致性算法实施过程案例

Quorum, Vector Clock


Quorum

N 数据复制的节点量

R 成功读操作所依赖的最少节点数

W 成功写操作所依赖的最少节点数


W+R>N 强一致性



分布式应用

分布式计算

MapReduce: 分布式运算框架 (MapReduce)

分布式存储

GFS: Google File System  (HDFS)

BigTable: 列式数据库

HBase


Hadoop: 分布式计算+分布式存储



分布式存储

不能mount, 基于API进行存取

分布式文件系统

mount, VFS


GFS,HDFS 适合存储大文件

TFS 在名称节点上将元数据存储于关系型数据库中,文件数量不再受限于名称节点的内存空间

可以存储海量小文件

Lustre 重量级,企业级应用

GlusterFS 

MooseFS 轻量级,

Mogilefs 适合存储海量小图片 perl



Mogilefs的特性

工作在应用层

无单点 (tracker, mogstore, database(MySQL))

自动文件复制:复制的最小单位不是文件,而class

传输中立,无特殊协议;可以通过NFS或HTTP进行通信

简单的名称空间 域

不共享任何数据


Tracker功能

MogileFS的核心,是一个调度器, 服务进程为mogilefsd

职责: 删除、复制、监控、查询等


Database

存储元数据


mogstored 数据存储的位置, 通常是一个HTTP(webDAV)服务器

用来数据的创建、删除、获取。

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1900605如需转载请自行联系原作者


Winthcloud

相关文章
|
5月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
297 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
5月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
166 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
7月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
204 2
linux笔记 diff及patch的制作与使用
|
7月前
|
存储 安全 Linux
在Linux中,日志文件通常存储在哪些目录?
在Linux中,日志文件通常存储在哪些目录?
|
7月前
|
存储 网络协议 搜索推荐
在Linux中,如何配置和管理虚拟机的网络和存储?
在Linux中,如何配置和管理虚拟机的网络和存储?
|
7月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
7月前
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
|
7月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
|
7月前
|
存储 运维 安全
Linux中,如何配置iSCSI存储?
Linux中,如何配置iSCSI存储?
|
7月前
|
Ubuntu Linux Shell
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
511 0