码迷,mamicode.com
首页 > Web开发 > 详细

Hadoop在HA模式下远程上传文件的实现

时间:2015-03-11 12:43:14      阅读:416      评论:0      收藏:0      [点我收藏+]

标签:

在非HA模式下,只须如下代码就可以轻松实现上传文件,标红的这句是关键

public class CopyToHDFS {
    public static void main(String[] args) throws IOException {
         
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://master:9000");
         
        FileSystem fs = FileSystem.get(conf);
         
        fs.copyFromLocalFile(new Path("/home/lance/log.txt"), new Path("/log"));
    }
}

 

但是当是HA模式下,就不能简单地把hdfs://master:9000改为hdfs://mycluster,单纯这样的话系统会报如下错误:

Exception in thread "main" java.lang.IllegalArgumentException: java.net.UnknownHostException: mycluster

主要还是缺少必要属性,配置属性方式一般有两种:一种是直接把hadoop的配置文件放到工程目录下,在配置文件里面设置属性;一种是如上所示,用set方法设置。

以下就是所需的关键属性

core-site.xml

 

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
    </property>
</configuration>

 

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1, nn2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>192.168.11.2:9000</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>192.168.11.7:9000</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
</configuration>

 

Hadoop在HA模式下远程上传文件的实现

标签:

原文地址:http://www.cnblogs.com/csuer/p/4329327.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!