hdfs配置在java中有什么用途?

dw1jzc5e  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(365)

我对hdfsjavaapi有点困惑,尤其是hadoop配置在hadoop服务器安装中的作用(/etc/hadoop/core-site.xml等)。
我应该在每个使用hdfs的java客户机程序中安装hadoop吗?
java客户端的任何配置集是否会影响它与hadoop服务器(hdfs服务器)的通信方式?

piok6c0g

piok6c0g1#

您可以在core-site.xml中或通过驱动程序代码中的配置来设置参数值。程序中的设置将覆盖xml文件中的设置。例如,如果你必须设置一个压缩代码。然后您可以将它们添加到core-site.xml

<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
<property>
<name>mapred.map.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.GzipCodec</value>
</property>

或者将这一行添加到您的驱动程序代码中。

Configuration conf = new Configuration();
 conf.set("mapred.compress.map.output", "true");
 conf.set("mapred.map.output.compression.codec", "org.apache.hadoop.io.compress.GzipCodec");

而且您不需要在每台机器/节点上安装hadoop。只需将其安装在主节点中,并通过向列表中添加ip来添加datanodes。这将帮助您了解如何设置多节点集群。

hgtggwj0

hgtggwj02#

不可以。在每个java客户机中,您应该只导入hdfs java包。
例子:

public class HdfsTest {
    //download file from hdfs
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://yourHadoopIP:9000/");
        conf.set("dfs.blocksize", "64");

        //to get a client of the hdfs system
        FileSystem fs = FileSystem.get(conf);
        fs.copyToLocalFile(new Path("hdfs://yourHadoopIP:9000/jdk-7u65-linux-i586.tar.gz"), new Path("/root/jdk.tgz"));
        fs.close(); 
    }
}

相关问题