分布式处理

通俗易懂,揭秘分布式数据处理系统的核心思想(一)

杀马特。学长 韩版系。学妹 提交于 2019-12-03 13:09:29
目录 前言 目标 核心的设计原则 通用的数据处理流程 切合实际的解决方案 总结 延伸阅读 最后 作者: justmine 头条号: 大数据达摩院 创作不易,未经授权,禁止转载,否则保留追究法律责任的权利。 前言 这是分布式数据处理系统系列的第一篇,也是当下实时流计算引擎实现的奠基石,为了帮助大家从理论到实现形成一个完整的知识体系,计划分为理论篇(剖析分布式数据处理系统的核心思想)和实现篇(详解当下实时流计算引擎如何实现核心思想);大数据的核心是分布式数据处理,建议大家关注[大数据达摩院],后期更精彩哦。 先来一睹理论篇系列: 通俗易懂,揭秘分布式数据处理系统的核心思想(一) 通俗易懂,揭秘分布式数据处理系统的窗口模型(二) 通俗易懂,揭秘分布式数据处理系统的触发器模型(三) 通俗易懂,揭秘分布式数据处理系统的增量处理模型(四) 敬请期待... 为了分享对大规模、无边界、乱序数据流的处理经验 ,2015年谷歌发表了《The Dataflow Model》论文,剖析了流式(实时)和批量(历史)数据处理模式的本质,即 分布式数据处理系统 ,并抽象出了一套先进的、革新式的 通用数据处理模型 。在处理 大规模、无边界、乱序 数据集时,可以灵活地根据需求,很好地平衡数据处理 正确性、延迟程度、处理成本 之间的相互关系,从而可以满足任何现代数据处理场景,如:游戏行业个性化用户体验

分布式一致性模型

自古美人都是妖i 提交于 2019-12-03 12:07:49
一致性模型 弱一致性 最终一致性 DNS (Domain Name System) Gossip (Cassandra的通信协议) 强一致性 同步 Paxos Raft (multi-paxos) ZAB (multi-paxos) 强一致性要解决的的问题 数据不能存在单点上(安全) 分布式系统对fault tolorence 的一般解决方案是state machine replication(状态机复制) state machine replication 的 共识(consensus) 算法。 paxos 其实是一个共识算法 系统的最终一致性, 不仅需要达成共识, 还会取决于 client的行为。 假设x为命令 Client --(x)--> Consensus Module x stored in that server's own log(x 存储在该服务器自己的日志中) Consensus Module --(x)--> Other servers each of them records the command in their own log(每台服务器都将x存储到自己的日志中) 强一致性算法: 主从同步 Master 接受写请求 Master复制日志到slave Master等待, 直到所有从库返回 可能出现的问题: 一个节点失败, Master阻塞,

hive基础操作

只愿长相守 提交于 2019-12-03 09:39:11
1、安装Hadoop Hive 运行在Hadoop之上。Hadoop是一个非常活跃的开源项目,其具有很多的发行版和分支。同时,很多的商业软件公司现在也在开发他们自己的Hadoop分支,有时会对某些组件进行个性化的增强或者替换。这种形式可以促进创新,但是同时也会产生潜在的混乱和兼容性问题。 2、本地模式、伪分布式模式和分布式模式 我们先阐明Hadoop的不同运行模式。我们前面默认的模式是本地模式,这种模式下使用的是本地文件系统。在本地模式下,当执行Hadoop job时(包含有大多数的Hive查询),Map task 和Reduce task在同一个进程中执行。 真实的集群配置都是分布式模式,其中所有没有默认完整URL指定的路径默认都是分布式文件系统中的路径,而且由JobTracker服务来管理job,不同的task在不同的进程中执行。 对于个人计算机工作 的开发者来说,一个进退两难的实际问题是,本地模式并不能真实的反映真实集群的行为状况,这个是测试程序需要记住的事情。为了解决这个需求,一台物理机可以配置在伪分布式模式下运行。这种模式下执行的行为和在分布式模式下的行为是一致的。也就是说,引用的文件系统默认为分布式文件系统,而且由JobTracker服务来管理Job,但是实际上只有一台物理机。因为hive中大多数工作是使用Hadoop中的job

事务面试题

断了今生、忘了曾经 提交于 2019-12-03 07:11:18
一 什么是事务?有什么用? 事务的特性ACID 事务提供了一种机制,可用来将一系列数据库更改归入一个逻辑操作。更改数据库后,所做的更改可以作为一个单元进行提交或取消。事务可确保遵循原子性、一致性、隔离性和持续性(ACID)这几种属性,以使数据能够正确地提交到数据库中。 1)原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作 要么都发生,要么都不发生。 2)一致性(Consistency)一个事务中,事务前后数据的完整性必须保持一致。 3)隔离性(Isolation)多个事务,事务的隔离性是指多个用户并发访问数据库时, 一个用户的 事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。 4)持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变 就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。 二 事务的并发会产生的问题有哪些 1.脏读 一个事务正在对数据进行更新操作,但是更新还未提交,另一个事务这时也来操作这组数据,并且读取了前一个事务还未提交的数据,而前一个事务如果操作失败进行了回滚,后一个事务读取的就是错误的数据,这样就造成了脏读 2.不可重复读 一个事务多次读取同一个数据,在该事务还未结束时,另一个事务也对该数据进行 了操作,而且在第一个事务两次读取之间,第二个事务对数据进行了更新,那么第一个

Hadoop家族学习路线图(转)

纵然是瞬间 提交于 2019-12-03 06:09:27
Hadoop家族学习路线图 Hadoop家族系列文章 ,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, Flume, Bigtop, Crunch, Hue等。 从2011年开始,中国进入大数据风起云涌的时代,以Hadoop为代表的家族软件,占据了大数据处理的广阔地盘。开源界及厂商,所有数据软件,无一不向Hadoop靠拢。Hadoop也从小众的高富帅领域,变成了大数据开发的标准。在Hadoop原有技术基础之上,出现了Hadoop家族产品,通过“大数据”概念不断创新,推出科技进步。 作为IT界的开发人员,我们也要跟上节奏,抓住机遇,跟着Hadoop一起雄起! 关于作者: 张丹(Conan), 程序员Java,R,PHP,Javascript weibo:@Conan_Z blog: http://blog.fens.me email: bsspirit@gmail.com 转载请注明出处: http://blog.fens.me/hadoop-family-roadmap/ 前言 使用Hadoop已经有一段时间了,从开始的迷茫

分布式应用

北城以北 提交于 2019-12-03 04:53:08
基于SOA的分布式高可用架构和微服务架构,是时下如日中天的互联网企业级系统开发架构选择方案。在核心思想上,两者都主张对系统的横向细分和扩展,按不同的业务功能模块来对系统进行分割并且使用一定的手段实现服务之间的通信,并且基于弹性云服务搭建高可用的分布式解决方案。 但它们之间的区别可能比相似的地方要多,特别是体现在对服务的使用和与云服务的深度结合上。在具体实践中,微服务的架构也可以与其它互联网中间件组合在一起,组成规模更为庞大的SOA分布式系统。本文主要对一个典型的SOA分布式应用的架构和组件做详细的说明。 企业级系统架构的演变 单体式 单体架构即所有系统功能和模块基于MVC的设计模式耦合在一个单体服务器单元中。基于传统的MVC思想,单体应用基于前后端分离的原则,通过Model、Control和View共同来完成一个特点的服务请求。这种传统的架构模式带了了多人团队合作、代码更新和维护、持续部署方面的困难,更重要的是,这种架构无法支持互联网行业对高并发的需求。下图为一个典型商城应用的单体架构及其SSM实现架构: 关于单体式应用的更多资料,可参看: JavaWeb开发之详解Servlet及Servlet容器 基于SSM的Java Web应用开发原理初探 集群 至少在高并发的需求上,单体应用的缺陷是行业所无法忍受的, 那如何提升并发性能呢?一个直接的思路是,把单体应用变成多体,变成集群

es

こ雲淡風輕ζ 提交于 2019-12-03 02:35:50
1、为什么要用es 我们的要求:(1)搜索解决方案要 快 (2)最好是有一个 零配置 和一个完全免费的搜索模式(3)我们希望能够简单地 使用JSON/XML通过HTTP的 索引数据 (4)我们希望我们的搜索服务器始终可用,并能够从一台开始并在需要 扩容时方便 地扩展到数百(5)我们要 实时搜索 ,我们要简单的多租户,我们希望建立一个云的解决方案 2、es的优点(lucene的缺点es都已解决)   Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但是,Lucene只是一个库,使用非常复杂。   lucene缺点:    1)只能在JAVA项目中使用,并且要以jar包的方式直接集成项目中.   2)配置及使用非常复杂-创建索引和搜索索引代码多    3)不支持集群环境-索引数据不同步(不支持大型项目)    4 )索引数据如果太多就不行。 索引库和应用所在同一个服务器 , 共同占用硬盘 . 共用空间少 . 3、es解决了lucene的那些缺点:   (1) 优化 Lucene 的调用方式, 通过简单的 RESTful API 来隐藏 Lucene 的复杂性(调用简单)  (2)并实现了高可用的分布式集群的搜索方案( 高可用,分布式 )   (3) 分布式的实时分析搜索引擎(实时)   (4) 可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据

分布式事务的背景(一)

可紊 提交于 2019-12-03 01:42:50
背景 LCN框架在2017年6月份发布第一个版本,从开始的1.0,已经发展到了5.0版本。 LCN名称是由早期版本的LCN框架命名,在设计框架之初的1.0 ~ 2.0的版本时框架设计的步骤是如下,各取其首字母得来的LCN命名。 锁定事务单元(lock) 确认事务模块状态(confirm) 通知事务(notify) 5.0以后由于框架兼容了LCN、TCC、TXC三种事务模式,为了避免区分LCN模式,特此将LCN分布式事务改名为TX-LCN分布式事务框架。 框架定位 LCN并不生产事务,LCN只是本地事务的协调工 TX-LCN定位于一款事务协调性框架,框架其本身并不操作事务,而是基于对事务的协调从而达到事务一致性的效果。 解决方案 在一个分布式系统下存在多个模块协调来完成一次业务。那么就存在一次业务事务下可能横跨多种数据源节点的可能。TX-LCN将可以解决这样的问题。 例如存在服务模块A 、B、 C。A模块是mysql作为数据源的服务,B模块是基于redis作为数据源的服务,C模块是基于mongo作为数据源的服务。若需要解决他们的事务一致性就需要针对不同的节点采用不同的方案,并且统一协调完成分布式事务的处理。 方案: 若采用TX-LCN分布式事务框架,则可以将A模块采用LCN模式、B/C采用TCC模式就能完美解决。 入门 随着互联化的蔓延,各种项目都逐渐向分布式服务做转换

常用的分布式事务解决方案

匿名 (未验证) 提交于 2019-12-03 00:37:01
关于分布式事务,工程领域主要讨论的是强一致性和最终一致性的解决方案。典型方案包括: 两阶段提交(2PC, Two-phase Commit)方案 eBay 事件队列方案 TCC 补偿模式 缓存数据最终一致性 一、一致性理论 分布式事务的目的是保障分库数据一致性,而跨库事务会遇到各种不可控制的问题,如个别节点永久性宕机,像单机事务一样的ACID是无法奢望的。另外,业界著名的CAP理论也告诉我们,对分布式系统,需要将数据一致性和系统可用性、分区容忍性放在天平上一起考虑。 两阶段提交协议(简称2PC)是实现分布式事务较为经典的方案,但2PC 的可扩展性很差,在分布式架构下应用代价较大,eBay 架构师Dan Pritchett 提出了BASE 理论,用于解决大规模分布式系统下的数据一致性问题。BASE 理论告诉我们:可以通过放弃系统在每个时刻的强一致性来换取系统的可扩展性。 1、CAP理论 在分布式系统中,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)3 个要素最多只能同时满足两个,不可兼得。其中,分区容忍性又是不可或缺的。 <img src="https://pic4.zhimg.com/v2-8bb62ba9e7ce9f35199da032e17f9bb7_b.png" data-rawwidth=

elasticsearch的分布式特性

匿名 (未验证) 提交于 2019-12-03 00:34:01
es本身支持集群模式,是一个分布式系统,主要有两个好处: 增大系统容量,如内存、磁盘,使es集群可以支持PB的数据 提高系统的可用性,即使部分节点停止服务也不影响整个集群 es集群由多个es实例构成: 不同的集群通过名字来区分,可通过cluster.name进行修改,默认为elasticsearch; 每个es实例本质上是一个JVM进程,且有自己的名字,可通过node.name进行修改。 https://github.com/lmenezes/cerebro ,这里我使用的是0.7.2版本的包。 wget https : / /github.com/lmenezes /cerebro/releases /download/v 0 . 7.2 /cerebro- 0 . 7.2 .tgz cerebro is an open source(MIT License) elasticsearch web admin tool built using Scala, Play Framework, AngularJS and Bootstrap. cerebo是kopf在es5上的替代者 解压后进入bin目录下,有一个可执行文件cerebro,直接运行即可: 它默认监听在9000端口,可以通过浏览器直接访问: 进入之后首先设置访问es的地址,这里先设置es的9200端口: http : /