HDFS
读流程
filesystem类是一个抽象类,其实现类是distributedfilesystem,打开文件时调用其open方法,DFSclient通过rpc协议获取namenode的代理对象,得到块的信息,返回FSdatainputstream对象,通过其read方法连接到datanode读取数据,数据读取完毕时关闭FSdatainputstream。
写流程
写入文件时调用create方法,DFSclient通过rpc协议获取namenode的代理对象,创建块的信息,返回FSdataoutputstream对象,通过其write方法将数据分成数据包并写入datanode的pipeline,数据从一个datanode传输到另一个,当数据写入完成后返回确认信息,然后进行下一个块的写入,所有数据写入完成后关闭FSdataoutputstream。
MR
shuffle原理、优化
优化环形内存缓冲区大小、阈值、排序文件时的个数(减少对磁盘的读写)、reduce端并行拷贝的数量。
map、reduce数目
map数目由inputsplit的数目决定,在getinputsplit中会以默认的块大小128m对文件进行逻辑分割,产生一个个的inputsplit,可以通过修改splitsize控制产生的数目,可以通过FileInputFormat.setMinInputSplitSize或者FileInputFormat.setMaxInputSplitSize来设置。
reduce数目由分区数确定,默认为一个分区,当需要多个分区时,可以设置setNumReduceTasks,并重写getPartition方法。
yarn
job提交过程