日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HADOOP学习笔记(一):HDFS

發布時間:2024/6/30 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HADOOP学习笔记(一):HDFS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

HDFS,它是一個文件系統,用于存儲文件,通過目錄樹來定位文件;其次,它是分布式的,由很多服務器聯合起來實現其功能,集群中的服務器有各自的角色。

HDFS的設計適合一次寫入,多次讀出的場景,且不支持文件的修改。適合用來做數據分析,并不適合用來做網盤應用。

HDFS架構

NameNode

  • 是整個文件系統的管理節點。?

    它維護著整個文件系統的文件文件夾樹,文件/文件夾的元信息和每個文件相應的數據塊列表。

    接收用戶的操作請求。

  • 文件包括: (詳細查看 dfs.name.dir文件夾)?
    •   fsimage: 元數據鏡像文件。?

        存儲某一時段NameNode內存元數據信息。

    •   edits: 操作日志文件。
    •   fstime: 保存近期一次checkpoint的時間
  • 以上這些文件是保存在linux的文件系統中。

DataNode

  • 提供真實文件數據的存儲服務。
  • 文件塊(block):最主要的存儲單位。對于文件內容而言,一個文件的長度大小是size。那么從文件的0偏移開始,依照固定的大小,順序對文件進行劃分并編號,劃分好的每個塊稱一個Block。HDFS默認Block大小是128MB。以一個512MB文件,共同擁有4個Block.
  • 不同于普通文件系統的是,HDFS中。假設一個文件小于一個數據塊的大小,并不占用整個數據塊存儲空間
  • Replication。多副本。默認是三個。

SecondaryNameNode

  • HA(High Availability 高可用性)的一個解決方式

    但不支持熱備。

    配置就可以。

  • 運行過程:從NameNode上下載元數據信息(fsimage,edits)。然后把二者合并。生成新的fsimage。在本地保存,并將其推送到NameNode,同一時候重置NameNode的edits.
  • 默認在安裝在NameNode節點上,但這樣…不安全!?

HDFS的數據流

寫數據流程

1)客戶端向namenode請求上傳文件,namenode檢查目標文件是否已存在,父目錄是否存在。

2)namenode返回是否可以上傳。

3)客戶端請求第一個 block上傳到哪幾個datanode服務器上。

4)namenode返回3個datanode節點,分別為dn1、dn2、dn3。

5)客戶端請求dn1上傳數據,dn1收到請求會繼續調用dn2,然后dn2調用dn3,將這個通信管道建立完成

6)dn1、dn2、dn3逐級應答客戶端

7)客戶端開始往dn1上傳第一個block(先從磁盤讀取數據放到一個本地內存緩存),以packet為單位,dn1收到一個packet就會傳給dn2,dn2傳給dn3;dn1每傳一個packet會放入一個應答隊列等待應答

8)當一個block傳輸完成之后,客戶端再次請求namenode上傳第二個block的服務器。(重復執行3-7步)

讀數據流程

1)客戶端向namenode請求下載文件,namenode通過查詢元數據,找到文件塊所在的datanode地址。

2)挑選一臺datanode(就近原則,然后隨機)服務器,請求讀取數據。

3)datanode開始傳輸數據給客戶端(從磁盤里面讀取數據放入流,以packet為單位來做校驗)。

4)客戶端以packet為單位接收,先在本地緩存,然后寫入目標文件。

?命令行操作

1)-help:輸出這個命令參數bin/hdfs dfs -help rm2)-ls: 顯示目錄信息hadoop fs -ls /3)-mkdir:在hdfs上創建目錄hadoop fs -mkdir -p /aaa/bbb/cc/dd4)-moveFromLocal從本地剪切粘貼到hdfshadoop fs - moveFromLocal /home/hadoop/a.txt /aaa/bbb/cc/dd5)-moveToLocal:從hdfs剪切粘貼到本地hadoop fs - moveToLocal /aaa/bbb/cc/dd /home/hadoop/a.txt(6)--appendToFile :追加一個文件到已經存在的文件末尾hadoop fs -appendToFile ./hello.txt /hello.txt(7)-cat :顯示文件內容(8)-tail:顯示一個文件的末尾hadoop fs -tail /weblog/access_log.19)-text:以字符形式打印一個文件的內容hadoop fs -text /weblog/access_log.110)-chgrp 、-chmod、-chown:linux文件系統中的用法一樣,修改文件所屬權限hadoop fs -chmod 666 /hello.txthadoop fs -chown someuser:somegrp /hello.txt(11)-copyFromLocal:從本地文件系統中拷貝文件到hdfs路徑去hadoop fs -copyFromLocal ./jdk.tar.gz /aaa/12)-copyToLocal:從hdfs拷貝到本地hadoop fs -copyToLocal /aaa/jdk.tar.gz(13)-cp :從hdfs的一個路徑拷貝到hdfs的另一個路徑hadoop fs -cp /aaa/jdk.tar.gz /bbb/jdk.tar.gz.214)-mv:在hdfs目錄中移動文件hadoop fs -mv /aaa/jdk.tar.gz /15)-get:等同于copyToLocal,就是從hdfs下載文件到本地hadoop fs -get /aaa/jdk.tar.gz(16)-getmerge :合并下載多個文件,比如hdfs的目錄 /aaa/下有多個文件:log.1, log.2,log.3,...hadoop fs -getmerge /aaa/log.* ./log.sum17)-put:等同于copyFromLocalhadoop fs -put /aaa/jdk.tar.gz /bbb/jdk.tar.gz.218)-rm:刪除文件或文件夾hadoop fs -rm -r /aaa/bbb/19)-rmdir:刪除空目錄hadoop fs -rmdir /aaa/bbb/ccc(20)-df :統計文件系統的可用空間信息hadoop fs -df -h /21)-du統計文件夾的大小信息hadoop fs -du -s -h /aaa/*(22)-count:統計一個指定目錄下的文件節點數量hadoop fs -count /aaa/(23)-setrep:設置hdfs中文件的副本數量hadoop fs -setrep 3 /aaa/jdk.tar.gz

?HDFS API操作

詳見github:https://github.com/gloomysun/hadoop-learning/tree/master/01-hdfs

轉載于:https://www.cnblogs.com/lullaby/p/9645085.html

總結

以上是生活随笔為你收集整理的HADOOP学习笔记(一):HDFS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。