1. 程式人生 > >三十四、HDFS客戶端操作

三十四、HDFS客戶端操作

                              HDFS客戶端操作

1、jar包準備

1)解壓hadoop-2.7.2.tar.gz(原始碼)到非中文目錄hadoop-2.7.2

2)建立_lib資料夾,進入hadoop-2.7.2資料夾的share資料夾,查詢所有jar包,並把jar包拷貝到_lib資料夾下

3)在全部jar包中查詢sources.jar(原始碼包),並剪下到_lib資料夾下的_source資料夾。

4)在全部jar包中查詢tests.jar(測試包),並剪下到_lib資料夾下的_test資料夾。

2、eclipse準備

2.1、將_lib資料夾下非_source、_test資料夾的143個jar包拷貝到D:\EclipseWorkSpace\hadoop_2.7.2_lib

2.2、解壓原始碼hadoop-2.7.2.tar.gz到D:\EclipseWorkSpace\hadoop-2.7.2資料夾

          將hadoopBin資料夾內的檔案拷貝到hadoop-2.7.2\bin下

2.3、配置HADOOP_HOME環境變數

在這裡插入圖片描述

在這裡插入圖片描述

2.4、建立第一個java工程

   新增143個jar包到lib目錄

在這裡插入圖片描述

package com.yang.hdfs;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

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


public class HdfsClient {
	
	public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException {
        // 1 獲取檔案系統
		Configuration configuration = new Configuration();
		// 配置在叢集上執行
		//configuration.set("fs.defaultFS", "hdfs://hadoop14:9000");
		//FileSystem fileSystem = FileSystem.get(configuration);
		
		// 直接配置訪問叢集的路徑和訪問叢集的使用者名稱稱
        FileSystem fileSystem = FileSystem.get(new URI("hdfs://hadoop14:9000"),configuration, "admin");
		
		// 2 、把本地檔案上傳到檔案系統中
		fileSystem.copyFromLocalFile(new Path("G:/yang.jpg")
				, new Path("/user/admin/mapreduce/wordcount/input/yang.jpg"));
		
		// 3、 關閉資源
		fileSystem.close();
		System.out.println("over==================================");
			
	}
}

2.5、執行程式

執行時需要配置使用者名稱稱,客戶端去操作hdfs時,是有一個使用者身份的。預設情況下,hdfs客戶端api會從jvm中獲取一個引數來作為自己的使用者身份:-DHADOOP_USER_NAME=admin,admin為使用者名稱稱。

在這裡插入圖片描述

在這裡插入圖片描述