简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
引言:在各种各样的硬件设备上运行着N多的worker,而任意一个worker都能够独立解决一个问题。每一个集群有这样的设备成千上百个,而同时又有一打这样的集群互相连接交互,于是,这么一个总的集合称为“云”,而其提供的服务称为“云计算”。 在“云中”的任一设备或集群都可以做到"进出自由"、任何崩溃的worker都能被检测和重启,那么,基本上就可以称为靠谱的云计算了。 对于理解云存
Java虚拟机的基本特征基于栈的体系绌构动态加载程序安全性自动内存管理多线程支持与本地库的交互java语言处理器结构JVM与JRE、JDK的关系JVM:Java Virtual Machine负责执行符合规范的Class文件JRE:Java Runtime Environment包含JVM的类库JDK:Java Development Kit
大规模的数据处理最大的难点就是:无法全内存计算因为处理的数据大,所以必须对磁盘进行处理,但是磁盘计算是非常低效的,所以处理的时候就要仔细的考虑算法寻址内存是通过电子工作的,所以搜索速度和物理结构无关,进行寻址时只需要微秒级别既可以磁盘在寻址时需要1,移动磁头2,旋转磁盘 因为磁盘旋转的速度有限,所以寻址消耗毫秒别时间*操作系统会将一个连续的数据存放在一起(win一般是4K
分布式是为了通过横向扩展来提高性能,扩展的原因一般有2个:CPU负载和I/O负载(计算密集型和io密集型)所谓CPU负载就是通常的web服务等,这些服务基本上只消耗cpu,所以只要增加安装相同服务的服务器,然后就可已通过负载均衡器工作了,但是i/o负载因为需要进行数据分割,所以会远比cpu负载来的复杂大多的i/o分布式框架都在解决下面几个问题:1.数据的切割和在机器间的分配策略
常见的数据模型有key/value和Schema Free(自由列表模式)两种,key/value,每条记录由2个域组成,一个作为主键,一个存储记录的数据Schema Free, 每条记录有一个主键,若干条列组成,有点类似关系型数据库在实现这些模型的时候基本使用2种实现方式:哈希加链表,或者B+树的方式哈希加链表:通过将key进行哈希来确定存储位置,相同哈希值的数据
使用虚拟化会有如下好处:1,扩展性可以动态的迁移和复制,使得服务器增加变得更简单2,提高资源利用率3,降低运维成本(远程管理,环境更单一)异常行为局部化,使得主机控制更简单4,提高可用性(抽象硬件差异)5, 调整负载(软件层面对负载进行控制,当监测到负载消耗异常可重启进程或者虚拟机)为了提高硬件的利用率,应当合理分配服务,cpu密集型的服务和I/O密集
1960年诞生在MIT的lisp是最早使用内存动态分布和垃圾回收技术的语言,但本文主要讲解基于sun hotspot的jvm内存管理机制。内存区域中程序计数器,虚拟机栈,本地方法栈三个区域的声明周期和线程相同,方法的执行和退出的同时,栈中的栈帧会执行入栈和出栈的操作,每一个栈帧分配的内存也是可以在类结构推算出来的,因此这几个内存区域的内存分配,回收是具有确定性的,不需要过多考虑内存回收问题
在hadoop整个框架中hdfs是基础,hdfs提供海量的非结构化的数据存储,并提供了文件的创建删除读取和写入等API,对开发者而言只需操作一个目录构成的树形结构。hdfs在设计之初考虑到了以下几个方面:1,hdfs将采用大量稳定性差的廉价pc来做为文件存储设备,所以pc发生死机或硬盘故障的几率极高,应看作是常态,所以hdfs应该提供数据多备份,自动检测节点存活,和故障机器的自动修复2
zookeeper是一个高可用性,高性能的协调服务解决哪些问题在分布式应用中,经常会出现部分失败的情况,即当节点间传递消息的时候由于网络或者接收者进程死掉等原因,发送者无法知道接收者是否收到消息。由于部分失败是分布式系统固有的特征因此zookeeper并不能避免部分失败,但是它可以帮你在部分失败的时候进行正确处理为了解决这个问题zookeeper具有以下特征:1:zookeep
rvm:sudo apt-get install curl sudo apt-get install git-coresudoapt-get install libssl-dev(否则gem不能使用)sudoapt-get install libxslt-dev libxml2-dev (不装bundle install会出错)sudoapt-ge