我对如何在hadoop中检索数据有些困惑。
-
mapReduce的目的是从Hadoop集群(HDFS)中检索数据,还是仅限于聚合。
Hadoop 支持顺序搜索,比我们怎么能说Hadoop并行处理数据,搜索和遍历每个节点时处理有什么不同?
如果我错了,请纠正我:是不是每个节点的块是按顺序读取的,但许多节点在集群中是平行处理的。我的意思是两个作业在两个不同的节点上并行运行,每个作业同时对每个节点的所有相关块进行顺序搜索。例如:节点 1:块 A、块 B、块 C 节点 2:块 D、块 E、块 F我的假设: A->座 B->座C座 ||D座、E座、F座
其中 -> 是顺序的 ||是平行的。
- 假设我想搜索过去 2 年从公司获得最大福利(现金)的四名员工中的一名。搜索和检索将如何在这里工作。
-
MapReduce作业可以从HDFS读取数据。其他数据源也是可能的。
-
请看一下MapReduce教程并分析mapreduce工作流程。
-
它严格取决于输入数据大小和将在给定节点上并行运行的可用工作线程(映射/减少任务)的数量。如果每个节点有 3 个工作线程,则可以并行处理所有三个块(分别为 A、B、C 和 D、E、F)。块本身中的数据按顺序从磁盘读取。
就示例而言,您的方法可能类似于以下内容:
- 映射任务:处理所有员工,并在单个数据块中计算员工之间的本地最大收益,并输出此最大值(即作为一对
[local_max_benefits, employee_id]
- 归约任务:从映射任务遍历局部最大值,并将全局最大值计算为
[local_max_benefits, {employee_id1, ..., employee_idN}]
。