天天看點

Hadoop(二)HDFS基本操作

HDFS

HDFS由大量伺服器組成存儲叢集,将資料進行分片與副本,實作高容錯。

而分片最小的機關就是塊。預設塊的大小是64M。

HDFS Cli操作

官網

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/FileSystemShell.html

啟動指令

sbin/start-dfs.sh           

複制

停止指令

sbin/stop-dfs.sh           

複制

建立目錄

hadoop fs -mkdir /chesterdata           

複制

檢視是否建立成功

hadoop fs -ls /           

複制

上傳檔案

hadoop fs -put test.txt /chesterdata           

複制

檢視檔案

hadoop fs -ls /chesterdata           

複制

驗證塊是不是64M,上傳一個130M的檔案

hadoop fs -put /usr/local/golang1181/go1.18.1.linux-amd64.tar.gz /chesterdata           

複制

檢視此檔案的塊資訊,hdfs的指令

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html

hdfs fsck /chesterdata/go1.18.1.linux-amd64.tar.gz -files -blocks           

複制

Hadoop(二)HDFS基本操作

程式設計語言操作HDFS

在Github上搜hdfs可以看到哪些語言支援hdfs的操作

Hadoop(二)HDFS基本操作

我們選擇golang來示範操作

引入github.com/colinmarc/hdfs,官網

https://pkg.go.dev/github.com/colinmarc/hdfs#section-readme

package main

import "github.com/colinmarc/hdfs"           

複制

通過go mod tidy安裝

[root@localhost hdfsdemo]# go mod tidy
go: finding module for package github.com/colinmarc/hdfs
go: downloading github.com/colinmarc/hdfs v1.1.3
go: found github.com/colinmarc/hdfs in github.com/colinmarc/hdfs v1.1.3
go: finding module for package github.com/golang/protobuf/proto           

複制

建立hdfsclient,并嘗試删除hdfs中的/chesterdata/go1.18.1.linux-amd64.tar.gz

package main

import (
    "fmt"

    "github.com/colinmarc/hdfs"
)

func main() {
    client, _ := hdfs.New("localhost:9000")

    err := client.Remove("/chesterdata/go1.18.1.linux-amd64.tar.gz")
    fmt.Println(err)
}           

複制

通過go run .運作

[root@localhost hdfsdemo]# go run .
<nil>           

複制

通過cli檢查是否真正删除

[root@localhost hadoop-3.2.3]# hadoop fs -ls /chesterdata           

複制

根據ui來檢視檔案

Hadoop(二)HDFS基本操作