Hadoop 配置的優先級

從低到高

1.默認配置

默認文件 文件存放在Hadoop的jar包中的位置
core-default.xml hadoop-common-3.3.6.jar/core-default.xml
hdfs-default.xml hadoop-hdfs-3.3.6.jar/hdfs-default.xml
yarn-default.xml hadoop-yarn-common-3.3.6.jar/yarn-default.xml
mapred-default.xml hadoop-mapreduce-client-core-3.3.6.jar/mapred-default.xml

2.自定義配置文件

core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四個配置存放在$HADOOP_HOME/etc/hadoop這個路徑上,用戶可以根據項目需求重新進行修改配置。

3.調用API程序的資源目錄下的配置文件

core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四個配置存放在項目的src/main/resources/ 路徑下

4.調用API程序的配置類

package cn.coreqi.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * 客戶端代碼步驟
 * 1.首先獲取一個客戶端對象
 * 2.執行相關的操作命令
 * 3.關閉資源
 */
public class HdfsClient {

    /**
     * 客戶端對象
     */
    private FileSystem fs;

    /**
     * 初始化客戶端對象
     * @throws IOException
     * @throws InterruptedException
     * @throws URISyntaxException
     */
    @Before
    public void init() throws IOException, InterruptedException, URISyntaxException {
        // 需要連接的Hadoop NameNode地址
        URI uri = new URI("hdfs://192.168.58.130:8020");
        // 創建一個配置文件
        Configuration configuration = new Configuration();
        configuration.set("dfs.replication","7");   //設置默認副本數量爲7
        // 用戶
        String user = "root";
        // 獲取客戶端對象
        fs = FileSystem.get(uri, configuration,user);
    }

    /**
     * 釋放客戶端資源
     * @throws IOException
     */
    @After
    public void close() throws IOException {
        // 關閉資源
        fs.close();
    }

    /**
     * 創建目錄
     * @throws IOException
     */
    @Test
    public void testMkdirs() throws IOException{
        // 創建一個文件夾
        fs.mkdirs(new Path("/coreqi"));
    }

    @Test
    public void testPut() throws IOException {
        // 參數解析
        // 參數一,表示是否刪除源數據
        // 參數二,是否允許覆蓋
        // 參數三,源數據路徑
        // 參數四,目標路徑
        //fs.copyFromLocalFile(false,false,new Path("C:\\Users\\fanqi\\Desktop\\bda6f29e-29de-4b9d-aa01-8c0fa850f99b.webp"),new Path("\\coreqi\\1.webp"));
        fs.copyFromLocalFile(false,false,new Path("C:\\Users\\fanqi\\Desktop\\bda6f29e-29de-4b9d-aa01-8c0fa850f99b.webp"),new Path("hdfs://192.168.58.130/coreqi/2.webp"));
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章