大数据学习之BigData常用算法和数据结构

1.Bloom Filter

由一个很长的二进制向量和一系列hash函数组成

优点:可以减少IO操作,省空间

缺点:不支持删除,有误判

如果要支持删除操作: 改成计数布隆过滤器

2.SkipList(跳表)

核心思路: 由多层组成,每层都是一个有序链表,最底层包含所有元素,元素数逐层递减。每个节点包含两个指针,一个->,一个向下。

并行编程情况下可以用锁或者CAS操作。

CAS:

compare and swap,解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在CAS指令之前返回该位置的值。CAS有效地说明了“我认为位置V应该包含值A;如果包含该值,则将B放到这个位置;否则,不要更改该位置,只告诉我这个位置现在的值即可。

用CAS实现的插入:

void insert(Node *prev, Node *node) {
	while (true) {
		node->next = prev->next;
		if (__sync_compare_and_swap(&prev->next, node->next, node)) {
			return;
		}
	}
}

3.LSM树(Log-Structured Merge-Tree)

与B+树相比,牺牲部分读性能,大幅提高写性能。

宗旨:把大量随机写改为批量序列写。

在内存中维护多个小的有序结构,在查找时要二分遍历这些结构,不断把小树合并为大树,进行批量插入。

为了优化查找,可以使用Bloom Filter。(判断小结构中有没有目标数据)

4.HashTree

用于快速定位海量数据中少量变化的内容

对每一项数据进行Hash,多项组合之后再Hash,再Hash,最后到Top Hash。

5.Cuckoo哈希

使用两个哈希函数H1(X)和H2(X),插入X时,同时计算H1(X)和H2(X),如果任意一个桶为空,将X插入相应位置,如果都满了,选一个桶把y踢掉,放入X,对y执行上述过程。设定最大替换次数,达到次数时增大桶的数量或者重选Hash函数。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-11 03:25:35

大数据学习之BigData常用算法和数据结构的相关文章

大数据学习之五——HDFS常用命令

HDFS文件操作常用命令: (1)列出HDFS下的文件 hadoop  dfs  -ls  <目录> (2)上传文件 将Linux系统本地文件上传到HDFS中 hadoop  dfs  -put  <本地文件>  <HDFS文件> (3)下载文件 将HDFS 中的文件下载到Linux系统本地目录 hadoop   dfs  -get  <HDFS文件>  <本地文件> (4)查看文件 hadoop  dfs  -cat  <HDFS文件&g

大数据学习一般都学什么

大数据已经成为发展的趋势,大数据的培训学习也就应运而生,可是大数据具体学习什么内容呢,众说纷纭: 那么大数据学习到底应该掌握哪些知识呢,笔者根据自己的经验总结如下: 学习要根据自身情况来定,如果你是零基础,那就必须先从基础java开始学起(大数据支持很多开发语言,但企业用的最多的还是JAVA),接下来学习数据结构.linux系统操作.关系型数据库,夯实基础之后,再进入大数据的学习,具体可以按照如下体系: 第一阶段 CORE JAVA (加**的需重点熟练掌握,其他掌握) Java基础** 数据类

史上最全“大数据”学习资源整理

史上最全"大数据"学习资源整理 当前,整个互联网正在从IT时代向DT时代演进,大数据技术也正在助力企业和公众敲开DT世界大门.当今"大数据"一词的重点其实已经不仅在于数据规模的定义,它更代表着信息技术发展进入了一个新的时代,代表着爆炸性的数据信息给传统的计算技术和信息技术带来的技术挑战和困难,代表着大数据处理所需的新的技术和方法,也代表着大数据分析和应用所带来的新发明.新服务和新的发展机遇. 为了帮助大家更好深入了解大数据,云栖社区组织翻译了GitHub Aweso

大数据学习方向,从入门到精通

推荐一个大数据学习群 119599574晚上20:10都有一节[免费的]大数据直播课程,专注大数据分析方法,大数据编程,大数据仓库,大数据案例,人工智能,数据挖掘都是纯干货分享,你愿意来学习吗 很多初学者在萌生向大数据方向发展的想法之后,不免产生一些疑问,应该怎样入门?应该学习哪些技术?学习路线又是什么? 所有萌生入行的想法与想要学习Java的同学的初衷是一样的.岗位非常火,就业薪资比较高,,前景非常可观.基本都是这个原因而向往大数据,但是对大数据却不甚了解. 如果你想学习,那么首先你需要学会编

大数据学习路线(自己制定,从零开始)

大数据已经火了很久了,一直想了解它学习它结果没时间,了解了一些资料,结合我自己的情况,整理了一个学习路线,. 学习路线 Linux(shell,高并发架构,lucene,solr) Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume) 机器学习(R,mahout) Storm(Storm,kafka,redis) Spark(scala,spark,spark core,spark sql,spark stream

大数据学习路径

大数据学习路径我vx ①⑤零零③④③⑥⑨③① 备注 A 更多大数据第一阶段linux+搜索+hadoop体系 Linux基础→shell编程→高并发架构→lucene,solr搜索→hadoop体系→HDFS→mapreduce→hbase→zookeeper→hive→flume→sqoop→项目实战一 第二阶段机器学习 R语言→mahout→项目实战二 第三阶段storm流式计算 kafka→storm→redis→项目实战三 第四阶段spark内存计算 scala编程→spark core

大数据学习路线整理

一.大数据技术基础 1.linux操作基础 linux系统简介与安装    linux常用命令–文件操作    linux常用命令–用户管理与权限    linux常用命令–系统管理    linux常用命令–免密登陆配置与网络管理    linux上常用软件安装    linux本地yum源配置及yum软件安装    linux防火墙配置    linux高级文本处理命令cut.sed.awk    linux定时任务crontab 2.shell编程 shell编程–基本语法    shel

2019大数据学习方向【最新分享】

一.大数据运维之Linux基础打好Linux基础,以便更好地学习Hadoop,hbase,NoSQL,Spark,Storm,docker,openstack等.因为企业中的项目基本上都是使用Linux环境下搭建或部署的. 1)Linux系统概述2)系统安装及相关配置?3)Linux网络基础?4)OpenSSH实现网络安全连接?5)vi文本编辑器 6)用户和用户组管理7)磁盘管理?8)Linux文件和目录管理?9)Linux终端常用命令?10)linux系统监测与维护 二.大数据开发核心技术 -

零基础大数据学习框架

大数据开发最核心的课程就是Hadoop框架,几乎可以说Hadoop就是大数据开发.这个框架就类似于Java应用开发的SSH/SSM框架,都是Apache基金会或者其他Java开源社区团体的能人牛人开发的贡献给大家使用的一种开源Java框架.科多大数据大数据来带你看看. Java语言是王道就是这个道理,Java的核心代码是开源的,是经过全球能人牛人共同学习共同研发共同检验的,所以说Java是最经得住检验的语言,而且任何人都可以学习Java核心技术并且使用核心技术开发出像android一样的系统和H