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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

构建高可靠hadoop集群之0-hadoop用户向导

發(fā)布時間:2025/7/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 构建高可靠hadoop集群之0-hadoop用户向导 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文翻譯自:http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html

基于2.8.0文檔


1.目的

本文可以作為以下人員的入門指引:使用hdfs的用戶,或者僅僅使用分布式文件系統(tǒng)的用戶。雖然hdfs設(shè)計的目的是在多個環(huán)境中可以用,但關(guān)于Hdfs的工作原理還是很有助于配置和診斷特定集群。

2.概述

HDFS是Hadoop應(yīng)用的主要分布式存儲。一個hDFS集群主要包含一個名稱節(jié)點(管理文件系統(tǒng)元數(shù)據(jù))和一個多個數(shù)據(jù)節(jié)點(存儲實際的數(shù)據(jù))。HDFS框架指引詳細(xì)地描述了HDFS。本指引主要描述有關(guān)用戶交互和HDFS集群管理。HDFS框架圖簡要示意了名稱節(jié)點,數(shù)據(jù)節(jié)點和客戶端的交互。

客戶端連接名稱節(jié)點獲得文件系統(tǒng)元數(shù)據(jù)或者文件修改,然后和數(shù)據(jù)節(jié)點進(jìn)行直接的文件i/o。

以下一些顯著的特性對可能然許多用戶感興趣:

  • hadoop,包含hdfs,很適用于分布式存儲,并利用普通的設(shè)備進(jìn)行分布式計算。它有容錯,可伸縮,極其容易擴(kuò)展。mapreduce,以簡單和可用于大量分布式應(yīng)用知名,是hadoop的一部分。
  • HDFS是高度可配,并有一個默認(rèn)的配置,可以有許多的安裝方式。絕大部分時候,只有在非常大的集群中才需要調(diào)優(yōu)(譯注:應(yīng)該是指節(jié)點多,數(shù)據(jù)多吧?)。
  • hadoop使用java編寫,支持所有主要的平臺
  • hadoop支持類似于shell的命令,可以用于交互hdfs目錄
  • 名稱節(jié)點和數(shù)據(jù)節(jié)點都有內(nèi)建的web服務(wù)器,用戶很容易檢查集群當(dāng)前狀態(tài)
  • HDFS中一些新特性和提升會定期實現(xiàn),以下幾點是一些有用的特性:(譯注,這是基于2.8.0編寫的)
  • 文件權(quán)限和授權(quán)
  • 機(jī)棧敏感:在調(diào)度任務(wù)和分配存儲的時候,會考慮一個節(jié)點的物理位置。
  • 安全模式(safemode):用于維護(hù)的可管理模式(譯注:可以通過命令設(shè)置為這種狀態(tài))
  • fsck:用于診斷文件系統(tǒng)的健康,查找丟失的文件或者塊。
  • fetchdt:用戶獲取委托令牌(?delegationToken),并把令牌存儲到本地文件系統(tǒng)
  • 均衡器(balancer):均衡集群的工具
  • 升級和回滾:在軟件升級之后,有可能回滾到升級之前的狀態(tài)(如果有不可測的問題)
  • 第二名稱節(jié)點:執(zhí)行定期的名稱空間檢查點,并幫助名稱節(jié)點中包含hdfs修改的日志文件保持在特定大小
  • 檢查點節(jié)點:執(zhí)行名稱空間定期的檢查點,并幫助名稱節(jié)點中包含HDFS變更日志的文件保持在最小狀態(tài)。可以替代第二名稱節(jié)點,雖然這不是強制的。只要系統(tǒng)中沒有備份節(jié)點,那么名稱節(jié)點允許存在多個檢查點節(jié)點。
  • 備份節(jié)點:是檢查點節(jié)點的擴(kuò)展(升級)。除了可以做檢查點,它也從名稱節(jié)點接受編輯日志流,并在自己的內(nèi)存中維護(hù)名稱空間,這個空間是和名稱節(jié)點的名稱空間同步的。只能有一個備份節(jié)點。
  • 3.前提

    以下文檔描述如何安裝配置一個hadoop集群:

    http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/SingleCluster.html

    http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/ClusterSetup.html

    本文的剩余部分都會假設(shè)用戶可以配置并運行至少有一個數(shù)據(jù)節(jié)點的HDFS。如果名稱節(jié)點和數(shù)據(jù)節(jié)點運行在單一機(jī)器也是可以的。

    4.web界面

    名稱節(jié)點和數(shù)據(jù)節(jié)點都有運行內(nèi)部的web服務(wù)器,它們可以顯示關(guān)于當(dāng)前集群狀態(tài)的基本信息。

    根據(jù)默認(rèn)設(shè)置,名稱節(jié)點的主頁是http://namenode-name:50070/.它會列出集群中的名稱節(jié)點和集群的基本統(tǒng)計信息。web界面也可以用于瀏覽文件系統(tǒng)

    譯注:

    可以通過8042,8099,50070端口訪問,如果不修改默認(rèn)配置的話。

    例如http://bigdata.lzf:8099可以看集群配置文件

    ???? http://bigdata.lzf:50070 可以看數(shù)據(jù)節(jié)點和文件


    5.shell命令

    hadoop包含各種類shell命令,可以用來交互HDFS和hadoop支持的其它文件系統(tǒng)。

    命令 bin/hdfs dfs -help列出hadoop shell支持的命令。此外,bin/hdfs -help 命令名稱 可以顯示更多的細(xì)節(jié)。

    這些命令支持類似普通文件系統(tǒng)絕大部分的操作,例如復(fù)制文件,修改權(quán)限,等等。hdfs也會支持一些hdfs特定的操作,諸如修改文件復(fù)制。

    譯注:這個部分的內(nèi)容和2.8.0全部文檔中關(guān)于文件操作的不盡相同。hdfs dfs的命令雖然和hadoop fs 基本一致,但2.8.0的文檔基本只介紹hadoop fs。這可能是文檔沒有妥當(dāng)更新的緣故。

    ?

    6.DFSAdmin 命令

    hdfs dfsadmin命令支持一些hDFS管理。使用hdfs dfsadmin -help可以看看dfsadmin的詳細(xì)幫助。

    譯注:更多細(xì)節(jié)參閱hadoop文檔,或者看幫助,本文的目的不在于這些細(xì)節(jié)。

    7.第二名稱節(jié)點

    名稱節(jié)點使用本地文件系統(tǒng)來記錄文件系統(tǒng)的修改,這個文件稱為編輯日志。當(dāng)名稱節(jié)點啟動的時候,會從映像文件(fsimage-本地文件)獲取狀態(tài),然后把編輯日志總的事務(wù)應(yīng)用到映像文件中,然后生成新的映像文件,而現(xiàn)有的編輯日志被清空。

    由于每次節(jié)點只在啟動的時候整合日志文件和映像文件,隨著時間的推移,日志文件就可能變得非常巨大。巨大文件的一個影響是,下一次名稱節(jié)點啟動的時候,會耗費更多時間。

    第二名稱節(jié)點的作用之一就是定期合并編輯日志和映像文件,以便日志文件的大小保持在一個限度下。第二名稱節(jié)點通常運行在單獨的機(jī)器上,因為它對內(nèi)存的需求同主名稱節(jié)點一樣。

    第二名稱節(jié)點上檢查點進(jìn)程的啟動受到兩個可配參數(shù)的控制:

    dfs.namenode.checkpoint.period:默認(rèn)是1小時(單位是秒),設(shè)定了兩個連續(xù)檢查點之間的最大延遲

    dfs.namenode.checkpoint.txns:默認(rèn)是1百萬(譯注:單位是個),設(shè)定未檢查的事務(wù)數(shù),操作這個數(shù),就會觸發(fā)檢查點操作。

    譯注:兩個條件之一滿足就會觸發(fā)檢查點操作

    第二名稱節(jié)點把最新的檢查點存儲在本地目錄,這個目錄結(jié)構(gòu)同主名稱節(jié)點。這樣,如果有必要,主名稱節(jié)點總是可以讀取檢查點映像。(譯注:這就是后面說的導(dǎo)入檢查點)

    ?

    8.檢查點節(jié)點

    譯注:由于這個東西和第二名稱節(jié)點的作用類似,所以原文的絕大部分可以省略。

    hdfs namenode -checkpoint? --啟動檢查點節(jié)點

    dfs.namenode.backup.address 和dfs.namenode.backup.http-address可以用于配置檢查點(或者備份)節(jié)點的地址,包括http地址。

    如果沒有備份節(jié)點,那么可以設(shè)定多個檢查點節(jié)點。

    9.備份節(jié)點

    備份節(jié)點提供除了和檢查點節(jié)點一樣,可以提供檢查點功能,還能夠?qū)崟r同步一個和主節(jié)點一樣的系統(tǒng)命名空間(在內(nèi)存中,并且狀態(tài)是活動)。備份節(jié)點從主節(jié)點通過流的方式接受主節(jié)點上的編輯日志,并把這些日志保存在磁盤中,同時這些編輯日志一樣會被應(yīng)用到內(nèi)存中,這樣備份節(jié)點內(nèi)存中的名稱空間就和主節(jié)點完全一樣。

    備份節(jié)點不需要從主節(jié)點下載映像文件和編輯日志,因為它的內(nèi)存中有個和主節(jié)點一樣的名稱空間。備份節(jié)點的檢查點進(jìn)程更加高效,因為它只需要把名稱空間保存到本地的映像文件,并充值編輯日志。

    由于備份幾點維持了一個內(nèi)存中的名稱空間備份,所以它對于內(nèi)存的需求同名稱節(jié)點。

    名稱節(jié)點只支持一個備份節(jié)點。備份節(jié)點和檢查點節(jié)點是不共存的。將來會支持同時使用多個備份節(jié)點(毫無疑問這是非常有必要的,apache已經(jīng)意識到了)
    備份節(jié)點的配置方式同檢查點節(jié)點--- hdfs namenode -backup.

    備份節(jié)點的位置它的web界面通過dfs.namenode.backup.address 和dfs.namenode.backup.http-address來配置。

    通過使用備份節(jié)點,就可以在在非持久設(shè)備上運行名稱節(jié)點,并把狀態(tài)的持久責(zé)任全部委托給備份節(jié)點。為了達(dá)到這個目的,可以在啟動名稱節(jié)點的時候帶上-importCheckpoint參數(shù),同時dfs.namenode.edits.dir參數(shù)中可以設(shè)定一個非持久存儲目錄。
    為了能夠全面討論創(chuàng)建備份節(jié)點和檢查點節(jié)點背后的動機(jī),請參閱 https://issues.apache.org/jira/browse/HADOOP-4539

    中關(guān)于名稱節(jié)點部分內(nèi)容。

    10.導(dǎo)入檢查點

    如果編輯日志和映像文件的所有其它備份都無效(或者丟失),那么可以把最新的檢查點導(dǎo)入到名稱節(jié)點中。為了這么做,應(yīng)當(dāng):

  • 根據(jù)參數(shù)dfs.namenode.name.dir的設(shè)置,創(chuàng)建一個空間的目錄
  • 確定dfs.namenode.checkpoint.dir設(shè)定的檢查點路徑
  • 啟動名稱節(jié)點,大必須帶上-importCheckpoint選項。
  • 名稱節(jié)點從檢查點路徑下載元數(shù)據(jù)到本地的dfs.namenode.name.dir,名稱節(jié)點會檢查映像文件的一致性,但不做任何修改。

    The NameNode will upload the checkpoint from the dfs.namenode.checkpoint.dir directory and then save it to the NameNode directory(s) set in dfs.namenode.name.dir. The NameNode will fail if a legal image is contained in dfs.namenode.name.dir. The NameNode verifies that the image in dfs.namenode.checkpoint.dir is consistent, but does not modify it in any way.

    11.均衡器

    HDFS的數(shù)據(jù)可能并不總是均勻分布在各個數(shù)據(jù)節(jié)點上。一個通常的原因是新節(jié)點的加入。

    當(dāng)存放新數(shù)據(jù)塊的時候,名稱節(jié)點考慮多個情況以便選擇一個可以接受數(shù)據(jù)的數(shù)據(jù)節(jié)點,這些情況包括:

  • 在寫入數(shù)據(jù)塊的節(jié)點上保留一個復(fù)制(譯注:理所當(dāng)然)
  • 把部分復(fù)制放在不同機(jī)棧,避免整個機(jī)棧失效的時候,數(shù)據(jù)不會丟失
  • 至少有兩個復(fù)制在同一個機(jī)棧,這樣可以減少網(wǎng)絡(luò)I/O
  • 在集群數(shù)據(jù)節(jié)點之間均勻分布HDFS數(shù)據(jù)
  • 由于這些存在一定互斥的考慮,數(shù)據(jù)就可能無法在節(jié)點見均勻分布。HDFS給管理員提供了一個工具,可以分析塊的分布,并在各個數(shù)據(jù)節(jié)點之間重新均衡數(shù)據(jù)塊。

    hdfs balancer
    ????????? [-threshold <threshold>]
    ????????? [-policy <policy>]
    ????????? [-exclude [-f <hosts-file> | <comma-separated list of hosts>]]
    ????????? [-include [-f <hosts-file> | <comma-separated list of hosts>]]
    ????????? [-source [-f <hosts-file> | <comma-separated list of hosts>]]
    ????????? [-blockpools <comma-separated list of blockpool ids>]
    ????????? [-idleiterations <idleiterations>]

    詳細(xì)參考

    http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html#Balancer




    12.機(jī)棧敏感
    一個HDFS集群可以識別機(jī)棧拓?fù)?#xff08;機(jī)棧--節(jié)點存放的地方)。為了優(yōu)化數(shù)據(jù)的存儲和使用,正確配置拓?fù)溥€是很重要的。

    具體參考:http://www.cnblogs.com/lzfhope/p/7000456.html

    13.安全模式

    名稱節(jié)點啟動的時候,首先至于安全模式,目的是檢查復(fù)制情況,檢查期間名稱節(jié)點可讀不可修改,這意味著期間任意文件都不可修改。

    調(diào)整為正常模式之后,會把一些沒有正常復(fù)制的數(shù)據(jù)塊重新補充復(fù)制下。

    除了啟動的時候,自動設(shè)置為安全模式,也可以顯式(手工)把集群設(shè)置為安全模式-- hdfs dfsadmin -safemode


    14.fsck-文件檢查

    fsck專門檢查各種文件的問題。例如塊丟失,或者塊復(fù)制不足。

    不同于傳統(tǒng)文件系統(tǒng)的檢查工具,這個命令并不修正發(fā)現(xiàn)的錯誤。通常名稱節(jié)點自動修改絕大部分可以恢復(fù)的問題。

    默認(rèn)情況下,fsck會忽略打開的文件,但我們可以在執(zhí)行這個命令的時候通過選項控制是否忽略打開的文件。

    HDFS fsck命令并不是hadoop shell命令。

    15.fetchdt-獲取委托令牌

    HDFS支持fetchdet命令,以便獲取委托令牌,并把令牌存儲在本地文件系統(tǒng)。

    令牌可以讓用戶從一個不安全的客戶端訪問安全的(secure)服務(wù)器(例如名稱節(jié)點)。

    通過rpc或者h(yuǎn)ttps(通過kerberos)獲取令牌的工具,它們需要提供kerberos票。HDFS的fetchdt命令并非hadoop shell命令(譯注:同fsck一樣,雖然說不是hadoop shell命令,但我們一般都是那么任務(wù)的,只不過命令是以hdfs 開頭).

    當(dāng)通過工具獲得令牌之后,就可以不需要kerberos票就可以運行hdfs命令,前提是設(shè)置HADOOP_TOKEN_FILE_LOCATION環(huán)境變量。HADOOP_TOKEN_FILE_LOCATION指向令牌的存儲位置。



    16.恢復(fù)模式

    典型地,我們會配置多個元數(shù)據(jù)存儲位置。然后,如果一個存儲點壞了,那么我們可以從其它存儲點讀取。

    然而,如果只有一個存儲點,且壞了,我們能怎么辦? 在這種情況下,有一個特別的名稱節(jié)點啟動模式,稱為恢復(fù)模式,這個模式可能讓我們恢復(fù)大部分的數(shù)據(jù)。

    命令: hdfs namenode -recover

    當(dāng)處于恢復(fù)模式的時候,名稱節(jié)點以交互方式提示我們輸入一些信息,做出一些選擇。

    如果不想被提示,可以給出-force選項。這種情況下,如果有選擇,程序也只會選擇第一個項目。通常情況下,這可能是最合理的選擇。

    因為恢復(fù)模式可能導(dǎo)致數(shù)據(jù)丟失,所以應(yīng)該在執(zhí)行前備份編輯日志和映像文件。

    17.升級和回滾
    當(dāng)升級一個集群的時候,可能會出現(xiàn)一個新的bug或者一些不兼容現(xiàn)有軟件的情況。在任何的正式安裝中,肯定是選擇保護(hù)數(shù)據(jù),所以必須重啟hdfs。

    hdfs允許管理員回退到更早的hadoop版本和升級前的狀態(tài)。hdfs升級的內(nèi)容在hadoop升級wiki頁面有更詳細(xì)的說明。

    HDFS一個時間只能有一個備份。在升級之前,管理員需要移除現(xiàn)存的備份,命令是hdfs dfsadmin -finalizeUpgrade.

    下面簡要描述典型的升級過程:

  • 如果有備份節(jié)點,那么先移除
  • 停止集群,并部署新版本的hadoop
  • 運行sbin/start-dfs.sh -upgrade
  • 大部分時間,集群運行良好。一旦認(rèn)為新的HDFS運行良好(可能升級幾天之后),結(jié)束升級。注意,除非集群認(rèn)定升級完畢,否則刪除升級前的文件不會真正釋放數(shù)據(jù)節(jié)點上的空間
  • 如果要回滾到老版本
      • 停止集群,并部署早版本的hadoop
      • 在名稱節(jié)點上執(zhí)行hdfs namenode -rollback
      • 以回滾方式啟動集群 sbin/start-dfs.sh -rollback

    當(dāng)升級到一個新版本hdfs的時候,有必要刪除在新版hdfs中保留的的路徑(也可以重新命名).如果名稱節(jié)點在升級過程遇到一個保留的路徑,那么它會輸入類似如下的錯誤信息:

    /.reserved is a reserved path and .snapshot is a reserved path component in this version of HDFS. Please rollback and delete or rename this path, or upgrade with the -renameReserved [key-value pairs] option to automatically rename these paths during upgrade.

    可以通過設(shè)定 -upgrade -renameReserved來繞過以上問題。例如,如果想重新命名所有.snapshot的路徑為.my-snapshot,用戶可以如下操作:

    -upgrade -renameReserved .snapshot=.my-snapshot

    如果有多個目錄,可以如下:

    -upgrade -renameReserved .snapshot=.my-snapshot,.reserved=.my-reserved

    對于重命名過程,有一些警告。我們建議,如果可能,應(yīng)該在升級前保存名稱空間(通過 hdfs dfsadmin -saveNamespace).

    這是因為數(shù)據(jù)可能不一致,如果編輯日志操作執(zhí)行一個自動改名的文件。

    18.數(shù)據(jù)節(jié)點熱交換磁盤

    數(shù)據(jù)節(jié)點支持熱交換磁盤。用戶可以添加或者更換磁盤,而不用關(guān)閉數(shù)據(jù)節(jié)點。

    下面簡要描述熱交換磁盤過程:

  • 如果有新的存儲目錄,那么用戶應(yīng)該格式化和掛載
  • 修改dfs.datanode.data.dir設(shè)置,加入新的路徑
  • 執(zhí)行dfsadmin -reconfig datanode host:port start,以啟動重配置路徑。然后,使用dfsadmin -reconfig datanode host:port status查詢重配置任務(wù)的狀態(tài)
  • 一旦重新配置完成,用戶就可以安全的卸載有關(guān)目錄,并物理移除磁盤
  • 譯注:這個小節(jié)告訴我們,配置一個單機(jī)的時候,存儲數(shù)據(jù)的磁盤應(yīng)該和操作系統(tǒng)磁盤有可能的話,還是分開。即一臺電腦上最好有兩塊硬盤,而且最好支持熱拔插。

    ?

    19.文件權(quán)限和安全

    文件系統(tǒng)的權(quán)限類似linux的。目前,安全僅限于簡單的文件權(quán)限。啟動名稱節(jié)點的用戶被當(dāng)作HDFS的超級用戶。

    將來版本的HDFS會支持網(wǎng)絡(luò)應(yīng)用協(xié)議,例如用戶的kerberos授權(quán)和數(shù)據(jù)傳輸加密。詳細(xì)的信息參與權(quán)限指引。
    譯注:用戶的kerberos授權(quán),好像很早版本就有了,是否原文整理的時候沒有糾正?

    20.可伸縮

    hadoop當(dāng)前可以構(gòu)建一個成千上萬節(jié)點的集群。這個頁面powerdBy列出了知名的用戶。

    hdfs有一個名稱節(jié)點。目前數(shù)據(jù)節(jié)點上的可用內(nèi)存是主要的伸縮限制。在非常大的集群上,提高平均文件大小會提升集群的大小。默認(rèn)的配置可能不適用于非常大集群。FAQ WIKI提供了大型集群的建議配置。

    譯注:hadoop也在不斷升級中。

    訪問 https://wiki.apache.org/hadoop/FAQ ,可以獲得許多可能有益的幫助。

    作為hadoop的核心,了解hdfs是唯一重要的事情。mr在很多小型的集群或者h(yuǎn)adoop應(yīng)用中,作用并不是很大。在將來的硬件情況下,mr更加沒有價值。

    轉(zhuǎn)載于:https://www.cnblogs.com/lzfhope/p/7002269.html

    總結(jié)

    以上是生活随笔為你收集整理的构建高可靠hadoop集群之0-hadoop用户向导的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。