HADOOP之HDFS 的数据管理与策略选择----HDFS 缓存与缓存块(1)

HDFS 缓存与缓存块

      HDFS缓存用的是缓存块,HDFS缓存块用的是普通的文件块转换而来,也可以转换回去。缓存使用的是DataNode内存作为缓存。

     本节以疑问点的形式分析缓存块:

  1. 物理层面缓存块是怎样的?
  2. 缓存块的生命周期状态有哪几种?
  3. 哪些情况会触发缓存块、取消缓存块的操作?
  4. CacheBlock UnCacheBlock 缓存块如何确定?
  5. 系统所持有的缓存块列表如何更新?
  6. 缓存块如何被使用?

 

1.HDFS 物理层面缓存块

利用mmap、mlock系统调用将块数据锁入内存。

mmap是将一个文件或其他对象映射进内存。代码实现如下:

// 加载并映射块到内存,然后检查其checksum
public static MappableBlock load(long length,
		FileInputStream blockIn, FileInputStream metaIn,
		String blockFileName) throws IOException {
	MappableBlock mappableBlock = null;
	MappedByteBuffer mmap = null;
	FileChannel blockChannel = null;
	try {
		//获取块数据的FileChannel对象
		blockChannel = blockIn.getChannel();
		if(blockChannel == null) {
			throw new IOException("Block InputStream has no FileChannel.");
		}
		//这里开始进行内存的映射操作
		mmap = blockChannel.map(MapMode.READ_ONLY, 0, length);
		NativeIO.POSIX.getCacheManipul
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值