分布式计算

高性能高可用高并发技术架构的一些理解

匿名 (未验证) 提交于 2019-12-02 23:32:01
分层 冗余 分隔 异步 分布式 安全 自动化 集群 缓存 1、分层   分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后通过上层对下层的依赖和调度组成一个完整的系统。   在网站的分层架构中,常见的为3层,即应用层、服务层、数据层。应用层具体负责业务和视图的展示;服务层为应用层提供服务支持;数据库提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等。   分层架构是逻辑上的,在物理部署上,三层架构可以部署在同一个物理机器上,但是随着网站业务的发展,必然需要对已经分层的模块分离部署,即三层结构分别部署在不同的服务器上,是网站拥有更多的计算资源以应对越来越多的用户访问。   所以虽然分层架构模式最初的目的是规划软件清晰的逻辑结构以便于开发维护,但在网站的发展过程中,分层结构对网站支持高并发向分布式方向的发展至关重要。 2、冗余   网站需要7×24小时连续运行,那么就得有相应的冗余机制,以防某台机器宕掉时无法访问,而冗余则可以通过部署至少两台服务器构成一个集群实现服务高可用。数据库除了定期备份还需要实现冷热备份。甚至可以在全球范围内部署灾备数据中心。 3、分隔   如果说分层是将软件在横向方面进行切分,那么分隔就是在纵向方面对软件进行切分。   网站越大,功能越复杂,服务和数据处理的种类也越多

大数据Hadoop、Spark等名词释义

人走茶凉 提交于 2019-12-01 18:52:56
大数据技术本质上解决4个核心问题:存储、计算、查询、挖掘 。 本文主要针对前三点经常出现的相关名词进行释义。 背景 大数据技术先驱Google发表了:《Google file system》《Google MapReduce》《Google BigTable》。Apache软件基金会根据这三本秘籍研究出了hadoop技术并开源推广。从此大数据分布式计算技术层出不穷,技术革命主要围绕计算和查询的性能展开,在存储上并没有太大变化。 鼻祖hadoop是做什么的? Hadoop就是一个分布式计算的解决方案。 比如1亿个1相加。单台计算机的处理方式是:做一亿次的循环每次+1。分布式的处理方式是:用1万台计算机,每个计算机只需计算1万个1相加,再有一台计算机把1万台计算机的结果相加。计算速度就提高了1万倍。 这可能是一个不恰当的例子。但所谓分布式、云计算,大抵也就是这么回事了。 分布式计算技术经历的时代 hadoop1.0时代 Hadoop1.0=HDFS(数据存储)+ Mapreduce(数据处理) HDFS:Hadoop Distributed FileSystem。传统的文件系统是单机的,不能跨机器,比如oracle、sqlserver。HDFS则能让大量数据横跨成百上千台机器,并且它让你看到的是一个文件系统而不是很多文件系统。比如你要获取/hdfs/tmp/file1的数据

Spark与Hadoop计算模型的比较分析

北慕城南 提交于 2019-12-01 16:22:30
Spark与Hadoop计算模型的比较分析 最近很多人都在讨论Spark这个貌似通用的分布式计算模型,国内很多机器学习相关工作者都在研究和使用它。   Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发。   那么Spark和Hadoop有什么不同呢?    1.Spark的中间数据放到 内存 中,对于迭代运算效率比较高。   Spark aims to extend MapReduce for iterative algorithms, and interactive low latency data mining. One major difference between MapReduce and Sparkis that MapReduce is acyclic. That is, data flows in from a stable source, isprocessed, and flows out to a stable filesystem. Spark allows iterative computation on the same data, which would form a cycle if jobs were visualized. ( 旨在 延长 MapReduce的 迭代算法, 和 互动 低延迟 数据挖掘 的 。

谈谈我对大数据技术的一些理解。

徘徊边缘 提交于 2019-11-30 05:53:44
近来项目组准备把批量迁移到大数据环境下,再加上新的业务需求,需要进行一些大规模数据的加工,所以号召团队往大数据方向靠,最近我也买了几本书,网上找了一些资料学习了一下,所以想谈谈自己对这门技术的粗略了解。 大数据技术最近的火热,主要源自于google的三篇论文, Google File System中文版 Google Bigtable中文版 Google MapReduce中文版 这几篇文章,因为时间原因,也没有时间去全部阅读,只是大概的有所了解。 HDFS 架构 首先就是大数据的存储基础,HDFS。HDFS分布式的存储数据,在多个节点上备份数据,使得数据的存储成本大大降低。高容错性、适合批处理、成本低、适合大数据处理。这些都是其非常显著的优点。 MAPREDUCE 分布式计算引擎,通过MAP操作,将任务分为多个子任务,分配给集群,而Reduce工作将各个集群的计算结果合在一起,返回给调度者。因为期间的工作,需要多次的跟硬盘进行IO操作,所以极大的影响了效率,以至于后面出现更加优秀的SPARK计算引擎。 现在,在面对大规模数据的时候,我们能把数据存起来,同时,我们还能够把数据进行汇总。但是,用MapReduce直接进行编程,试过的人都知道,这是一件非常痛苦的事情。而,我们已经非常习惯使用关系型数据库,使用SQL语句去操作数据。故, HIVE 出现了,我们在前台写入SQL语句

大数据的概念和基本技术的通俗的解释

我是研究僧i 提交于 2019-11-29 22:33:21
大数据,很明显从字面上理解就是大量的数据,海量的数据。大,意思就是数据的量级很大,不上TB都不好意思说是大数据。数据,狭义上理解就是12345那么些数据,毕竟计算机底层是二进制来存的,那么在大数据领域,数据就不仅仅包括数字这些,它可以是所有格式的东西,比如日志,音频视频,文件等等。 所以,大数据从字面上理解就是海量的数据,技术上它包括这些海量数据的采集,过滤,清洗,存储,处理,查看等等部分,每一个部分包括一些大数据的相关技术框架来支持。 当然了,关于这些只是大数据的边角料,数据资料是一直在更新完善的,大数据资料库是收集资料、传输资料、存储资料之后再挖掘资料、分析资料、展示资料,这一系列的步骤都是非常关键的,也是密不可分的。 都是需要有着庞大的数据来源,不仅如此,大数据和云计算也是有着非常密切的关系的,比如,大数据的分布式存储以及分布式计算都是云计算的重要技术。 大数据具有4大特征,也就是快速化、多样化、大量化以及价值高和密度低,快速化是指的互联网连接设备数量的增长为我们带来更高速数据的处理。 而多样化则是指的数据的来源多,格式也多,来源具体到生活中包括搜索引擎的信息来源、社交网络信息来源、通话记录等都是大数据信息的来源。 当然了,关于这些只是大数据的边角料,数据资料是一直在更新完善的,大数据资料库是收集资料、传输资料、存储资料之后再挖掘资料、分析资料、展示资料

作为软件工程师解决现实问题应当具备的基础技能

孤者浪人 提交于 2019-11-29 01:59:13
编程开发本质是运用程序和计算机来解决现实中的各种问题,因此,编程开发人员的才智发挥载体是计算机或者说计算设备,直接武器是程序。 难度:中级 程序员用来进行编程开发所需要的技能,归结起来主要如下: 理解计算模型和框架: 顺序计算、并发计算 (并行计算、分布式计算)。 理解应用所基于的计算模型和框架是非常重要的。传统应用通常基于顺序计算,而现代商业应用,比如云计算,通常基于分布式计算架构;大规模的科学计算应用,比如基因序列计算,则基于并行计算。 高效的数据处理: 熟悉常用数据结构和算法设计,能够针对计算目标设计高效的数据结构和算法并实现之, 满足性能需求。 大容量的数据管理与检索: 至少精通一种主流数据库, 从数据处理中分离出的一种专门针对大量应用数据实时检索要求的技术。 系统底层机制: 进程、信号、内存管理、API 等,理解相关概念及实现,熟悉使用Linux&MacOS&Windows至少一种操作系统。 进程的网络通信: TCP/IP socket , RPC ,Http , 序列化与反序列化, 熟悉网络程序设计的底层原理。 编程语言: 面向过程、面向对象、脚本语言、函数型、浏览器语言等,最好每种类型语言掌握一种。 正则表达式: 灵活地操作文本和字符串。 代码阅读与维护: 能够读懂代码,维护代码,重构或扩展代码。 错误处理技术: 异常机制、 返回值与全局变量、 直接退出或重续 等;

Hadoop开篇

佐手、 提交于 2019-11-28 09:03:57
目录 Hadoop是什么 Hadoop的起源 Hadoop版本与架构核心 Hadoop理念 PS 谁说大象不会跳舞 Hadoop是什么 官网定义:The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. Hadoop: 适合大数据的分布式存储和计算平台 现为Apache顶级开源项目,Hadoop不是指具体一个框架或者组件,它是Apache软件基金会下用Java语言开发的一个开源分布式计算平台。实现在大量计算机组成的集群中对海量数据进行分布式计算,适合大数据的分布式存储和计算平台。 举个简单例子:假如说你有一个篮子水果,你想知道苹果和梨的数量是多少,那么只要一个一个数就可以知道有多少了。如果你有一个集装箱水果,这时候就需要很多人同时帮你数了,这相当于多进程或多线程。如果你很多个集装箱的水果,这时就需要分布式计算了,也就是Hadoop。Hadoopd之所谓会诞生,主要是由于进入到大数据时代,计算机需要处理的数据量太过庞大。这时就需要将这些庞大数据切割分配到N台计算机进行处理

大数据学习基础知识总纲

时光总嘲笑我的痴心妄想 提交于 2019-11-27 18:19:40
大数据需要学习什么?很多人问过我这个问题。总是没有一个合适的契机去好好总结这些内容,直到开始写这篇东西。大数据是近五年兴起的行业,发展迅速,很多技术经过这些年的迭代也变得比较成熟了,同时新的东西也不断涌现,想要保持自己竞争力的唯一办法就是不断学习。 大数据需要的语言 Java java可以说是大数据最基础的编程语言,据我这些年的经验,我接触的很大一部分的大数据开发都是从Jave Web开发转岗过来的(当然也不是绝对我甚至见过产品转岗大数据开发的,逆了个天)。 一是因为大数据的本质无非就是海量数据的计算,查询与存储,后台开发很容易接触到大数据量存取的应用场景 二就是java语言本事了,天然的优势,因为大数据的组件很多都是用java开发的像HDFS,Yarn,Hbase,MR,Zookeeper等等,想要深入学习,填上生产环境中踩到的各种坑,必须得先学会java然后去啃源码。 说到啃源码顺便说一句,开始的时候肯定是会很难,需要对组件本身和开发语言都有比较深入的理解,熟能生巧慢慢来,等你过了这个阶段,习惯了看源码解决问题的时候你会发现源码真香。 Python和Shell shell应该不用过多的介绍非常的常用,属于程序猿必备的通用技能。python更多的是用在数据挖掘领域以及写一些复杂的且shell难以实现的日常脚本。 如果你对大数据开发感兴趣,想系统学习大数据的话