1. java调用hadoop api向hdfs上传文件问题
var baseText3=null function srsd(){ var popUp3=document.getElementById("popupcontent3"); popUp3.style.top=""; popUp3.style.left=""; if (baseText3==null){ baseText3=popUp3.innerHTML; popUp3.innerHTML=baseText3+"<div id=\"statusbar3\"><a onclick=\"hidePopup3();\"></a></div>";}
2. 怎样将文件发送到hadoop hdfs系统
代码如下:import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import java.io.File;import java.io.IOException;public class HadoopFile {private Configuration conf =null;public HadoopFile(){conf =new Configuration();conf.addResource(new Path("/hadoop/etc/hadoop/core-site.xml"));}
3. Hadoop将数据上传到HDFS可否定向发送到某个datanode节点上
主要要看你的目的是什么,如果是固定机器,不如直接写本地文件,如果是考虑那个node上有/多个进程需要读取这份数据省network,用distributed cache。
4. 我用linux搭建hadoop集群,在本地我用eclipse向节点上传文件 但是文件没有上传到hdfs节点上
兄弟, hadoop的作用, 是做什么的啊, 我在网上找了资料,一直没有一找到合理的解释。你可以教我如何用hadoop吗?
5. 如何向 hadoop 导入数据
1.2 使用Hadoop shell命令导入和导出数据到HDFS 实验准备 实例需要用到的数据-weblog_entries.txt 在namenode创建2个文件夹用来存放实验用的数据mkdir /home/data 1mkdir /home/data_download1将weblog_entries.txt上传到namenode里的/home/data文件夹(我使用SecureFXPortable.exe 工具) 注:以下命令都是在namenode节点运行的实验过程 1.在HDFS中创建一个新的文件夹,用于保存weblog_entries.txthadoop fs -mkdir /data/weblogs12.将weblog_entries.txt文件从本地文件系统复制到HDFS刚创建的新文件夹下cd /home/data1hadoop fs -FromLocal weblog_entries.txt /data/weblogs13.列出HDFS上weblog_entries.txt文件的信息:hadoop fs –ls /data/weblogs/weblog_entries.txt 14.将HDFS上的weblog_entries.txt文件复制到本地系统的当前文件夹下cd /home/data_download1hadoop fs -ToLocal /data/weblogs/weblog_entries.txt ./weblog_entries.txt 1最后用 ls 命令检验下时候将weblog_entries.txt 下载到本地
6. hadoop提交作业时要先上传输入文件吗
maprece的作业输入输出都需要在一个分布式文件系统上,一般来说都是hdfs,也可以是其他的文件系统。所以运行作业的输入文件必须首先上传到hdfs,输出文件自然也在hdfs上。
把文件上传到hdfs上,hdfs会根据设定的块的大小,默认是64M,来分块存放文件,并存放到不同机器以及会备份多份
maprece作业在开始时会对输入文件进行切分,这个和hdfs分块存储文件是不同的。但是maprece切分输入文件大小也和文件的块有关,不过maprece切分文件的目的是方便多个map任务同时进行处理,提高处理效率,实现分布式计算。而且在maprece看来输入文件是一个整体,并不知道输入文件在hdfs中的存储方式。这样说吧,文件在hdfs中的存储方式由namenode决定,所以只有namenode知道,而Maprece任务由jobtracker负责,所以jobtracker无法知道输入文件的具体分块信息,只能知道哪些节点上保存有该文件。
7. 我做hadoop伪分布式的时候,将本地文件上传到dfs中去,但是老是提示不存在,还请大神帮忙看一下。
完全路径名一般是:hdfs://localhost:8000/user/你的用户名/xxxx/xxxx像我的就是hdfs:localhost:8000/user/hadoop/input/test001/yoyo另外问一下,你用的是hadoop dfs -FromLocal命令在terminal里面运行吗?
8. 怎样复制文档到hdfs默认目录
在Hadoop中用作文件操作的主类位于org.apache.hadoop.fs包中。基本的文件操作有open、、write和close。实际上,Hadoop的文件API是通用的,可用于HDFS以外的文件系统。Hadoop文件API的起点是FileSystem类,这是一个与文件系统交互的抽象类,存在不同的具体实现子类来处理HDFS和本地文件系统,可以通过调用factory方法FileSystem.get(Configuration conf)来得到所需的FileSystem实例。Configuration类适用于保留键/值配置参数的特殊类。它的默认实例化方法是以HDFS系统的资源配置为基础的。如下,可以得到与HDFS接口的FileSystem对象:Configuration conf = new Configuration();FileSystem hdfs = FileSystem.get(conf);要得到一个专用于本地文件系统的FileSystem对象:FileSystem local = FileSystem.getLocal(conf);Hadoop文件API用Path对象来编制文件和目录名,使用FileStatus对象来存储文件和目录的元数据。使用listStatus()方法得到一个目录中的文件列表:Path inputDir = new Path(args[0]);FileStatus[] inputFiles = local.listStatus(inputDir);数组inputFiles的长度等于指定目录中文件的个数,在inputFiles中每一个FileStatus对象均有元数据信息,如文件长度、权限、修改时间等。可以用命令行bin/hadoop fs -put 把本地文件复制到HDFS,也可以自己实现。下面的程序编译打包后,可以直接运行如下的命令,实现自己的上传功能:hadoop jar file.jar FileCopy cite2.txt cite2.txt 下面是FileCopy的代码。[java] view plain <span style="font-size:18px;">import java.net.URI; import java.io.InputStream; import java.io.OutputStream; import java.io.BufferedInputStream; import java.io.FileInputStream; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class FileCopy { public static void main(String[] args) throws Exception { if(args.length != 2){ System.err.println("Usage : file <source> <target>"); System.exit(2); } Configuration conf = new Configuration(); InputStream input = new BufferedInputStream(new FileInputStream(args[0])); FileSystem fs = FileSystem.get(URI.create(args[1]),conf); OutputStream output = fs.create(new Path(args[1])); IOUtils.Bytes(input,output,4096,true); } }</span>
9. 在本地eclipse上开发hadoop程序,将文件上传到hdfs上时用下面程序,老是找不到文件,问什么
static String INPUT_PATH = "hdfs://hadoop0:9000/VERSION";public static void main(String[] args) throws Exception{final FileSystem fileSystem = FileSystem.get(new URI(INPUT_PATH), new Configuration());//putfinal FSDataOutputStream out = fileSystem.create(new Path("/dir1/hosts"));IOUtils.Bytes(new FileInputStream(new File("C:\\Windows\\System32\\drivers\\etc\\hosts")), out, 1024, true);
10. hadoop的几个问题 1.将本地文件复制到hdfs中,那么在hdfs中这个文件是存放在namenode还是分开放在datanode
试着回答:先说明一下:1. namenode负责管理目录和文件信息,真正的文件块是存放在datanode上。2. 每个map和rece(即task)都是java进程,默版认是有单独的jvm的,所以不可能同一个类的对象会在不同节点上。看你的描述是把namenode,datanode和jobtracker,tasktracker有点混了。所以:问题1. 分块存放在datanode上问题2.inputformat是在datanode上,确切的说是在tasktracker中。每权个map和rece都会有自己的对象,当多个map读入一个文件时,实际上不同的map是读的文件不同的块,rece也是一样,各个任务读入的数据是不相交的。问题3.rece输出肯定是在hdfs上,和普通文件一样在datanode上。问题4.每个recer会有自己的outputformat对象,与前面inputformat原因一样。
未经允许不得转载:山九号 » hadoop上传文件到hdfs|我用linux搭建hadoop集群