随笔分类 - HDFS
摘要:HDFS Append时packet的格式以及DataNode对block/checksum文件的处理HDFS的Block一般比较大,默认64MB/128MB,客户端给DataNode发数据实际上是以Packet的形式发送的,Packet一般只有64KB左右。Packet内部由分为一个个chunk,...
阅读全文
摘要:[HDFS-RAID](https://github.com/facebookarchive/hadoop-20/tree/master/src/contrib/raid) 是Facebook基于hadoop-20-append分支(第一代Hadoop)开发的raid方案,对HDFS的修改极少,主要...
阅读全文
摘要:最近迁移数据时需要执行大Scan,HBase集群经常碰到以下日志:```Exception in thread "main" org.apache.hadoop.hbase.DoNotRetryIOException: Failed after retry of OutOfOrderScannerN...
阅读全文
摘要:####存储选型Blob(binary large object)存储系统主要用来存储二进制的大对象,比如图片,视频。这样的数据不太适合存储在类LSM系统例如HBase中,原因在于这种数据尺寸相对较大,写入RegionServer的memstore后很快会触发region的flush,在磁盘上形成大...
阅读全文
摘要:HDFS目前存储文件的方案是将一个文件切分成多个Block进行存储,通常一个Block 64MB或者128MB,每个Block有多个副本(replica),每个副本作为一个整体存储在一个DataNode上,这种方法在增加可用性的同时也增加了存储成本。ErasureCode通过将M个数据block进行...
阅读全文
摘要:这篇分析一下Lease Recovery 和 Block Recoveryhdfs支持hflush后,需要保证hflush的数据被读到,datanode重启不能简单的丢弃文件的最后一个block,而是需要保留下hflush的数据。同时为了支持append,需要将已经finalized的block重新...
阅读全文
摘要:这篇分析一下namenode 写edit log的过程。关于namenode日志,集群做了如下配置``` dfs.nameservices sync Logical name for this new nameservice dfs.namenode.name.d...
阅读全文
摘要:HDFS的hflush,hsync和close有啥区别,分别做了什么hflush: 语义是保证flush的数据被新的reader读到,但是不保证数据被datanode持久化.hsync: 与hflush几乎一样,不同的是hsync保证数据被datanode持久化。close: 关闭文件.除了做到以上...
阅读全文
摘要:[上一篇](http://www.cnblogs.com/foxmailed/p/4137949.html)说了datanode端如何处理pipeline写请求的,这里主要看DFSClient。这里以append为例, write差不多。创建一个pipeline用于append操作的流程:FileS...
阅读全文
摘要:站在DataNode的视角,看看pipeline写的流程,本文不分析客户端部分,从客户端写数据之前拿到了3个可写的block位置说起。每个datanode会创建一个线程DataXceiverServer,接收上游过来的TCP连接,对于每个新建的TCP连接,都会创建一个叫做DataXceiver的线程...
阅读全文