2017年5月26日
摘要: 内存寻址 内存地址 当使用80x86处理器时,必须区分三个地址 1. 逻辑地址:每个逻辑地址包括一个段和偏移,偏移指从段起始地址到实际地址的偏移。 2. 线性地址:一个32位无符号整数,可以用来表示高达4GB的地址,通常用十六进制表示,范围从0x00000000到0xffffffff 3. 物理地址 阅读全文
posted @ 2017-05-26 18:15 bitError 阅读(383) 评论(0) 推荐(0) 编辑
摘要: Linux文件系统分为多层,从上到下分别为用户层、VFS层、文件系统层、缓存层、块设备层、磁盘驱动层、磁盘物理层 1. 用户层:最上面用户层就是我们日常使用的各种程序,需要的接口主要是文件的创建、删除、打开、关闭、写、读等。 2. VFS层:我们知道Linux分为用户态和内核态,用户态请求硬件资源需 阅读全文
posted @ 2017-05-26 18:14 bitError 阅读(4426) 评论(0) 推荐(0) 编辑
摘要: 传统的ACID数据库,可扩展性上受到了巨大的挑战。而HBase这类系统,兼具可扩展性的同时,也提出了类SQL的接口。 HBase架构组成 HBase采用Master/Slave架构搭建集群,它隶属于Hadoop生态系统,由一下类型节点组成:HMaster节点、HRegionServer节点、ZooK 阅读全文
posted @ 2017-05-26 18:14 bitError 阅读(2826) 评论(0) 推荐(0) 编辑
摘要: HDFS是GFS的简化版,它同一时刻只允许一个用户对同一文件进行追加写操作(GFS允许并发写)。它适合存储大文件,并提供高吞吐量的顺序读/写访问。 它的早期版本两大问题,例如:单点失效和水平扩展不佳。针对这两个问题,在hadoop2.0提出统一的解决方案,即HA和NameNode联盟。 HDFS的设 阅读全文
posted @ 2017-05-26 18:13 bitError 阅读(373) 评论(0) 推荐(0) 编辑
摘要: shuffle流程 1. 输入分片(input split):在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身 2. map阶段:就是程序员编写 阅读全文
posted @ 2017-05-26 18:12 bitError 阅读(251) 评论(0) 推荐(0) 编辑
摘要: MapReduce MapReduce的出现,用户只需要编写map和reduce的处理流程,就能完成完成一个分布式计算,简化了分布式任务编写的难度。MapReduce封装了数据切分,任务调度,错误处理,负载均衡。 Spark 和hadoop MapReduce对比,spark主要做了两个方面的优化: 阅读全文
posted @ 2017-05-26 18:12 bitError 阅读(581) 评论(0) 推荐(0) 编辑
摘要: ZooKeeper主要用来解决分布式应用场景中存在的一些问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置管理等。 它支持Standalone模式和分布式模式,在分布式模式下,能够为分布式应用提供高性能和可靠地协调服务,而且使用ZooKeeper可以大大简化分布式协调服务的实现,为开发分 阅读全文
posted @ 2017-05-26 18:10 bitError 阅读(3751) 评论(0) 推荐(0) 编辑
摘要: Spanner 是一个可扩展的、全球分布式的数据库,提供分布式ACID。 架构 universe:一个部署的实例成为universe,目前谷歌有3个,分别为开发/测试/线上 Zone:一个数据中心,相当于一个Hbase/Bigtable Universemaster: 监控这个universe里zo 阅读全文
posted @ 2017-05-26 18:08 bitError 阅读(930) 评论(0) 推荐(0) 编辑
摘要: Storm是一个分布式的、高容错的实时计算系统。Storm适用的场景: 1. Storm可以用来用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中。 2. 由于Storm的处理组件都是分布式的,而且处理延迟都极低,所以可以Storm可以做为一个通用的分布式RPC框架来使用。(实时计算?) 阅读全文
posted @ 2017-05-26 18:07 bitError 阅读(9042) 评论(0) 推荐(1) 编辑
摘要: GreenPlum是一个底层是多台PostgreSQL分表分库的分布式数据库,它有如下特点 支持标准SQL,几乎所有PostgreSQL支持的SQL,greenplum都支持 支持ACID、分布式事务 支持上百台集群(这一点有点不好,hadoop可以万台) 系统架构 Master Host 处理用户 阅读全文
posted @ 2017-05-26 18:06 bitError 阅读(20549) 评论(0) 推荐(0) 编辑
摘要: Hive: 基于 Hadoop 的数据仓库工具 前言 Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,将类 SQL 语句转换为 MapReduce 任务执行。 数据组织格式 下面是直接存储在HDFS上的数据组织方式 Tab 阅读全文
posted @ 2017-05-26 18:06 bitError 阅读(12191) 评论(1) 推荐(0) 编辑
摘要: 再Linux的世界里,万物皆文件,通过虚拟文件系统VFS,程序可以用标准的Linux系统调用对不同的文件系统,甚至不同介质上的文件系统进行读写操作。下面我们揭示Linux网络子系统的秘密 sockfs 在Linux上,和读写文件保持同一套接口是通过套接口伪文件系统sockfs来实现的。 sockfs 阅读全文
posted @ 2017-05-26 18:04 bitError 阅读(1669) 评论(0) 推荐(2) 编辑
摘要: TCP的报头 1. Source Port,Dest Port:源端口和目的端口,和IP层的源IP和目的IP来唯一确定一个socket。 2. Sequence Number:包的序列号,主要用来解决乱序的问题。 3. Acknowledgement Numbe:就是ACK——用于确认收到,用来解决 阅读全文
posted @ 2017-05-26 18:03 bitError 阅读(547) 评论(0) 推荐(0) 编辑
摘要: 基本概念 状态、地址空间 1. 三种基本状态 —— 就绪、运行、阻塞 2. 进程控制块PCB(Process Control Block) 1. 进程描述信息(如PID); 2. 进程控制&管理信息(状态、优先级等); 3. 源分配清单(地址空间状况、fd等); 4. 处理其相关信息(各寄存器的值等 阅读全文
posted @ 2017-05-26 17:31 bitError 阅读(5312) 评论(0) 推荐(0) 编辑
摘要: 介绍 Raft是一种为了管理复制日志的一致性算法。为了提升可理解性,Raft 将一致性算法分解成了几个关键模块,例如领导人选举、日志复制和安全性。同时它通过实施一个更强的一致性来减少需要考虑的状态的数量。同时,raft还提供了集群变更的应对方法。 Raft独有特性: 1. 强领导者:日志条目只从领导 阅读全文
posted @ 2017-05-26 17:30 bitError 阅读(280) 评论(0) 推荐(0) 编辑
摘要: keepalived + 双机热备 布署两台机器(一主一备),这两台用keepalive检测心跳。每台机器都设置一个crontab脚本,每5分钟检查一下Dc进程在不在,如果不在,则拉起来。 如果一台机器的Dc进程崩溃了,则crontab脚本会拉起来。如果整台机器都挂了,则IP会切换到另一台机器的ip 阅读全文
posted @ 2017-05-26 17:30 bitError 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 基于Paxos协议的数据同步与传统主备方式最大的区别在与Paxos只需任意超过半数的副本在线且相互通信正常,就可以保证服务的持续可用,且数据不丢失。 Basic paxos协议更新日志 我们将数据持久化的需求抽象为:在N个server的机群上,持久化数据库或者文件系统的操作日志,并且为每条日志分配连 阅读全文
posted @ 2017-05-26 17:29 bitError 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 基本原则与设计理念 原教旨CAP理论 CAP是什么: 1. C:强一致性,在分布式多副本情况加,对数据的根性与单副本是一样的。 2. A:可用性,即容错,任何时刻都能在一定事件内完成服务 3. P:分区容忍性,出现网络分区现象,即分区间的机器无法通信,这种情况仍然能够继续工作。 为什么CAP三者不能 阅读全文
posted @ 2017-05-26 17:28 bitError 阅读(1696) 评论(0) 推荐(0) 编辑
摘要: 本文主要总结深入理解c++11中的常用新特性 新标准的诞生 保证平稳性和兼容性 通用为本,专用为末 右值引用 在没有右值引用时,对带有指针成员变量的对象进行拷贝,会让指针的内存变得很难管理,甚至会产生错误。这是如果有移动语义,对象不执行拷贝,只执行移动就不会就这种错误。 在介绍移动语义之前,首先得明 阅读全文
posted @ 2017-05-26 17:25 bitError 阅读(586) 评论(1) 推荐(0) 编辑
摘要: 让自己习惯C++ 视C++为一个语言联邦 1. C语言 2. 面对对象 3. C++模板 4. STL容器 尽量以const,enum,inline替换 define 1. const的好处: 1. define直接常量替换,出现编译错误不易定位(不知道常量是哪个变量) 2. define没有作用域 阅读全文
posted @ 2017-05-26 17:20 bitError 阅读(8671) 评论(0) 推荐(2) 编辑