之前简单总结过YARN和HDFS的调用方式汇总,这里针对访问HDFS的方式作更深入的介绍。
命令行访问
hadoop fs -cat /user/hdfs/test_hadoop/data-256M-alone
采用上述命令查看文件时,依据hadoop的文件访问策略,hadoop会将距离该节点最近的备份传输过来。若上述文件的其中一个备份存在dn6上,在dn5上运行如上命令,则dn5和dn6的网络IO会增高,同时dn5的硬盘IO会增大,如下所示:
注意:若使用命令hadoop fs -ls /hdfs/test_hadoop/data-256M-alone | less
查看文件,则此时datanode的运行情形与hue中查看文件的原理类似,见下一小节。唯一的不同点:一旦退出查看(:q),后台传输数据的进程立即停止。
Web访问–HUE
以在HUE中查看文件data-256M-alone
为例,总结“HUE中文件访问的处理策略”和“HUE中查看文件时背后的处理流程”。
HUE中文件访问的处理策略:
在Web端查看文件时,HUE并不会请求该文件的所有数据,而是默认只请求该文件第一个块的第一页。如下所示。当用户选择查看其它页时,HUE重新发送传输该页数据的请求。比如,查看第二页时,请求链变为
http://lyhadoop5.haohandata.com:8888/filebrowser/view//user/hdfs/test_hadoop/data-256M-alone#p2
,参数p2
表示第二页。
HUE中查看文件时背后的处理流程:
- lyhadoop6(data-256M-alone存储在该节点)中有一部分线程专门负责文件的传输,这些线程总是处于打开状态,暂且将这些线程称为“基本线程”。
在HUE中打开文件后,lyhadoop会新增一个线程,和“基本线程”一起来处理数据的传输。处理过程如下:
“基本线程”和新增线程共同传输数据
新增线程关闭, “基本线程”继续传输数据
“基本线程”停止数据传输,但并不会关闭
注:使用命令
lsof | grep blk
查看数据是否在传输,ls /proc/16756/task
查看hdoop处理文件传输的所有线程
Web访问–HDFS的REST API
HDFS的REST分为两种,见关于WebHDFS与HttpFS。