hadoop处理大数据的意义(大数据之-Hadoop之HDFS读数据流程)
hadoop处理大数据的意义(大数据之-Hadoop之HDFS读数据流程)1.首先客户端HDFS Client 会创建一个Distributed FileSystem 这个对象 来做为hdfs的客户端 然后这个客户端Distributed FileSystem 会发送一个请求给namenode然后我们再去看文件下载的过程3.然后namenode上面记录的这个文件的blk_1这个块 可以看到记录了他存在了datanode1上面一份具体的块的数据 在datanode2上面存了一份具体的块的数据 在datanode3上面存了一份具体的块的数据4.然后同样namenode上面记录的这个文件的blk_2这个块 可以看到记录了他存在了datanode1上面一份具体的块的数据 在datanode2上面存了一份具体的块的数据 在datanode3上面存了一份具体的块的数据
然后我们再来看下 这个客户端去从hadoop的hdfs上面读取数据的一个过程.
1.首先我们先看一下hadoop是怎么来存数据的.
2.首先对于namenode节点来说 我们说他存了元数据 比如他这里存了一个/usr/atguigu/ss.avi这个文件 注意他仅仅是存了一个元数据 比如名字 路径.
然后namenode还存了 比如我这个文件有两个block块 比如是blk_1 和blk_2 这两个块.然后为了安全起见 这个namenode也会把这两个块信息 存3个副本放起来.
3.然后namenode上面记录的这个文件的blk_1这个块 可以看到记录了他存在了datanode1上面一份具体的块的数据 在datanode2上面存了一份具体的块的数据 在datanode3上面存了一份具体的块的数据
4.然后同样namenode上面记录的这个文件的blk_2这个块 可以看到记录了他存在了datanode1上面一份具体的块的数据 在datanode2上面存了一份具体的块的数据 在datanode3上面存了一份具体的块的数据
然后我们再去看文件下载的过程
1.首先客户端HDFS Client 会创建一个Distributed FileSystem 这个对象 来做为hdfs的客户端 然后这个客户端Distributed FileSystem 会发送一个请求给namenode
这个请求中 包含了我要下载哪个文件
2.然后namenode收到请求以后 会返回给客户端 要下载的文件的路径 以及这个文件在哪个datanode上存放着呢
这个时候namenode会根据 机器离客户端的距离优先 然后再考虑机器的负载 把一个带有这个文件的 并且离客户端最近 并且负载最小的一个datanode返回过去.
3.然后客户端收到namenode返回的文件的元数据以后 然后创建一个FSDataInputStream 一个文件输入流 客户端发送读取请求给datanode1 比如datanode1是
namenode返回给客户端的读取第一个blk_1块的datanode服务器 然后去请求读取 namenode返回的那个比如blk_1这个块的数据
4.然后开始第一个blk_1块的数据传输.
5.客户端读取blk_1这个块的数据以后 然后再去读取blk_2这个块的数据去.
6.然后再去传输blk_2块的数据内容去.
然后传输完所有的块数据 这个文件就下载完了.