Set block size
Add property
Default blocksize is 128m, minimal blocksize is 1m.
Edit hdfs-site.xml, add propertydfs.blocksize
.12345678<property><name>dsf.blocksize</name><value>2k</value></property><property><name>dfs.namenode.fs-limits.min-block-size</name><value>1024</value></property>Note: Too small blocksize can degrade performance.
Check
1$> hdfs getconf -confKey dfs.blocksize // show blocksize.Restart hadoop and put file
123$> stop-dfs.sh$> start-dfs.sh$> hdfs dfs -put a.txtPut file by Hadoop API
1234567891011121314151617public void putFileWithBlocksize() {Configuration conf = new Configuration();conf.set("fs.defaultFS", "hdfs://192.168.137.201:8020/");try {FileSystem fs = FileSystem.get(conf);FSDataOutputStream fsdo = fs.create(new Path("/usr/win7admin/blocksize.txt"),true, 1024, (short)2, 1024); // replication: 2; block size: 1024.FileInputStream fis = new FileInputStream("D:/HexoSourceCode/source/_posts/new1.md");IOUtils.copyBytes(fis, fsdo, 1024);fis.close();fsdo.close();System.out.println("over!");} catch (Exception e) {e.printStackTrace();}}
Writting process
- Concept
- Packet
64k - chunk
Checksum each chunk
512 bytes
- Packet