一:創建maven專案
匯入maven
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
junit是測驗塊的包
其他三個是hdfs連接需要的包
二:winuti處理(如果有就不需要處理)
1.解壓hadoop-2.6.1到D盤 2.配置環境變數 配置變數的(https://jingyan.baidu.com/article/47a29f24610740c0142399ea.html)二:相關操作
1:目錄操作
相關操作:1:mkdirs 創建目錄,
2:delete 洗掉檔案或目錄,
3:listStatus 列出目錄的內容,
4:getFileStatus 顯示檔案系統的目錄和檔案的元資料資訊,
5:getFileBlockLocations 顯示檔案存盤位置
(1:創建一個目錄
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; public class Test1 { FileSystem fs; @Before public void conn() throws URISyntaxException, IOException { //hadoop組態檔,自動獲取hadoop的hdfs組態檔 Configuration conf = new Configuration(); conf.set("dfs.replication", "1");//設定副本數為一 //創建url 9000是埠號組態檔中有,master是主機名,如果沒有配置映射可以是ip地址 URI uri = new URI("hdfs://master:9000"); //等同于客戶端 fs = FileSystem.get(uri, conf); } @Test public void mkdir() throws IOException { //創建一個Path物件傳入想要創建hdfs的路徑 Path path = new Path("/data1"); //判斷是否存在要是存在就洗掉,以免報錯 if(fs.exists(path)){ fs.delete(path); } //創建目錄 fs.mkdirs(path); } }
可以通過web界面查看有沒有創建成功(master:50070)
(2:獲取獲取檔案串列
@Test public void filestatus() throws IOException { //獲取根目錄下的檔案串列 FileStatus[] fileStatuses = fs.listStatus(new Path("/")); //遍歷 fileStatuses for (FileStatus fileStatus : fileStatuses) { System.out.println(fileStatus); }

三:關于測驗包
我用的junit測驗,可以不用main方法需要運行哪個就運行哪個,每個@Test前面都有一個運行的一個@Test對應一個方法(函式),還有@Before,@After等,@Before是運行每個@Test之前都會運行,常用來做連接,@After相反是運行每個@Test之后都會運行常用在關閉連接的方法前面,
(原文鏈接:https://blog.csdn.net/weixin_50691399/article/details/121955946)
四:連接不上的問題
1.洗掉tmp

2.修改配置
修改namenode的地址為具體IP (之前寫的localhost)

修改slaves檔案,為具體IP

3. 格式化hdfs
hadoop namenode –format
4.啟動HDFS
start-dfs.sh
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/463429.html
標籤:Linux
