`
king_c
  • 浏览: 222694 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MapReduce 动态设置 namenode HDFS 的URI

 
阅读更多
开发MapReduce程序 一直都是在namenode 那台pc上用eclipse 直接运行,没有任何问题

今天在一台namenode上用eclipse 编译一M/R小程序,结果死活 都是

Exception in thread "main" org.apache.hadoop.ipc.RemoteException: java.io.IOException: Unknown protocol to job tracker: org.apache.hadoop.hdfs.protocol.ClientProtocol
	at org.apache.hadoop.mapred.JobTracker.getProtocolVersion(JobTracker.java:344)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:523)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1383)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1379)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:416)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1377)

	at org.apache.hadoop.ipc.Client.call(Client.java:1030)
	at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:224)
	at $Proxy1.getProtocolVersion(Unknown Source)
	at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:364)
	at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:106)
	at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:208)
	at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:175)
	at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:89)
	at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1310)
	at org.apache.hadoop.fs.FileSystem.access$100(FileSystem.java:65)
	at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1328)
	at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:226)
	at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:109)
	at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:210)
	at org.apache.hadoop.fs.Path.getFileSystem(Path.java:187)
	at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.addInputPath(FileInputFormat.java:372)
	at gucas.xiaoxia.InvertedIndex.main(InvertedIndex.java:110)
 baidu google了半天 也没找出如何在MapReduce之前动态设置 DFS的URI 

无奈之下 只能求助与 M/R 源代码 发现 org.apache.hadoop.fs.FileSystem
java.lang.Object
  org.apache.hadoop.conf.Configured
      org.apache.hadoop.fs.FileSystem
 
setDefaultUri

public static void setDefaultUri(Configuration conf,
                                 String uri)
Set the default filesystem URI in a configuration.
Parameters:
conf - the configuration to alter
uri - the new default filesystem uri
 setDefaultUri 就是他了。

      Configuration conf = new Configuration();
		
		String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
		System.out.println(FileSystem.getDefaultUri(conf)); 
		FileSystem.setDefaultUri(conf, new URI("hdfs://gucas-s2:9000")); //动态设置 dfs uri
		System.out.println(FileSystem.getDefaultUri(conf));
		if(otherArgs.length != 2){
		    System.err.println("Usage: invertedindex <in> <out>");
		    System.exit(2);
		}
		
		Job job = new Job(conf, "InvertedIndex");
		job.setJarByClass(InvertedIndex.class);
 
 一定要在Job job = new Job(conf, "InvertedIndex"); 之前设置
 FileSystem.setDefaultUri(conf, new URI("hdfs://gucas-s2:9000")); //动态设置 dfs uri

否则无效





分享到:
评论

相关推荐

    Hadoop学习文档笔记,基本原理 HDFS

    使用`FileSystem.get()`方法,传入URI和配置对象,可以获取到与HDFS交互的`FileSystem`实例,例如:`FileSystem hdfs = FileSystem.get(new URI("hdfs://192.168.146.130:9000"), config, "hadoop");` 3. **文件...

    hadoop2.X配置详解和mapreduce详解

    5. **dfs.namenode.shared.edits.dir**:配置NameNode与JournalNode交互的URI,用于存储编辑日志。 ```xml &lt;name&gt;dfs.namenode.shared.edits.dir &lt;value&gt;qjournal://jn1.example.com:8485;jn2.example....

    大数据与云计算教程课件 优质大数据课程 08.HDFS文件接口(共41页).pptx

    HDFS文件系统的访问通常通过URI(统一资源标识符)进行,例如`hdfs://namenode:port/path`。这些URI定义了不同类型的文件系统,如: 1. `LocalFileSystem`:本地文件系统,支持客户端校验和。 2. `...

    大数据分析技术:Hdfs编程操作.docx

    URI uri = new URI("hdfs://hadoop01:9000"); // 创建一个配置文件 Configuration conf = new Configuration(); // 获取一个客户端对象 FileSystem fs = FileSystem.get(uri, conf, "root"); // 创建一个...

    hadoop相关配置文件.zip

    其中,`fs.defaultFS`是最重要的设置,它指定了Hadoop系统的默认文件系统,通常是一个HDFS URI(如hdfs://namenode:port)。`io.file.buffer.size`则规定了读写文件时缓冲区的大小,对性能有一定影响。 接着,`...

    精品课程推荐 大数据与云计算教程课件 优质大数据课程 07.HDFS Shell命令(共21页).pptx

    - `hadoop fs -put localfile hdfs://namenode:port/path`将本地文件上传至HDFS。 - `hadoop fs -get hdfs://namenode:port/path/localfile`将HDFS文件下载到本地。 此系列教程还涉及了其他关键的大数据技术,如...

    Hadoop2.6.0配置文件参考.zip

    - **fs.defaultFS**:此属性指定了Hadoop默认的文件系统,通常设置为HDFS的NameNode地址,如`hdfs://namenode_host:port/`。 - **io.file.buffer.size**:决定了HDFS读写时的缓冲区大小,直接影响I/O性能。 2. **...

    hadoop fs操作指南

    HDFS文件或目录的示例路径可以是`hdfs://namenode:namenodeport/parent/child`,或者当配置文件的默认值为`namenode:namenodeport`时,也可以简化为`/parent/child`。 大多数HDFS的FS Shell命令行为与对应的Unix ...

    hadoop2部署配置文件

    本配置文件集合包含了运行Hadoop 2.x集群所需的关键组件设置,如HDFS、YARN和MapReduce。现在我们将详细讲解每个配置文件的作用及其重要性。 1. **hadoop-env.sh**: 这个文件是Hadoop环境变量的配置,主要设置JVM...

    hadoop搭建配置文件

    1. `fs.defaultFS`:设定HDFS的默认文件系统URI,通常为`hdfs://namenode_host:port`,其中`namenode_host`是NameNode的主机名,`port`是NameNode的RPC端口。 2. `io.file.buffer.size`:读写文件时使用的缓冲区...

    hadoop配置含义

    **定义**:指定 NameNode 的 URI 地址。 **描述**:格式为 `hdfs://hostname/`,其中 hostname 可以是 IP 地址或域名。 ##### 3.2 mapred.job.tracker **定义**:指定 JobTracker 的主机名和端口号。 **描述**:...

    Hadoop集群搭建.pdf

    - `fs.default.name`:定义NameNode的URI,指定HDFS的名称节点地址。 - `mapred.job.tracker`:JobTracker的主机和端口号,用于调度任务。 - `dfs.name.dir`:NameNode存储元数据的本地文件系统路径,可以设置多...

    hadoop单机模式

    - `&lt;name&gt;fs.default.name&lt;/name&gt;`:这是HDFS的默认URI,值设置为`hdfs://localhost:9000`,表示NameNode运行在本地主机的9000端口。 - `&lt;name&gt;hadoop.tmp.dir&lt;/name&gt;`:定义了Hadoop临时文件的根目录,这里设置为...

    hadoop的默认配置文件

    在这个文件中,你可以找到关于NameNode、DataNode以及HDFS的各种参数设置,例如: - `fs.defaultFS`:定义了HDFS的默认命名空间URI,这是客户端连接HDFS的入口点。 - `dfs.replication`:设定副本因子,即每个数据...

    hadoop-2.7.4 单机伪分布配置文件

    这个文件包含了Hadoop的基础配置,如`fs.defaultFS`,它定义了默认文件系统的URI,通常是`hdfs://localhost:9000`,表示HDFS的NameNode;`io.file.buffer.size`则设置了读写文件时的缓冲区大小。 在配置完成后,...

    hadoop 默认配置大全

    例如,`fs.defaultFS`属性定义了Hadoop文件系统的默认URI,通常为HDFS的NameNode地址;`io.file.buffer.size`决定了读写文件时缓冲区的大小,影响数据传输效率。此外,还有关于安全性和日志记录的配置,如`io....

    jack20170105.doc

    - `fs.default.name`:指定NameNode的URI地址,包括协议、主机名和端口号。 - `hadoop.tmp.dir`:定义Hadoop使用的临时目录。 - `hdfs-site.xml` - `dfs.name.dir`:设置NameNode存储元数据的本地目录。 - `dfs....

    hadoop配置文件默认配置

    1. **fs.default.name**: 这个参数定义了默认的文件系统URI,例如`hdfs://master:8020/`,其中`master`是NameNode的主机名,`8020`是NameNode的RPC交互端口。 2. **dfs.http.address**: NameNode的Web管理界面运行...

    Hadoop研究报告

    hdfs-site.xml文件中设置了HDFS的副本数(dfs.replication),定义了NameNode和DataNode的数据存储路径。mapred-site.xml文件定义了MapReduce作业运行的框架(mapreduce.framework.name),以及作业历史服务器的相关...

    Hadoop集群安装配置教程_Hadoop2.62

    配置文件包括`core-site.xml`(存储配置)、`hdfs-site.xml`(HDFS配置)、`yarn-site.xml`(YARN配置)和`mapred-site.xml`(MapReduce配置),需设置相应的集群参数,如NameNode、DataNode、ResourceManager和...

Global site tag (gtag.js) - Google Analytics