2019独角兽企业重金招聘Python工程师标准>>>


1. 如何理解“分布式”?

经常听到”分布式系统“,”分布式计算“,”分布式算法“。分布式的具体含义是什么?狭义的分布是指,指多台PC在地理位置上分布在不同的地方。

2. 分布式系统

分布式系统:多个能独立运行的计算机(称为结点)组成。各个结点利用计算机网络进行信息传递,从而实现共同的“目标或者任务”。

分布式程序: 运行在分布式系统上的计算机程序。

分布式计算:利用分布式系统解决来计算问题。在分布式计算里,一个问题被细化成多个任务,每个任务可以被一个或者多个计算机来完成。

    区分分布式计算和并行计算:共同点都是大任务划分为小任务。不同点: 分布式计算:基于多台PC,每台PC完成同一任务中的不同部分。分布式的计算被分解后的小任务互相之间有独立性,节点之间的结果几乎不互相影响,实时性要求不高。并行计算:基于同一个台PC,利用CPU的多核共同完成一个任务。

1)分布式操作系统

分布式操作系统:负责管理分布式处理系统资源和控制分布式程序运行。它和集中式操作系统的区别在于资源管理进程通信系统结构等方面。

2)分布式文件系统

分布式文件系统具有执行远程文件存取的能力,并以透明方式对分布在网络上的文件进行管理和存取。

3)分布式程序设计和编译解释系统

分布式程序设计语言用于编写运行于分布式计算机系统上的分布式程序。一个分布式程序由若干个可以独立执行的程序模块组成,它们分布于一个分布式处理系统的多台计算机上被同时执行。它与集中式的程序设计语言相比有三个特点:分布性、通信性和稳健性

分层应用程序可以按层数进行划分,信息可以从数据层(通常存储在数据库)传送到表现层(显示在客户端上)。通常每层相对于其他层来说都运行在不同的系统中,或者在同一系统中的不同进程空间里。分层好处:减小整个应用程序的复杂性;使应用程序能够更好的扩展,跟得上企业发展的需要。

  •    两层应用程序: 典型的结构,一个客户端的用户PC机(前端);一个包含数据库的网络服务器(后端)。逻辑上根据两者的物理位置划分。通常客户端包含大部分业务逻辑,随着数据库及存储过程的发展,SQL语言允许业务逻辑在数据库服务器中存储并执行。
  •  三层应用程序:目前最常用的是三层应用程序结构,包含一个用户服务层(表现层),一个业务服务层和一个数据服务层。业务逻辑层从用户界面和数据源中分离出来。 由于两层应用程序即客户端/服务器端结构的功能限制,分布式应用程序通常分为三层或者更多层。每层的组件都执行一个特定类型的处理。

3)分布式数据库

之我见:分布式数据库,由分布在不同地方(地理位置上的分布)的多个数据库(称为站点)连接(基于计算机网络来连接)而成。利用分布式DBMS对各个站点统一管理,各个站点逻辑上统一起来。基于数据分布的透明性,仿佛在管理单个站点上的数据。其优点在于:容错,提高访问速度。

wiki官方解释: 分布式数据库是用计算机网络将物理上分散的多个数据库单元连接起来组成的一个逻辑上统一的数据库。每个被连接起来的数据库单元称为站点或结点。分布式数据库有一个统一的数据库管理系统来进行管理,称为分布式数据库管理系统。

分布式数据库的基本特点包括:物理分布性、逻辑整体性和站点自治性。从这三个基本特点还可以导出的其它特点有:数据分布透明性、集中与自治相结合的控制机制、适当的数据冗余度和事务管理的分布性。分布式数据库按照各站点中数据库管理系统的数据模型的异同分为异构型分布式数据库和同构型分布式数据库,按照控制系统的类型分为全局控制集中性、全局控制分散型和全局控制可变型

3. Hadoop , HDFS, HBase, Hive

之我见:

Hadoop是一个分布式系统基础框架,基于这个框架开发分布式应用程序,利用集群的高速运算和存储的威力。类似于,基于NVIDIA 的 CUDA并行架构开发并行程序,发挥GPU的并行计算能力。
     HDFS是Hadoop的文件系统。基于HDFS,你可以对文件进行操作,例如新建,删除,编辑,重命名等。
     HBase: 基于Hadoop架构的数据库系统。不是关系型数据库,基于列的模式。
     Hive: 基于HBase的高层语言。类似于SQL --- 访问和处理关系型数据库的计算机语言。

官方解释:

Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。

HDFS(Hadoop Distributed File System)是Hadoop实现的一个分布式文件系统。它存储 Hadoop 集群中所有存储节点上的文件。对外部客户机而言,HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的,存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。HBase的数据模型和存储结构,参考 http://www.searchtb.com/2011/01/understanding-hbase.html

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件(例如xml)映射为一张数据库表并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

转载于:https://my.oschina.net/moooofly/blog/115070

【转载】分布式系统的理解相关推荐

  1. 分布式系统深入理解2PC和3PC

    分布式系统深入理解2PC和3PC 介绍了一下2PC和3PC(详见:[关于分布式事务.两阶段提交协议.三阶提交协议](./分布式事务中的两阶段.三阶段提交协议.md).上一篇文章中主要介绍了下这两种分布 ...

  2. 【转载】全面理解javascript的caller,callee,call,apply概念(修改版)

    今天写PPlayer,发现有段代码引起了我的兴趣: var Class = { create: function() { return function() { this.initialize.app ...

  3. (转载)深入理解Linux中内存管理---分段与分页简介

    首先,必须要阐述一下这篇文章的主题是Linux内存管理中的分段和分页技术. 来回顾一下历史,在早期的计算机中,程序是直接运行在物理内存上的.换句话说,就是程序在运行的过程中访问的都是物理地址.如果这个 ...

  4. 【转载】C# 理解泛型

    术语表 generics:泛型 type-safe:类型安全 collection: 集合 compiler:编译器 run time:程序运行时 object: 对象 .NET library:.N ...

  5. (转载)深入理解WeakHashmap

    WeakHashmap (一) 查看API文档,WeakHashmap要点如下: 1. 以弱键 实现的基于哈希表的 Map.在 WeakHashMap 中,当某个键不再正常使用时,将自动移除其条目.更 ...

  6. (转载)如何理解RxJava中的join操作

    转载:http://avenwu.net/2016/05/10/understand-the-join-operation-in-rx/ 前言 先前写过一篇文章,介绍Rx中不容易理解的概念(Rx那些不 ...

  7. RAFT: 分布式系统PAXOS 理解

    什么是分布式系统:         一个由多台机器在一个可以互联的网络中搭建的集群系统. 为什么要分布式系统:        早在1946年,美国的宾夕法尼亚大学里,莫克利和艾克特两个人为了进行弹道计 ...

  8. 朴素贝叶斯分类器的应用-转载加我的理解注释

    2019独角兽企业重金招聘Python工程师标准>>> 生活中很多场合需要用到分类,比如新闻分类.病人分类等等. 本文介绍朴素贝叶斯分类器(Naive Bayes classifie ...

  9. (转载+ 修改) 深入理解UIWindow

    转载于  http://www.cnblogs.com/smileEvday/archive/2012/11/16/UIWindow.html 每一个IOS程序都有一个UIWindow,在我们通过模板 ...

最新文章

  1. 为什么要在JavaScript中使用静态类型? (使用Flow进行静态打字的4部分入门)
  2. android悬浮窗按钮在哪,android——悬浮窗控件Toast
  3. eclipse左侧框不见了怎么办
  4. Maven(四):定制库到Mave本地资源库 (Kaptcha)
  5. boost使用split分割字符串
  6. Linux下PostgreSQL基础操作
  7. JAVA随机生成文件名:当前年月日时分秒+五位随机数
  8. RoboMaster 2017:机器人版的「王者农药」,工程师们的竞技时代
  9. 流媒体技术笔记(协议相关)
  10. python防止sql注入的方法_python解决sql注入以及特殊字符
  11. Educational Codeforces Round 51 (Rated for Div. 2) The Shortest Statement
  12. 智能优化算法:海鸥优化算法-附代码
  13. 怎样实习才能成长最快
  14. 阿里云上做二级、三级等保的基础概念、方案以及价格
  15. 谷歌浏览器插件打包“文件清单缺失”与安装“文件损害”错误解决
  16. python将列表元素全部小写_在Python中的字符串列表中转换元素的大小写
  17. 计算机怎么学的快,怎样学电脑打字最快电脑新手如何快速学会打字
  18. 燃石、泛生子会师纳斯达克,从招股书看异同(文末附IPO招股书)
  19. 樱桃是樱花的果实吗?
  20. linux裁剪图片的软件,【美图秀秀Linux版】美图秀秀Linux版下载 v1.0.0.0 免费最新版-趣致软件园...

热门文章

  1. 1月3日学习内容整理:modelform
  2. 域用户权限|安装软件
  3. 在惨遭勒索病毒攻击之后,微软呼吁重新制定“数字日内瓦公约”
  4. 张旭升20162329 2006-2007-2 《Java程序设计》第一周学习总结
  5. ORM框架通过映射(反射)获取数据库的数据
  6. Tensorflow之安装
  7. svn强制要求提交注释
  8. ​【v2.x OGE-example 第二节】 实体参数
  9. mysql-5.5.31主从复制
  10. windows2003添加普通用户的远程桌面权限