在hadoop环境中,谁在hdfs中创建数据拆分?

wfypjpf4  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(344)

我有一个大数据问题(sorta),我想用hadoop来解决。简单地说,我们有一项工作或一项任务,就是读取一个有超过10亿条记录的巨大文件,逐行解析这些文件,进行一些清理,并将清理后的数据写入另一个文件。我们预计会有数百个这样的工作岗位不断被创造、提交、运行。每个作业都处理自己的文件,因此我们不必担心并发性问题。
我从一个非常高的层次上理解了如何使用hadoop来实现这一点。但我没能理解的是,谁的工作是把这个巨大的文件分成几个部分,这些部分将存储在数据节点中。我下面的理解正确吗?

JOB:
Client (has the big input file) ->  
Splits the file into chunks (how do I know split size??) -> 
Asks Name Node where to store data (how will the name node know how\where to allocate?)-> 
Name Node responds with Data Node Information -> 
Client copies (using Hadoop FS) the split data to appropriate DataNodes ->
Client submits Job (gives all the relavant info, map/reduce)->
JobTracker schedules\runs it ->
DataNodes run map\reduce tasks ->

输出文件是在datanodes中创建的,合并所有的输出文件供客户使用(这是谁做的?)
如有任何帮助/意见,将不胜感激
谢谢,凯

a14dhokn

a14dhokn1#

在数据存储和mapreduce的整个过程中,创建了两种类型的块。1) 当您向客户提交一个文件,要求他存储它时,它会将文件分成块(hadoopv2中的默认大小是128mb,hadoopv1中的默认大小是64mb)。然后,客户机要求namenode提供它必须在其上存储数据的datanodes。namenode根据datanodes的可用性和从客户端到datanodes的网络距离提供这些详细信息。2) 提交要在该文件上运行的作业时,该文件将被划分为逻辑输入拆分。创建的输入拆分数等于Map器数。此拆分大小不是固定的。这取决于逻辑。
在hadoopv2中,没有jobtracker或tasktracker的概念。当客户机提交作业时,yarn控制作业的执行。

http://www.dummies.com/how-to/content/input-splits-in-hadoops-mapreduce.html

这可以帮助您理解什么是inputsplits。

w41d8nur

w41d8nur2#

当输入是文件时,hadoop通常使用fileinputformat类或其子类之一。该类具有issplitable方法,该方法定义文件是否可拆分。并不是所有的文件格式都允许拆分工作(例如gzip文件是不可拆分的,甚至一个文件有几个块,所有这些块都需要为同一个Map器进行处理)。
如果文件是可拆分的hadoop,则调用所有inputformat实现都必须实现的getsplit方法来获取逻辑拆分列表。

相关问题