Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 猪拉丁语问题_Hadoop_Apache Pig - Fatal编程技术网

Hadoop 猪拉丁语问题

Hadoop 猪拉丁语问题,hadoop,apache-pig,Hadoop,Apache Pig,我的猪正在MapReduce模式下运行。现在我正在做一个连接操作。HDFS中有三个文件复制,如何知道清管器从哪个DataNode加载数据 我试着用explain来显示计划。 但它只显示数据是从hdfs://masterNodeIP:8020/data 这是否意味着所需的所有数据文件都是从该主节点加载的?打开MapReduce管理web ui(通常)并找到作业(您可以通过id识别它,然后记录它)。打开它,您将看到一组映射任务,每个任务分配给集群中的特定节点)。每个映射任务对应一个HDFS块。Map

我的猪正在MapReduce模式下运行。现在我正在做一个连接操作。HDFS中有三个文件复制,如何知道清管器从哪个DataNode加载数据

我试着用explain来显示计划。 但它只显示数据是从hdfs://masterNodeIP:8020/data
这是否意味着所需的所有数据文件都是从该主节点加载的?

打开MapReduce管理web ui(通常)并找到作业(您可以通过id识别它,然后记录它)。打开它,您将看到一组映射任务,每个任务分配给集群中的特定节点)。每个映射任务对应一个HDFS块。MapReduce总是尝试将任务执行与存储相应块的节点并置。

我已经尝试解释了Hadoop中的读写过程。希望它能帮助你理解你的困惑

HDFS上的数据写入过程:

客户端计算机首先将文件拆分为块(如块A、块B),然后客户端计算机与NameNode交互以请求放置这些块的位置(块A、块B)。NameNode向客户端提供数据节点列表以写入数据

然后,客户机从这些列表中选择第一个datanode,并将第一个块写入datanode,datanode将该块复制到另一个datanode,一旦第二个datanode接收到复制的块,它将接收到的块确认发送给主datanode,主datanode将块信息更新到NameNode。NameNode保留有关文件及其关联块的信息

如果知道文件名,可以通过DFS浏览器查看这些块

转到namenode web界面,说“浏览文件系统”,然后导航到您感兴趣的文件。在页面底部,将有一个文件中所有块的列表,以及这些块的位置

或者,可以通过命令提示符运行命令:

hadoop fsck / -files -blocks -locations
要查看特定文件的块,请执行以下操作:

hadoop fsck [path] [options]
hadoop fsck /path/to/file -files -blocks
从HDFS读取数据的过程:

当客户端请求读取数据时(用户提供读取数据的文件位置或文件名),客户端首先与NameNode交互并询问数据的位置。NameNode返回有关特定文件的关联块和块位置的信息,然后客户端直接与datanode交互以获取块

当您通过pig、hive或Map/Reduce处理数据时,您的作业将转到该特定节点,并在数据所在的节点上进行处理,完成作业后,您将获得组合输出


这有助于理解这一点。

非常感谢!这对我帮助很大