hadoop笔记 基础 归档

核心:分布式存储和分布式计算

闲话:

底层基于socket通信

NIO——java异步io,不阻塞,不等待

bt——p2p软件(点对点传输,每个人既是上传者又是下载者。但是会占用大量网络带宽,所以很多运营商通过在交换机上封杀bt端口的方式来遏制bt软件占用流量)

关键:压缩算法

1、归档

很小的文件压缩后反而会变大。

但是如果有成千上万很小的文件,我们要对其进行压缩的话,就需要先归档

hadoop归档命令:har (har、tar、jar、war等表示压缩的文件,都以ar结尾,因为ar表示archives,归档)

大量很小的文件不能用hdfs存,因为大量小文件的文件名等文件信息会将hadoop 0层节点的内存全部耗光,而0层节点一般是master节点,内存耗光就会导致整个集群性能下降

归档算法:

多个小文件》》一个大文件

首先是四个字节,表示一个整数,代表文件名所占字节数;然后是对应字节数的文件名。

然后是四个字节,表示一个整数,代表文件内容所占字节数;然后对应字节数的文件内容。

如此循环往复。

然后就牵扯到字节数组byte[]和整数int相互转换的问题:

    /**
     * 整型转换成字节数组
     */
    public byte[] int2Bytes(int i){
        byte[] arr = new byte[4] ;
        arr[0] = (byte)i ;
        arr[1] = (byte)(i >> 8) ;
        arr[2] = (byte)(i >> 16) ;
        arr[3] = (byte)(i >> 24) ;
        return arr ;
    }
    
    /**
     * 字节数组转成int
     */
    public int bytes2Int(byte[] bytes){
        int i0= bytes[0] & 0xFF  ;
        int i1 = (bytes[1] & 0xFF) << 8 ;
        int i2 = (bytes[2] & 0xFF) << 16 ;
        int i3 = (bytes[3] & 0xFF) << 24 ;
        return i0 | i1 | i2 | i3 ;
    }
    
原文地址:https://www.cnblogs.com/zealousness/p/9320920.html