AlstonWilliams's Blog

Thinking will not overcome fear but action will.

Hadoop-2-6-0的Web-UI无法看到应用执行的历史信息

环境 Hadoop 2.6.0 Java 1.8.0_151 Ubuntu 16.04 解决方案 开始在配置Hadoop时,由于是按照官网配置的非常简洁版的伪分布式版本,缺少了某些选项,才会造成这个问题。 开始时,我的mapred-site.xml的配置如下: <?xml version="1.0"?> <?xml-stylesheet type="...

HDFS源码解析(5)-replication

replication在HDFS中的地位极高,很多地方都用到了它。比如我们前面介绍的lease recovery,以及你通过hdfs dfs -setrep -R 命令设置的replica数量,等等很多场景。 在这篇文章中,我们会介绍,NameNode如何指示DataNode进行replication。 我们先来看一幅流程图: NameNode中有一个专门的线程,在BlockMana...

HDFS源码解析(4)-DataNode删除过期block

在上篇文章中,我们最后抛出一个问题,即DataNode怎么知道那些block是corrupt的,或者是过期的,并删除它。 在这篇文章中,会介绍这个过程,其实很简单: 就是DataNode进行block report,然后NameNode检查是否有corrupt或者invalidate的block,如果有,就给DataNode发送一个BlockCommand.INVALIDATE Co...

HDFS源码解析(3)-lease-recovery

Lease recovery指的是,当一个文件超过一个时间段,没有Client和它交互,自动关闭这个文件的过程。 一般出现这种情况是由于Client中间连接失败。 处理lease recovery,需要NameNode和DataNode这两端共同的努力。 我们在前面的heartbeat那节,说明了NameNode会在处理heartbeat的时候,如果需要lease recovery,就...

HDFS源码解析(2)-block-report

除了heartbeat,block report应该说是HDFS中另一个最重要的RPC。 DataNode通过block report告诉NameNode,它都有哪些block,然后NameNode根据block report来确定一个DataNode上哪些block是无效的,哪些应该被删除,以及哪个block应该被replicate到其他的机器上,以及如何进行replicate。 在这...

HDFS源码解析(1)-heartbeat

heartbeat是HDFS中最重要的RPC中的一个,DataNode通过heartbeat告诉NameNode的关于DataNode的存活状态,以及DataNode的一些信息,比如,有多少可用存储空间。 然后,NameNode会给DataNode发送一些Command,基于NameNode上为各个NameNode维护的一些信息,比如有哪些block要被删除等。 大致上NameNode和...

HBase本地安装Snappy

笔者最近要调试一个线上的HBase bug,所以需要做到本地配置等跟线上完全一样。其它的都还好说,但是到了Snappy这儿却碰了一鼻子灰。 所以,在这篇文章,我会介绍如何在本地,安装Snappy,并配置HBase使用它。 环境 HBase cdh5-1.2.0_5.12.1 环境特别重要。它直接关系到需要使用的Snappy以及Hadoop的版本。如果版本对不上,很可能出现链接本地动态...

HBase启动时,报错--java-lang-UnsatisfiedLinkError--org-apache-hadoop-hbase-s

今天,在打算启动HBase,打断点调试的时候,遇到了这么一个错误: 017-08-14 16:19:10,522 ERROR [main] hbase.MiniHBaseCluster(230): Error starting cluster java.lang.RuntimeException: Failed construction of Master: class org.apache...

HBase-PrefixTree以及64KB的BLOCKSIZE导致Get阻塞的问题

笔者所在的公司,最近遇到了一个非常诡异的问题-我们在执行Get操作时,发现迟迟不能返回,等了好久都超时了。而此时超时时间我们实际上已经设置成了20分钟。 另一个诡异的问题是,我们发现,当去那些超时的RegionServer上看时,发现它们的CPU负载都很高。 环境 cdh5-1.2.0_1.12.1 代码可以从Github上下载下来,注意切换到对应的分支。 准备 首先介绍一下我们...

HBase-HFile解析(转)

笔者的HBase最近出了点问题,当执行bulk load以后,再执行Get操作,会导致RegionServer陷入一个死循环中,跳不出来.进一步导致RegionServer负载过高,以及此HStore接下来的bulk load以及Compaction操作都会被卡住.因为它们都会请求同一个锁. 而死循环的部分,刚好就是读HFile的部分,所以笔者研究了一下HFile的格式.而看官方文档的时候...