原创文章,转载请注明原作地址:http://www.jianshu.com/p/52881714d786
论文地址: https://static.googleusercontent.com/media/research.google.com/zh-CN//archive/bigtable-osdi06.pdf
一、概述
Bigtable论文主要描述了BigTable的数据模型、设计思想和具体实现。
Bigtable兼具了广泛的可使用性、可拓展性、高性能和高可用性。Bigtable在实现策略上与传统数据库有很多相似的地方,但是Bigtable不支持完整的关系型数据模型;相反,Bigtable提供的是一种非常简单的数据模型,以及为客户端提供接口,可以灵活地操控数据层和格式,可以控制数据在物理层的存储方式。对于Bigtable来说,存储的数据都是未解释的字符串,bigtable对数据的行键和列名建立索引。最后,通过调整Bigtable的表结构参数,客户端还可以控制数据是存在内存还是硬盘上。
二、数据模型
Bigtable是一个稀疏的、分布式的、持久化的多维有序Map。这张Map针对行键、列名和时间戳建立了索引;Map中的每个值都是一串未解释的字节数组。具体模型如下: (row:string, column:string, time : int64) -> string
1、行
对Bigtable同一行数据的读写操作都是原子的,在客户端需要并发操作同一行数据的时候,这个设计使服务器对读写请求的处理顺序更清晰明了。数据在Bigtable中按照行键的字母序进行排列,Bigtable对数据自动分片,每一份数据的行键范围是连续的。分片后,每一份数据称为一个tablet,tablet是数据分布和负载均衡的基本单位。
通过合理设计行键,用户可以将需要同时分析的数据存储在相邻位置,提高程序运行效率。
2、列族
Bigtable的列是分组的,每个组称为一个列族,是访问控制的基本单位。同一列族数据通常是同一类型的,列族的数量需要控制得小一些,最多不能超过几百。一个列key由两部分组成:family:qualifier。列族名必须是可打印,qualifier可以是任意字符串。访问控制以及硬盘内存使用,都是在列族界别上控制的。
3、时间戳
Bigtable中每个单元格都可以保存多个版本的数据,版本与版本之间用写入时的时间戳区分,时间戳的数据类型是int64。同一单元格的不同版本,按照时间戳降序排列,因此最近的数据总是最先被读到。Bigtable支持两种方式的数据自动删除(设置是在列族单位上):
客户端可以指定Bigtable只保留最新的n个版本
客户端可以指定只保留多长时间以内新写入的数据
三、API
Bigtable提供的API支持一下几种操作:
建删表、更改表结构等操作
数据写入删除等操作
支持单行的事务性操作,暂不支持跨行事务
支持将单元格当做整型计数器使用
支持在server端执行客户端自定义的脚本(Sawzall脚本),当前只支持数据处理,不支持数据会写到Bigtable
可与MapReduce计算框架结合使用(可用作输入或输出)
四、基础模块
Bigtable建立在其他几个Google基础工具的基础上。Bigtable利用分布式的Google File System(GFS)来存储日志和数据文件。Bigtable通常和其它的分布式应用共用集群。Bigtable依赖于一个集群管理系统,来分发job,管理资源,处理机器宕机,以及管理机器状态。
Bigtable使用Google的SSTable文件格式,来存储数据。在SSTable中,数据是持久化不可更改的有序Map,数据可以是任意的字符串数组。SSTable由一系列的块组成,在文件末尾存储了块索引用于定位各个块,当文件打开时,块索引被优先载入到内存。在块索引帮助下,一次文件查找只需要一次磁盘寻道;当然,也可以将整个SSTable载入到内存,则可避免所有磁盘寻道操作。
Bigtable依赖一个高可用、持久化的分布式锁--Chubby。Chubby使用Paxos算法。Chubby提供了一个由目录和小文件组成的namespace,每个目录或者文件都可以充当锁,对一个文件的读写都是原子性的。Chubby客户端持有一个会话,在一个过期期限内,如果客户端无法成功刷新它的会话,客户端就会丢失所有当前持有的锁。Bigtable使用Chubby完成以下几项任务:
确保任何时间至多有一个活跃的master
存储Bigtable数据的bootstrap位置
发现新的tablet server,关闭宕机的tablet server
存储Bigtable的表结构信息
存储访问控制列表
当Chubby服务不可用时,也会导致Bigtable不可用
五、具体实现
Bigtable的实现主要有三个模块组成:一个链接给所有客户端的库,一个master server,和若干个tablet server。
master节点的作用是:
分配tablet到各个tablet server
发现新增或者被移除的tablet server
均衡tablet server的负载
回收GFS上的文件
管理表结构更改(包括表或者列族的创建)
tablet server的职责是,管理一个tablet集合。tablet server直接处理读写请求,当tablet数据过多,需要发起tablet分裂操作。tablet server可以动态地添加或者移除,以适应集群负载。
与许多单master分布式存储系统相似,客户端数据不经过master,而是直接向tablet server发起请求。由于连tablet的位置信息也不需要通过master节点,master节点的负载是很轻的。
1. tablet位置信息
Bigtable使用一个三层结构的B+树来存储tablet位置信息。第一层是一个Chubby文件,存储了root tablet的位置,而root tablet存储了METADATA表所有分片的位置,METADATA表中则存储了用户表所有分片的位置。
客户端中缓存了tablet的位置信息,当客户端发现tablet位置信息错误,它会递归地查找B+树,以取得新的位置信息。当客户端首次建立链接时,至多需要三个网络往返时间取得tablet位置信息;但如果是发现METADATA表信息错误,至多需要六次网络往返。为了节省时间,METADATA表存储在内存中;为了进一步节省时间,客户端每次回读取超过一个数据分片,当它读取METADATA表的信息时,这称为预读取。
2. tablet分配
master节点会追踪所有正在使用的tablet位置。
当一个tablet server进程启动,首先会在chubby的对应目录下创建一个唯一命名的文件,并通过这个文件获取一个排它锁。当一个tablet server丢失了它的排它锁,那么分配到这台server的所有tablet就停止服务了。当然,如果这个文件仍然存在,tablet server会尝试重新获取锁;而如果这个文件已被删除,那么tablet server会选择杀死自己。
master通过监控chubby对应的目录,获取所有的tablet server。master节点会定期轮询这些tablet server,一旦发现某台tablet server丢失了它的chubby锁,或者无响应,master节点会尝试获取对应文件的互斥锁,并删除对应文件,然后master就可以重新分配对应的tablet。
master一旦发现自己的chubby会话过期失效,就会选择杀死自己。
当master节点被集群管理系统启动时,master几点首先需要扫描得到所有的tablet分配情况,有以下四步: ● 获取一个唯一的master chubby锁,确保master进程的唯一 ● 扫描chubby对应目录,获取所有服务中的server ● 与所有server通信,获取所有已分配的tablet ● 扫描METADATA表,将不在已分配名单上的tablet加入待分配名单 ● 向server发送tablet load请求,分配对应的tablet
tablet拆分操作由server发起,当server将新的tablet信息记录到METADATA表,这个操作就被提交了。如果拆分被提交,即使未能成功通知到master,当master需要重新分配旧的tablet时,这个变化也会被发现。
3. tablet服务详述
tablet数据被记录在GFS中。所有的更新首先会被写入一份日志,之后再写入内存中一个有序的缓存--memtable,而旧的更新记录则被永久化成一些列的SSTable文件。当需要恢复一个tablet时,server除了需要读取对应的SSTable文件索引之外,还需要重放日志中保存的更新记录,以恢复memtable中的内容。
当接收到读写请求时,server需要验证请求的合法性,另外也需要检查对应权限。读请求的处理是基于SSTable和memtable的合并视图进行的,因为SSTable和memtable都是按字母序排列的,合并视图是相当方便高效的。
4. compactions
minor compaction :随着更新操作进行,memtable中的数据膨胀,当触发阈值时,memtable中的数据被刷写到GFS,形成一个新的SSTable文件。好处有二:可以减少server的内存使用;当tablet需要被恢复,可以减少commit log中需要重放的操作记录。
merging compaction :随着minor compaction的进行,形成大量磁盘小文件,这样处理读请求时就需要处理大量SSTable文件,形成不便;merging compaction的作用就是将多个SSTable文件和memtable中的记录,重写成一个新的SSTable文件。
major compaction :major compaction是特殊的merging compaction操作,因为它会将所有的SSTable重写成一个新的SSTable;另外,旧的无效数据的删除也是在major compaction中进行;Bigtable会定期执行major compaction,回收资源。
六、改进技巧
1. 位置组
客户端可以将多个列族定义成一个位置组(locality group)。同一locality group的数据会被存在同一个SSTable文件中,因此最好将会同时访问,有相似特性的数据放在同一个locality group中,用户可以为每个locality group定义一些特性,包括是否优先存在内存中。
2. 压缩
客户端可以为每个locality group定义SSTable文件是否压缩存储,以及用哪一种压缩格式。bigtable的数据是每个block单独压缩的,比起整个文件一起压缩,分块压缩会浪费一些空间,但是在读取某个块数据的时候,bigtable就不必解压整个文件了。
3. 缓存以得到更好的读效率
bigtable有两重缓存:
4. 布隆过滤器
为每个SSTable创建一个布隆过滤器,用于判断特定的行或者列是否在对应的SSTable中。借助布隆过滤器,我们需要花费少量的内存用于存储布隆过滤器,却可以大大减少查找不存在的行或列所需要的磁盘寻道时间。
5. commit-log实现
commit-log存储在GFS上,同一server上的所有tablet共享同一个commit-log,因为如果一个数据分片一个log的话,会导致大量的并发写GFS日志文件,耗费大量的时间在磁盘寻道上;并且,批量提交的批次大小也会变小,导致批量提交的优化效果变差。
然而,如果一台server挂掉了,分配到这台server上的所有tablet会被重新分配到其他服务器,而这些tablet的commit-log在同一文件里,那么,假如这些tablet被重新分配到其他100台服务器上,那么这份commit-log会被读取100次。为了避免这个问题,在读取commit-log之前,master会发起对log中的记录按照
排序,log会按照特定大小分片,散发给多台服务器并行排序。排序完成之后,需要读取log的server只需要一次磁盘寻道以及一次顺序读取,就可以读完自己载入的tablet的相关记录。
另外,为了避免偶尔可能出现的commit-log写入卡住问题,一个server上通常有两个写log线程及对应的两个log文件,一个写入线程卡住则切换到另一线程,为了避免同一记录重复记录log,每个操作会有一个序列号用于去重。
6. 加速tablet恢复
当master指令将一个tablet从一台server移动到另一台,原先的server会立刻对该tablet执行一次minor compaction,将内存中的数据先刷写到磁盘,这样当tablet移动到另一台server的时候,可以减少需要从log中恢复的未持久化的记录。第一次compact执行过后,原先的server停止接收新请求,并立即执行下一次minor compaction(这次用时会很短),然后卸载该tablet,tablet移动到新的server之后,新的server就不必读取log文件恢复内存中的记录了。
7. 利用不变性
SSTable文件的数据不变性为具体实施带来许多便利。例如,在并发读SSTable数据文件时,并发控制变得十分简单;删除旧数据的操作简化为从METADATA表中删除对应SSTable文件的记录;tablet分裂时,不需要立刻为子分片生成两份新的SSTable文件,子分片可以共享旧的SSTable文件。
memtable需要同时处理读写请求,为了简化并发操作,memtable中的行都是copy-on-write的,这样就能读写并发进行。
七、效率评估
八、具体应用
九、经验总结
分布式系统易受多种错误影响,不仅仅局限于网络分区和故障停止。我们曾遇见,内存和网络损坏、很大的时钟偏差、被挂起的机器、扩展和非对称的网络分区、我们依赖的模块系统出现bug、GFS资源溢出,以及预见和未预见的硬件维护等等。
在确定确切的用户使用场景之前,不要急着添加新的功能特性。
做好适当的系统级别监控非常重要。
保持简单的设计。
你可能感兴趣的:(Bigtable论文阅读笔记)
论文阅读笔记——QLORA: Efficient Finetuning of Quantized LLMs
寻丶幽风
论文阅读笔记 论文阅读 笔记 人工智能 深度学习 语言模型
QLoRA论文4-bit标准浮点数量化常见的量化技术是最大绝对值量化:XInt8=round(127absmax(XFP32)XFP32)=round(cFP32,XFP32)式(1)X^{Int8}=round(\frac{127}{absmax(X^{FP32})}X^{FP32})=round(c^{FP32},X^{FP32})\qquad\qquad\text{式(1)}XInt8=ro
论文阅读笔记:Graph Matching Networks for Learning the Similarity of Graph Structured Objects
游离态GLZ不可能是金融技术宅
知识图谱 机器学习 深度学习 人工智能
论文做的是用于图匹配的神经网络研究,作者做出了两点贡献:证明GNN可以经过训练,产生嵌入graph-leve的向量可以用于相似性计算。作者提出了一种新的基于注意力的跨图匹配机制GMN(cross-graphattention-basedmatchingmechanism),来计算出一对图之间的相似度评分。(核心创新点)论文证明了该模型在不同领域的有效性,包括具有挑战性的基于控制流图(control
论文阅读笔记——π0: A Vision-Language-Action Flow Model for General Robot Control
寻丶幽风
论文阅读笔记 论文阅读 笔记 人工智能 机器人 语言模型
π0论文π0π_0π0是基于预训练的VLM模型增加了actionexpert,并结合了flowmatching方法训练的自回归模型,能够直接输出模型的actionchunk(50)。π0采用FlowMatching技术来建模连续动作的分布,这一创新使模型能够精确控制高频率的灵巧操作任务,同时具备处理多模态数据的能力。架构受到Transfusion的启发:通过单一Transformer处理多目标任务
论文阅读笔记——Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware
寻丶幽风
论文阅读笔记 论文阅读 笔记 人工智能 深度学习 机器人
ALOHA论文ALOHA解决了策略中的错误可能随时间累积,且人类演示可能是非平稳的,提出了ACT(ActionChunkingwithTransformers)方法。ActionChunking模仿学习中,compoundingerror是致使任务失败的主要原因。具体来说,当智能体(agent)在测试时遇到训练集中未见过的情况时,可能会产生预测误差。这些误差会逐步累积,导致智能体进入未知状态,最终
Self-Attentive Sequential Recommendation论文阅读笔记
调包调参侠
推荐系统学习 深度学习 机器学习 神经网络 算法
SASRec论文阅读笔记论文标题:Self-AttentiveSequentialRecommendation发表于:2018ICDM作者:Wang-ChengKang,JulianMcAuley论文代码:https://github.com/pmixer/SASRec.pytorch论文地址:https://arxiv.org/pdf/1808.09781v1.pdf摘要顺序动态是许多现代推荐系
论文阅读笔记2
sixfrogs
论文阅读笔记 论文阅读 cnn
OptimizingMemoryEfficiencyforDeepConvolutionalNeuralNetworksonGPUs1论文简介作者研究了CNN各层的访存效率,并揭示了数据结构和访存模式对CNN的性能影响。并提出了优化方法。2方法介绍2.1Benchmarks数据集:MNIST,CIFAR,ImageNetCNN:AlexNet,ZFNet,VGG2.2实验设置CPU:IntelXe
大模型隐空间推理论文阅读笔记
猴猴猪猪
AIGC python 实验记录 人工智能 深度学习
文章目录TrainingLargeLanguageModelstoReasoninaContinuousLatentSpace一.简介1.1摘要1.2引言TrainingLargeLanguageModelstoReasoninaContinuousLatentSpace一.简介机构:Meta代码:任务:特点:方法:1.1摘要现状:大语言模型往往局限在“languagespace"进行推理,在解决
【网安AIGC专题】46篇前沿代码大模型论文、24篇论文阅读笔记汇总_大模型在代码缺陷检测领域的应用实践(1)
2401_84972910
程序员 AIGC 论文阅读 笔记
欢迎一起踏上探险之旅,挖掘无限可能,共同成长!写在最前面本文为邹德清教授的《网络安全专题》课堂笔记系列的文章,本次专题主题为大模型。本系列文章不仅涵盖了46篇关于前沿代码大模型的论文,还包含了24篇深度论文阅读笔记,全面覆盖了代码生成、漏洞检测、程序修复、生成测试等多个应用方向,深刻展示了这些技术如何在网络安全领域中起到革命性作用。同时,本系列还细致地介绍了大模型技术的基础架构、增强策略、关键数据
论文阅读笔记——Prediction with Action: Visual Policy Learning via Joint Denoising Process
寻丶幽风
论文阅读笔记 论文阅读 笔记 人工智能
以前的method是输入视频输出视频或者输入视频和action学习action,该方法认为action,video和othercondition具有一定联系,所以一次性对所有的进行jointdenoise。网络结构采用MaskedMulti-headAttention关联不同模态,使用DiT的backbone。
深度学习重要论文阅读笔记 ResNet (2025.2.26)
北岛寒沫
逐界星辰2025 计算机科研 深度学习 论文阅读 笔记
文章目录问题背景数据预处理神经网络模型模型性能知识点积累英语单词积累问题背景随着神经网络变得更深(层数变多),模型的训练过程也会变得更加困难。当神经网络的深度增加,就会出现梯度消失和梯度下降现象,妨碍模型的收敛。不过,这种情况可以通过归一化的模型初始化和中间的归一化层基本解决。但是,尽管在增加了归一化技术的情况下很深的神经网络可以收敛,又出现了另外一个问题,即随着模型深度的增加,模型的准确率反而下
HBase:大数据时代的“超级数据库”
狮歌~资深攻城狮
hbase 大数据
HBase:大数据时代的“超级数据库”你是不是也被数据淹没过?大家有没有这样的经历,手机里存了成千上万张照片,每次想找某一张特定的照片时,都得翻半天?或者在工作中面对堆积如山的数据报表,感觉像是在大海捞针。今天我们要聊的HBase,就是为了解决这种“数据洪流”的问题。什么是HBase?HBase是一个分布式的、面向列的开源数据库,它基于Google的Bigtable论文设计而成。简单来说,HBas
论文阅读笔记1——DARTS:Differentiable Architecture Search可微分架构搜索(一)(论文翻译学习)
fuhao7i
论文阅读笔记 深度学习 人工智能 机器学习 算法 计算机视觉
DARTS:DifferentiableArchitectureSearch可微分架构搜索(一)DARTS:DifferentiableArchitectureSearch(一)ABSTRACT摘要1.INTRODUCTION介绍2.可微的结构搜索加油加油!如果你感觉你现在很累,那么恭喜你,你现在正在走上坡路!让我们一起加油!欢迎关注我的讲解视频,让我们一起学习:Bilibili主页:https:
【CCM-SLAM论文阅读笔记】
随机取名字
协同SLAM论文阅读 slam
CCM-SLAM论文阅读笔记整体框架结构如图所示:单智能体只负责采集图像数据,运行实时视觉里程计VO以估计当前位姿和环境地图,由于单智能体计算资源有限,负责生成的局部地图只包含当前N个最近的关键帧。服务器负责地图管理、地点识别、地图融合和全局BA优化。所有局部地图使用本地里程计框架,地图信息在从一个本地里程计到另一个本地里程计框架的相对坐标中进行交换。CCM-SLAM不假设任何关于智能体初始位置的
深入浅出了解HBase及RDD编程
山海王子
大数据 hbase
深入浅出了解HBaseHBase简介架构HBase是什么样的数据库?关键是数据模型关键要素:什么是单元格时间戳的功能是什么?HBase为什么能存储海量数据创建一个HBase表配置Spark编写程序读取HBase数据编写程序向HBase写入数据关于搭建HBase高可用集群的图文教程,可参考我的另一篇博文——安装并配置HBase集群(5个节点)。HBase简介HBase是GoogleBigTable的
腾讯云大数据套件TBDS与阿里云大数据能力产品对比
奋力向前123
数据库 java 人工智能 腾讯云 大数据 阿里云
前言博主在接触大数据方向研究的时候是在2016年,那时候正是大数据概念非常火热的一个时间段,最著名的Google的3篇论文。GoogleFS、MapReduce、BigTable,奠定了大数据框架产品的基础。Google文件系统,计算框架和存储框架。往后所有的大数据产品和过程域无一不是在三个模块的基础上进行搭建,迭代,完善。我们最开始使用的都是开源的产品,比如hadoop,HDSF,MAPRedu
【论文阅读笔记|EMNLP2023】DemoSG: Demonstration-enhanced Schema-guided Generation for Low-resource Event Ext
Rose sait
论文阅读 笔记
论文题目:DemoSG:Demonstration-enhancedSchema-guidedGenerationforLow-resourceEventExtraction论文来源:EMNLP2023论文链接:2023.findings-emnlp.121.pdf(aclanthology.org)代码链接:https://github.com/GangZhao98/DemoSG0摘要当前大多数
神经网络压缩实验-Deep-compression
无用技术研究所
首发于个人博客,结合论文阅读笔记更佳实验准备基础网络搭建为了实现神经网络的deepcompression,首先要训练一个深度神经网络,为了方便实现,这里实现一个两层卷积+两层MLP的神经网络classnet(pt.nn.Module):def__init__(self):super(net,self).__init__()self.conv1=pt.nn.Conv2d(in_channels=1,
Hbase基础
yandao
hadoop hbase big data hadoop
1.HBase简介HBASE理论HBase是一个基于Hadoop的分布式、面向列的开源数据库,对大数据实现了随机定位和实时读写。HBase是基于Google的Bigtable技术实现的,GoogleBigtable利用GFS作为其文件存储系统,HBase利用Hadoop的HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase利用Hadoop的M
论文阅读笔记(9)——《A Practical Survey on Faster and Lighter Transformers》
StriveQueen
自然语言处理 机器学习 论文阅读笔记 算法 神经网络 机器学习 Transformer
1Abstract2Introductionrecurrentneuralnetworks(RNNs)longshort-termmemory(LSTM)networksequencetosequenceframeworkinter-attentionrelativeeffectivecontextlength(RECL)Transformer3TransformerA.EncoderB.Deco
论文阅读笔记:AI+RPA
几道之旅
人工智能
文章目录论文题目下载地址论文摘要论文题目Challengesandopportunities:ImplementingRPAandAIinfrauddetectioninthebankingsector下载地址点击这里下载论文摘要在银行业中,将机器人流程自动化(RPA)和人工智能(AI)集成用于欺诈检测是一项重大变革,既带来了挑战,也带来了机遇。随着金融机构面临日益复杂的欺诈企图,RPA和AI成为
HBase介绍
mingyu1016
数据库
概述HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》。HBase是GoogleBigtable的开源实现,它利用HadoopHDFS作为其文件存储系统,利用HadoopMapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。HBase的表结构HBase以表的形式存储数据。表有行和列组成。列划分为
论文阅读笔记(十九):YOLO9000: Better, Faster, Stronger
__Sunshine__
笔记 YOLO9000 detection classification
WeintroduceYOLO9000,astate-of-the-art,real-timeobjectdetectionsystemthatcandetectover9000objectcategories.FirstweproposevariousimprovementstotheYOLOdetectionmethod,bothnovelanddrawnfrompriorwork.Theim
论文阅读笔记: DINOv2: Learning Robust Visual Features without Supervision
小夏refresh
论文 计算机视觉 深度学习 论文阅读 笔记 深度学习 计算机视觉 人工智能
DINOv2:LearningRobustVisualFeatureswithoutSupervision论文地址:https://arxiv.org/abs/2304.07193代码地址:https://github.com/facebookresearch/dinov2摘要大量数据上的预训练模型在NLP方面取得突破,为计算机视觉中的类似基础模型开辟了道路。这些模型可以通过生成通用视觉特征(即无
Hbase、hive以及ClickHouse的介绍和区别?
damokelisijian866
hbase hive clickhouse
一、Hbase介绍:HBase是一个分布式的、面向列的开源数据库,由ApacheSoftwareFoundation开发,是Hadoop生态系统中的一个重要组件。HBase的设计灵感来源于Google的Bigtable论文,它通过提供类似于Bigtable的能力,在Hadoop之上构建了一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。HBase主要用于存储大量结构化数据,并支持随机读写访问,
Hive和Hbase的区别
傲雪凌霜,松柏长青
大数据 后端 hive hbase hadoop
Hive和HBase都是Hadoop生态系统中的重要组件,它们都能处理大规模数据,但各自有不同的适用场景和设计理念。以下是两者的主要区别:1.数据模型Hive:Hive类似于传统的关系型数据库(RDBMS),以表格形式存储数据。它使用SQL-like语言HiveQL来查询和处理数据,数据通常是结构化或半结构化的。HBase:HBase是一个NoSQL数据库,基于Google的BigTable模型。
HBase
傲雪凌霜,松柏长青
大数据 后端 hbase 数据库 大数据
ApacheHBase是一个基于Hadoop分布式文件系统(HDFS)构建的分布式、面向列的NoSQL数据库,主要用于处理大规模、稀疏的表结构数据。HBase的设计灵感来自Google的Bigtable,能够在海量数据中提供快速的随机读写操作,适合需要低延迟和高吞吐量的应用场景。HBase核心概念表(Table):HBase的数据存储在表中,与传统的关系型数据库不同,HBase的表是面向列族(Co
SAFEFL: MPC-friendly Framework for Private and Robust Federated Learning论文阅读笔记
慘綠青年627
论文阅读 笔记 深度学习
SAFEFL:MPC-friendlyFrameworkforPrivateandRobustFederatedLearning适用于私有和鲁棒联邦学习的MPC友好框架SAFEFL,这是一个利用安全多方计算(MPC)来评估联邦学习(FL)技术在防止隐私推断和中毒攻击方面的有效性和性能的框架。概述传统机器学习(ML):集中收集数据->隐私保护问题privacy-preservingML(PPML)采
Hadoop组件
静听山水
Hadoop hadoop
这张图片展示了Hadoop生态系统的一些主要组件。Hadoop是一个开源的大数据处理框架,由Apache基金会维护。以下是每个组件的简短介绍:HBase:一个分布式、面向列的NoSQL数据库,基于GoogleBigTable的设计理念构建。HBase提供了实时读写访问大量结构化和半结构化数据的能力,非常适合大规模数据存储。Pig:一种高级数据流语言和执行引擎,用于编写MapReduce任务。Pig
A Tutorial on Near-Field XL-MIMO Communications Towards 6G【论文阅读笔记】
Cc小跟班
【论文阅读】相关 论文阅读 笔记
此系列是本人阅读论文过程中的简单笔记,比较随意且具有严重的偏向性(偏向自己研究方向和感兴趣的),随缘分享,共同进步~论文主要内容:建立XL-MIMO模型,考虑NUSW信道和非平稳性;基于近场信道模型,分析性能(SNRscalinglaws,波束聚焦、速率、DoF)XL-MIMO设计问题:信道估计、波束码本、波束训练、DAMXL-MIMO信道特性变化:UPW➡NUSW空间平稳–>空间非平稳(可视区域
时序预测相关论文阅读笔记
能力越小责任越小YA
论文阅读 笔记 时序预测 Transformer
笔记链接:【有道云笔记】读论文(记录)https://note.youdao.com/s/52ugLbot用于个人学习记录。
redis学习笔记——不仅仅是存取数据
Everyday都不同
returnSource expire/del incr/lpush 数据库分区 redis
最近项目中用到比较多redis,感觉之前对它一直局限于get/set数据的层面。其实作为一个强大的NoSql数据库产品,如果好好利用它,会带来很多意想不到的效果。(因为我搞java,所以就从jedis的角度来补充一点东西吧。PS:不一定全,只是个人理解,不喜勿喷)
1、关于JedisPool.returnSource(Jedis jeids)
这个方法是从red
SQL性能优化-持续更新中。。。。。。
atongyeye
oracle sql
1 通过ROWID访问表--索引
你可以采用基于ROWID的访问方式情况,提高访问表的效率, , ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高.
2 共享SQL语句--相同的sql放入缓存
3 选择最有效率的表
[JAVA语言]JAVA虚拟机对底层硬件的操控还不完善
comsci
JAVA虚拟机
如果我们用汇编语言编写一个直接读写CPU寄存器的代码段,然后利用这个代码段去控制被操作系统屏蔽的硬件资源,这对于JVM虚拟机显然是不合法的,对操作系统来讲,这样也是不合法的,但是如果是一个工程项目的确需要这样做,合同已经签了,我们又不能够这样做,怎么办呢? 那么一个精通汇编语言的那种X客,是否在这个时候就会发生某种至关重要的作用呢?
&n
lvs- real
男人50
LVS
#!/bin/bash
#
# Script to start LVS DR real server.
# description: LVS DR real server
#
#. /etc/rc.d/init.d/functions
VIP=10.10.6.252
host='/bin/hostname'
case "$1" in
sta
生成公钥和私钥
oloz
DSA 安全加密
package com.msserver.core.util;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
public class SecurityUtil {
UIView 中加入的cocos2d,背景透明
374016526
cocos2d glClearColor
要点是首先pixelFormat:kEAGLColorFormatRGBA8,必须有alpha层才能透明。然后view设置为透明glView.opaque = NO;[director setOpenGLView:glView];[self.viewController.view setBackgroundColor:[UIColor clearColor]];[self.viewControll
mysql常用命令
香水浓
mysql
连接数据库
mysql -u troy -ptroy
备份表
mysqldump -u troy -ptroy mm_database mm_user_tbl > user.sql
恢复表(与恢复数据库命令相同)
mysql -u troy -ptroy mm_database < user.sql
备份数据库
mysqldump -u troy -ptroy
我的架构经验系列文章 - 后端架构 - 系统层面
agevs
JavaScript jquery css html5
系统层面:
高可用性
所谓高可用性也就是通过避免单独故障加上快速故障转移实现一旦某台物理服务器出现故障能实现故障快速恢复。一般来说,可以采用两种方式,如果可以做业务可以做负载均衡则通过负载均衡实现集群,然后针对每一台服务器进行监控,一旦发生故障则从集群中移除;如果业务只能有单点入口那么可以通过实现Standby机加上虚拟IP机制,实现Active机在出现故障之后虚拟IP转移到Standby的快速
利用ant进行远程tomcat部署
aijuans
tomcat
在javaEE项目中,需要将工程部署到远程服务器上,如果部署的频率比较高,手动部署的方式就比较麻烦,可以利用Ant工具实现快捷的部署。这篇博文详细介绍了ant配置的步骤(http://www.cnblogs.com/GloriousOnion/archive/2012/12/18/2822817.html),但是在tomcat7以上不适用,需要修改配置,具体如下:
1.配置tomcat的用户角色
获取复利总收入
baalwolf
获取
public static void main(String args[]){
int money=200;
int year=1;
double rate=0.1;
&
eclipse.ini解释
BigBird2012
eclipse
大多数java开发者使用的都是eclipse,今天感兴趣去eclipse官网搜了一下eclipse.ini的配置,供大家参考,我会把关键的部分给大家用中文解释一下。还是推荐有问题不会直接搜谷歌,看官方文档,这样我们会知道问题的真面目是什么,对问题也有一个全面清晰的认识。
Overview
1、Eclipse.ini的作用
Eclipse startup is controlled by th
AngularJS实现分页功能
bijian1013
JavaScript AngularJS 分页
对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示,同时带有转到上一页和下一页的功能。既然在整个应用中这是一种很常见的需求,那么把这一功能抽象成一个通用的、可复用的分页(Paginator)服务是很有意义的。
&nbs
[Maven学习笔记三]Maven archetype
bit1129
ArcheType
archetype的英文意思是原型,Maven archetype表示创建Maven模块的模版,比如创建web项目,创建Spring项目等等.
mvn archetype提供了一种命令行交互式创建Maven项目或者模块的方式,
mvn archetype
1.在LearnMaven-ch03目录下,执行命令mvn archetype:gener
【Java命令三】jps
bit1129
Java命令
jps很简单,用于显示当前运行的Java进程,也可以连接到远程服务器去查看
[hadoop@hadoop bin]$ jps -help
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:
ZABBIX2.2 2.4 等各版本之间的兼容性
ronin47
zabbix更新很快,从2009年到现在已经更新多个版本,为了使用更多zabbix的新特性,随之而来的便是升级版本,zabbix版本兼容性是必须优先考虑的一点 客户端AGENT兼容
zabbix1.x到zabbix2.x的所有agent都兼容zabbix server2.4:如果你升级zabbix server,客户端是可以不做任何改变,除非你想使用agent的一些新特性。 Zabbix代理(p
unity 3d还是cocos2dx哪个适合游戏?
brotherlamp
unity自学 unity教程 unity视频 unity资料 unity
unity 3d还是cocos2dx哪个适合游戏?
问:unity 3d还是cocos2dx哪个适合游戏?
答:首先目前来看unity视频教程因为是3d引擎,目前对2d支持并不完善,unity 3d 目前做2d普遍两种思路,一种是正交相机,3d画面2d视角,另一种是通过一些插件,动态创建mesh来绘制图形单元目前用的较多的是2d toolkit,ex2d,smooth moves,sm2,
百度笔试题:一个已经排序好的很大的数组,现在给它划分成m段,每段长度不定,段长最长为k,然后段内打乱顺序,请设计一个算法对其进行重新排序
bylijinnan
java 算法 面试 百度 招聘
import java.util.Arrays;
/**
* 最早是在陈利人老师的微博看到这道题:
* #面试题#An array with n elements which is K most sorted,就是每个element的初始位置和它最终的排序后的位置的距离不超过常数K
* 设计一个排序算法。It should be faster than O(n*lgn)。
获取checkbox复选框的值
chiangfai
checkbox
<title>CheckBox</title>
<script type = "text/javascript">
doGetVal: function doGetVal()
{
//var fruitName = document.getElementById("apple").value;//根据
MySQLdb用户指南
chenchao051
mysqldb
原网页被墙,放这里备用。 MySQLdb User's Guide
Contents
Introduction
Installation
_mysql
MySQL C API translation
MySQL C API function mapping
Some _mysql examples
MySQLdb
HIVE 窗口及分析函数
daizj
hive 窗口函数 分析函数
窗口函数应用场景:
(1)用于分区排序
(2)动态Group By
(3)Top N
(4)累计计算
(5)层次查询
一、分析函数
用于等级、百分点、n分片等。
函数 说明
RANK() &nbs
PHP ZipArchive 实现压缩解压Zip文件
dcj3sjt126com
PHP zip
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。
一、解压缩zip文件 01 02 03 04 05 06 07 08 09 10 11
精彩英语贺词
dcj3sjt126com
英语
I'm always here
我会一直在这里支持你
&nb
基于Java注解的Spring的IoC功能
e200702084
java spring bean IOC Office
java模拟post请求
geeksun
java
一般API接收客户端(比如网页、APP或其他应用服务)的请求,但在测试时需要模拟来自外界的请求,经探索,使用HttpComponentshttpClient可模拟Post提交请求。 此处用HttpComponents的httpclient来完成使命。
import org.apache.http.HttpEntity ;
import org.apache.http.HttpRespon
Swift语法之 ---- ?和!区别
hongtoushizi
? swift !
转载自: http://blog.sina.com.cn/s/blog_71715bf80102ux3v.html
Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:
var stringValue : String
//
centos7安装jdk1.7
jisonami
jdk centos
安装JDK1.7
步骤1、解压tar包在当前目录
[root@localhost usr]#tar -xzvf jdk-7u75-linux-x64.tar.gz
步骤2:配置环境变量
在etc/profile文件下添加
export JAVA_HOME=/usr/java/jdk1.7.0_75
export CLASSPATH=/usr/java/jdk1.7.0_75/lib
数据源架构模式之数据映射器
home198979
PHP 架构 数据映射器 datamapper
前面分别介绍了数据源架构模式之表数据入口、数据源架构模式之行和数据入口数据源架构模式之活动记录,相较于这三种数据源架构模式,数据映射器显得更加“高大上”。
一、概念
数据映射器(Data Mapper):在保持对象和数据库(以及映射器本身)彼此独立的情况下,在二者之间移动数据的一个映射器层。概念永远都是抽象的,简单的说,数据映射器就是一个负责将数据映射到对象的类数据。
&nb
在Python中使用MYSQL
pda158
mysql python
缘由 近期在折腾一个小东西须要抓取网上的页面。然后进行解析。将结果放到
数据库中。 了解到
Python在这方面有优势,便选用之。 由于我有台
server上面安装有
mysql,自然使用之。在进行数据库的这个操作过程中遇到了不少问题,这里
记录一下,大家共勉。
python中mysql的调用
百度之后能够通过MySQLdb进行数据库操作。
单例模式
hxl1988_0311
java 单例 设计模式 单件
package com.sosop.designpattern.singleton;
/*
* 单件模式:保证一个类必须只有一个实例,并提供全局的访问点
*
* 所以单例模式必须有私有的构造器,没有私有构造器根本不用谈单件
*
* 必须考虑到并发情况下创建了多个实例对象
* */
/**
* 虽然有锁,但是只在第一次创建对象的时候加锁,并发时不会存在效率
27种迹象显示你应该辞掉程序员的工作
vipshichg
工作
1、你仍然在等待老板在2010年答应的要提拔你的暗示。 2、你的上级近10年没有开发过任何代码。 3、老板假装懂你说的这些技术,但实际上他完全不知道你在说什么。 4、你干完的项目6个月后才部署到现场服务器上。 5、时不时的,老板在检查你刚刚完成的工作时,要求按新想法重新开发。 6、而最终这个软件只有12个用户。 7、时间全浪费在办公室政治中,而不是用在开发好的软件上。 8、部署前5分钟才开始测试。