您好、欢迎来到现金彩票网!
当前位置:2019欢乐棋牌 > 作业录入 >

hadoop提交作业时要先上传输入文件吗?

发布时间:2019-06-28 07:44 来源:未知 编辑:admin

  我参考的网上例子都是先把本地文件上传到hdfs系统上去,然后提交作业,并在作业里指定已经上传到hdfs的文件。我感觉实际场景不是这样吧,实际应该是指定另外一个存放文件的机子位置,...

  我参考的网上例子都是先把本地文件上传到hdfs系统上去,然后提交作业,并在作业里指定已经上传到hdfs的文件。我感觉实际场景不是这样吧,实际应该是指定另外一个存放文件的机子位置,是这样吗?

  我先把上传到hdfs上时,也进行block切割并划分split了吗?如果是这样,那么提交作业时是否还要再进行一次block切割和split划分,这样就重复了,感觉很乱。

  请高手解释下,我找了几天也没找到实际上传文件的代码,全是处理split的,请写在哪个类哪个方法真真正正进行了文件的上传,谢谢!展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  mapreduce的作业输入输出都需要在一个分布式文件系统上,一般来说都是hdfs,也可以是其他的文件系统。所以运行作业的输入文件必须首先上传到hdfs,输出文件自然也在hdfs上。

  把文件上传到hdfs上,hdfs会根据设定的块的大小,默认是64M,来分块存放文件,并存放到不同机器以及会备份多份

  mapreduce作业在开始时会对输入文件进行切分,这个和hdfs分块存储文件是不同的。但是mapreduce切分输入文件大小也和文件的块有关,不过mapreduce切分文件的目的是方便多个map任务同时进行处理,提高处理效率,实现分布式计算。而且在mapreduce看来输入文件是一个整体,并不知道输入文件在hdfs中的存储方式。这样说吧,文件在hdfs中的存储方式由namenode决定,所以只有namenode知道,而Mapreduce任务由jobtracker负责,所以jobtracker无法知道输入文件的具体分块信息,只能知道哪些节点上保存有该文件。

  因为提交作业时,你的数据必须是在hdfs文件系统里面的。你上传到Hdfs上的时候,你的数据已经分布式保存了。你可以查查看一下。他说的那个split。就是这一步。下一步就直接运行程序。执行map了。

http://aunthelens.com/zuoyeluru/119.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有