
S5: 大数据/分布式
涛歌依旧
毕业后就职于华为和腾讯
展开
-
一网打尽海量数据面试问题
周末,深圳,又是大雨。今天来聊海量数据。 海量数据,是BAT笔试面试中的常客,TMD也纷纷效仿,其余公司也紧随其后。在实际工作中,也确实会涉及到类似问题。 海量数据,从时间上讲,难以快速处理。从空间上讲,难以一次加载到内存。针对海量数据,我们需要对时间和空间进行预估,而不是一根筋蛮力处理。 海量数据处理的常见思路如下: 1. 哈希分治,重新分类 2. hash ma...原创 2020-11-07 10:42:45 · 2517 阅读 · 2 评论 -
笔试面试题目:求海量数据的中位数
中位数,也就是排序后位置在中间的数。中位数是笔试面试中的常客,在N年前T公司的实习生招聘和校园招聘中,两次遇到了这个问题。如果是求海量数据的中位数,那就不太好用上述方法了,因为没法把大文件中的海量数据加载到内存中。那该怎么办呢?原创 2020-10-04 19:44:58 · 4109 阅读 · 9 评论 -
etcd锁释放超时导致的数据不一致性
服务端代码: func proc() { begin lock begin transaction amount := queryAmountFromDb() amount += req.OrderAmount setToDb(amount) end transaction // 正...原创 2019-11-09 21:24:10 · 3050 阅读 · 7 评论 -
hbase shell基本操作简介
之前介绍了hbase的安装, 现在来简介下hbase的基本操作: 1. 启动hbasestart-hbase.sh 启动后, 可以在页面http://ip:16010上看到hbase的相关信息, 其中ip就是安装hbase的机器的ip 2. 停止hbasestop-hbase.sh 3. 进入hbase shellhbase shell ...原创 2018-03-01 22:08:06 · 5465 阅读 · 2 评论 -
用mysql实现分布式锁
考虑这样一个场景: 多台机器同时执行某一任务,要求某一时刻最多只有一台机器执行, 该怎么搞呢? 可以考虑分布式锁。 思路:在mysql中插入一条记录,表明获取锁。删除一条记录,表明释放锁。 且在mysql表中设置一个unique key字段, 当有一台机器获得锁后, 其他机器无法获取。 有几个问题: 1. 如...原创 2018-12-01 22:32:11 · 8286 阅读 · 13 评论 -
分布式锁引起的消息重复问题
前段时间, 某同事查一个问题, 发现消息重复了, 他查了一下, 最后定位到的问题是锁的问题。 最近,我和同事遇到了一个类似的问题, 用mysql的unique key来实现分布式锁(这一点我在之前博文说过), 代码没有任何问题, 但是消息还是重复发了, 定位了一下, 发现是因为mysql表没有加unique key, 导致多台机器抢锁成功, 消息重发了。 ...原创 2019-03-23 09:04:50 · 2649 阅读 · 2 评论 -
一个与mysql unique key相关的问题
xxx_tab的user_id是unique key, 来看看伪代码:get user_id=10000 from xxx_tab;if exist { return ok}ret = insert user_id=10000if ret ok { return ok}return not_ok 问题: 为什么最后结果是n...原创 2019-03-29 20:48:20 · 2584 阅读 · 1 评论 -
最近遇到的两个奇葩bug
之前在线上环境遇到过两台机器相互影响, 导致分布式锁出了问题, 后来修复了分布式锁的bug. 然而,近期在test环境又遇到锁的问题。不可能啊,test环境只有一台机器,怎可能有分布式的影响呢? 后来才查到,原来, 别的同事在test环境的同一台机器上开了另外一个进程, 相当于还是两个进程相互影响了。可是, 这并不可能啊, 两个进程抢锁的问题已经修复了啊,怎么回事?...原创 2019-04-19 19:05:35 · 2758 阅读 · 3 评论 -
再遇幂等性
用户确认收货, 逻辑涉及到如下步骤:func confirm_order() { err := update_system1() if err != nil { return } err = update_system2() if err != nil { return } call_other_system()} 实际发现, up...原创 2019-06-02 12:04:26 · 2335 阅读 · 2 评论 -
利用“异步确保模式”实现最终一致性
很多时候, 有这样一种场景: A系统需要把信息通知给B系统(例如支付系统中的入账操作), 需要保证通知消息一定成功, 且相对均匀地推, 怎么搞呢? 异步重试法就可以轻松搞定, 实现起来很简单, 关键是思路: 不多说。...原创 2019-07-13 17:34:35 · 3064 阅读 · 4 评论 -
mysql分布式锁的坑------ 墨菲定律:有可能出错的事情,终将出错
用mysql唯一key做分布式锁, 虽然简单, 但坑太多, 来看看: 1. 在高并发场景下, 用mysql做分布式锁, 简直是想找死。 这种问题, 不要选mysql分布式锁, 别作死。 2. 业务准备释放锁的时候, 进程被正常重启了, 或者异常崩溃了,或者掉电了, 锁永远无法释放。 这个坑, 踩过。 四个人, 通宵修数据, 呵呵哒。 墨菲...原创 2019-09-01 22:26:35 · 3417 阅读 · 4 评论 -
linux环境安装hbase------不一定需要hadoop
hbase是分布式的,面向列(族)的数据库, 很常用, 网上介绍一大堆。本文说说在linux环境中安装hbase. 一般来说,都是需要先安装hadoop, 再安装hbase. 但是, 为了简便起见, 也可以先不管hadoop, 先聚焦于hbase, 照样可以玩hbase. 0. 老生常谈安装jdk, 路径为: /usr/lib/jvm/java-8-openjdk-amd...原创 2018-03-01 21:46:02 · 15347 阅读 · 8 评论 -
linux环境安装单机版spark------不一定需要hadoop
大数据持续升温, 不熟悉几个大数据组件, 连装逼的口头禅都没有。 最起码, 你要会说个hadoop, hdfs, mapreduce, yarn, kafka, spark, zookeeper, neo4j吧, 这些都是装逼的必备技能。 关于spark的详细介绍, 网上一大堆, 搜搜便是, 下面, 我们来说单机版的spark的安装和简要使用。 0. 安装j...原创 2018-02-02 20:50:14 · 16783 阅读 · 4 评论 -
扯淡冷热数据------顺便谈谈高效阶乘
什么叫热数据呢? 热数据就是经常访问的数据。在学生时代, 每次考试, 我们都需要记住大量的公式, 而为什么不每次考试的时候去现场推导公式呢? 因为耗时。 在这个例子中, 公式就是热数据, 直接获取热数据, 可以省很多时间。 人人皆知。然而, 人的记忆能力和精力毕竟是有限的, 对于一些偏门的、万年碰一次的冷门公式, 其实是不必要记忆的, 万一遇到, 会推导即可, 这种数据就是冷数据。原创 2016-05-21 00:03:30 · 8824 阅读 · 4 评论 -
linux中split命令的重要用途------文件分割
最近准备写个文件分割的工具, 跟同事交流后, 发现linux早已提供了这个命令,来一起看下:taoge@localhost Desktop> lsa.txttaoge@localhost Desktop> cat a.txt 357666131735773521993577724088357836738135785878693579287088358112755835820原创 2016-12-24 08:24:33 · 8827 阅读 · 0 评论 -
满大街都是这种烂题目------从100亿个整数中找出最大的1000个整数
不得不说, 这年头, 满大街都是类似这种烂题目------从100亿个整数中找出最大的1000个整数。 注意点: 内存装不下, 不能一次读到内存。 思路: 随便抽出1000个数, 假设他们是最大的1000个, 然后把剩余的数往其中加, 接着在这1001个数据中淘汰最小的, 再次剩余1000个。 如此循环, 直到最后, 肯定剩下1000个, 也就是最大的1000个。原创 2017-09-02 11:02:35 · 9188 阅读 · 8 评论 -
深度剖析hdfs原理
转载地址:http://www.cnblogs.com/tgzhu/p/5788634.html 在配置hbase集群将 hdfs 挂接到其它镜像盘时,有不少困惑的地方,结合以前的资料再次学习; 大数据底层技术的三大基石起源于Google在2006年之前的三篇论文GFS、Map-Reduce、 Bigtable,其中GFS、Map-Reduce技术直接支转载 2017-07-01 16:07:29 · 8849 阅读 · 0 评论 -
MapReduce原理与设计思想
转载地址:http://blog.jobbole.com/80619/简单解释 MapReduce 算法一个有趣的例子你想数出一摞牌中有多少张黑桃。直观方式是一张一张检查并且数出有多少张是黑桃?MapReduce方法则是:给在座的所有玩家中分配这摞牌让每个玩家数自己手中的牌有几张是黑桃,然后把这个数目汇报给你你把所有玩家告诉你转载 2017-07-01 16:04:26 · 11605 阅读 · 1 评论 -
《Hadoop基础教程》之初识Hadoop
转载地址:http://blessht.iteye.com/blog/2095675 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身。 《Hadoop基础教程》是我读的第一本Hadoop书籍,当然在线只能试读第一章,不过对Hadoop历转载 2017-11-25 15:30:19 · 7287 阅读 · 4 评论 -
《智能时代》吴军
这是一本非常好的书, 值得读一读。 很早很早以前, 我就在思考并认同这样一个道理: 世界是确定的,遵循牛顿定律。 后来学到概率论和信息论, 我是有些反感的, 觉得这是不确定的玄乎东西, 没有数学依据, 后来看到了概率的公理化定义和香农对信息的定义, 才对概率论和信息论产生了敬畏。 后来, 又听过了测不准原理和量子力学, 才意识到, 世界中真的有不确定的东西(1. 比如测不准原理揭示的原创 2018-01-13 15:46:56 · 8797 阅读 · 2 评论 -
集群(cluster)和distributed(分布式)有什么区别?
很多人以为, 把多个计算机堆积在一起,就成了集群。 在很多场合, 你会看到分布式集群这样的字眼, 其实, 这是不太准确的。集群和分布式还是有差别的, 鉴于是舶来品,搜cluster和distributed两个字的具体含义, 会有更加清晰的答案。 集群: 众多相同的业务,部署在众多不同机器上, 分别执行。 这些众多机器之间,不需要沟通配合。 分布式:同一个业务,拆分原创 2018-01-23 20:28:00 · 12203 阅读 · 5 评论 -
浅谈分布式数据库
首先来看图: 这就是一个分布式数据库, 数据是存在于各地的, 在物理上分离, 但在逻辑上, 他们是一个整体, 整体对外具有透明性,也就是说, 使用这个分布式数据库的人根本就不知道这个数据库是分布式的还是非分布式的, 也不需要了解。 跟传统的单机集中式数据库相比, 有什么优点呢? 很容易总结出来, 我不必啰嗦。 这里有个疑问, 数据是分布存储的, 那原创 2018-01-24 21:31:26 · 7183 阅读 · 3 评论 -
大数据组件图谱---比较齐全
转载地址:http://blog.youkuaiyun.com/u010039929/article/details/70157376大数据组件图谱文件系统数据存储内存技术数据搜集消息系统数据处理查询引擎分析和报告工具调度与管理服务机器学习开发平台文件系统HDFSHadoop Distributed File S转载 2018-02-01 20:01:44 · 43982 阅读 · 4 评论 -
linux环境搭建图数据库neo4j
Neo4j(Nosql之一)是一个高性能的图数据库(不支持分布式), 在社交关系中经常用到。关于Neo4j的介绍,网上多的是, 故不再赘述。来简要说说安装: 1. 安装jdk, 不多说:ubuntu@VM-0-15-ubuntu:~$ java -versionopenjdk version "1.8.0_151"OpenJDK Runtime Environme原创 2018-02-02 19:25:22 · 8001 阅读 · 1 评论