Hadoop配置hdfs-site.xml詳解

mo尘發表於2024-03-14

<-- 資料節點訪問令牌標識 -->
<property>
<name>dfs.block.access.token.enable</name>
<value>true</value>
</property>

<-- 塊順序報告的間隔時間 -->
<property>
<name>dfs.blockreport.initialDelay</name>
<value>120</value>
</property>

<-- 塊大小為128M 對大多數生產環境來說是一個比較穩妥的值。因為該值決定了MR的預設map數,也會影響NN消耗的記憶體量, 需要謹慎修改 -->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>

<-- 配置客戶端Failover proxy provider類,該類使用傳遞的協議建立NameNode proxy。 -->
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<-- 短路本地讀取 -->
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>

<-- 短路讀取快取大小 -->
<property>
<name>dfs.client.read.shortcircuit.streams.cache.size</name>
<value>4096</value>
</property>

<-- 客戶端重試策略 -->
<property>

<name>dfs.client.retry.policy.enabled</name>
<value>false</value>

</property>

<-- HDFS 超級使用者 hdfs -->
<property>
<name>dfs.cluster.administrators</name>
<value> hdfs</value>
</property>

<-- DataNode 服務的地址 -->
<property>
<name>dfs.datanode.address</name>
<value>0.0.0.0:1019</value>
</property>

<-- balancer hdfs移動資料的速度 HDFS做均衡時使用的最大頻寬,預設為1048576,即1MB/s,對大多數千兆 甚至萬兆頻寬的叢集來說過小。 -->
<property>
<name>dfs.datanode.balance.bandwidthPerSec</name>
<value>6250000</value>
</property>

<-- 設定 DataNode 節點儲存資料檔案的本地路徑,可以透過逗號分隔指定多個路徑 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/hadoop/hdfs/data</value>
<final>true</final>
</property>

<-- 當DataNode向NameNode彙報可用的硬碟大小的時候,它會把所有dfs.data.dir所列出的可用的硬碟大小總和發給NameNode。由於mapred.local.dir經常會跟DataNode共享可用的硬碟資源,因此我們需要為Mapreduce任務保留一些硬碟資源。dfs.datanode.du.reserved定義了每個dfs.data.dir所定義的硬碟空間需要保留的大小,以byte為單位。預設情況下,該值為0,也就是說HDFS可以使用每個資料硬碟的所有空間,節點硬碟資源耗盡時就會進入讀模式。因此,建議每個硬碟都為map任務保留最少10GB的空間,如果每個Mapreduce作業都會產生大量的中間結果,或者每個硬碟空間都比較大(超過2TB),那麼建議相應的增大保留的硬碟空間。我在生產環境中設定該值的大小為50G位元組! -->
<property>
<name>dfs.datanode.du.reserved</name>
<value>9350827008</value>
</property>

<-- DataNode 決定停止資料節點提供服務允許卷的出錯次數,0 則表示任務卷出錯都要停止資料節點 -->
<property>
<name>dfs.datanode.failed.volumes.tolerated</name>
<value>0</value>
<final>true</final>
</property>

<-- DataNode 的RPC伺服器地址和埠 -->
<property>
<name>dfs.datanode.ipc.address</name>
<value>0.0.0.0:8010</value>
</property>

<-- DataNode 進行檔案傳輸時的最大執行緒數 -->
<property>
<name>dfs.datanode.max.transfer.threads</name>
<value>16384</value>
</property>

<-- DataNode 本地檔案系統到 UNIX域套接字的路徑,用於 DataNode 和 本地HDFS客戶端之間的通訊,該套接字用於 Short circuit Read -->
<property>
<name>dfs.domain.socket.path</name>
<value>/var/lib/hadoop-hdfs/dn_socket</value>
</property>

<-- DataNode 本地檔案系統到 UNIX域套接字的路徑,用於 DataNode 和 本地HDFS客戶端之間的通訊 -->

<property>
<name>dfs.encrypt.data.transfer.cipher.suites</name>
<value>AES/CTR/NoPadding</value>
</property>

<-- HA自動的故障轉移開啟 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>

<-- 如果出現故障並且fencing方法返回false,則會繼續執行shell(true),從而active/standby自動切換。 fencing方法返回true,則不會執行shell。-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>shell(/bin/true)</value>
</property>

<-- mycluster 叢集的兩個namenode 。-->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>

<-- DataNode 的心跳時間 ,預設為3s timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval -->
<property>
<name>dfs.heartbeat.interval</name>
<value>3</value>
</property>

<-- 指定連線NameNode主機的 黑名單 -->
<property>
<name>dfs.hosts.exclude</name>
<value>/etc/hadoop/conf/dfs.exclude</value>
</property>

<-- 為了啟用SSL,必須設定dfs.http.policy=HTTPS_ONLY或者是HTTP_AND_HTTPS(在hdfs-site.xml)。 -->
<property>
<name>dfs.http.policy</name>
<value>HTTP_ONLY</value>

</property>

<-- https服務的埠 -->
<property>
<name>dfs.https.port</name>
<value>50470</value>
</property>

<-- journalnode 本地儲存路徑 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/hadoop/hdfs/journalnode</value>
</property>

<-- HTTP服務 -->
<property>
<name>dfs.journalnode.http-address</name>
<value>0.0.0.0:8480</value>
</property>

<-- journalnode HTTP服務 -->
<property>
<name>dfs.journalnode.https-address</name>
<value>0.0.0.0:8481</value>
</property>

<-- HDFS檔案的訪問時間精確到此值。預設值為1小時。設定為0將禁用HDFS的訪問時間。 -->
<property>
<name>dfs.namenode.accesstime.precision</name>
<value>0</value>
</property>

<-- HDFS 許可權控制開啟 -->
<property>

<name>dfs.namenode.acls.enabled</name>

<value>true</value>

</property>

<-- HDFS檔案的訪問時間精確到此值。預設值為1小時。設定為0將禁用HDFS的訪問時間。 -->
<property>
<name>dfs.namenode.audit.log.async</name>
<value>true</value>
</property>

<-- 指示是否避免讀取“過時”的資料節點(DataNode),這些資料節點(DataNode)的心跳訊息在指定的時間間隔內未被名稱節點(NameNode)接收。過時的資料節點(DataNode)將移動到返回供讀取的節點列表的末尾。 -->
<property>
<name>dfs.namenode.avoid.read.stale.datanode</name>
<value>true</value>
</property>

<-- 指示超過失效 DataNode 時間間隔 NameNode 未收到檢測訊號資訊時是否避免寫入失效 DataNode。寫入應避免使用失效 DataNode,除非多個已配置比率 (dfs.namenode.write.stale.datanode.ratio) 的 DataNode 標記為失效 -->
<property>
<name>dfs.namenode.avoid.write.stale.datanode</name>
<value>true</value>
</property>

<-- 每隔一段時間,會由secondary namenode將namenode上積累的所有edits和一個最新的fsimage下載到本地,並載入到記憶體進行merge,這個過程稱為checkpoint,secondary namenode的本地工作目錄 -->
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/hadoop/hdfs/namesecondary</value>
</property>

<-- namenode checkpoint 路徑 -->

<property>
<name>dfs.namenode.checkpoint.edits.dir</name>
<value>${dfs.namenode.checkpoint.dir}</value>
</property>

<-- 兩次checkpoint之間的時間間隔3600秒 -->
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>21600</value>
</property>

<-- 兩次checkpoint之間最大的操作記錄 -->
<property>
<name>dfs.namenode.checkpoint.txns</name>
<value>1000000</value>
</property>

<-- 是否啟用公平鎖機制 -->
<property>
<name>dfs.namenode.fslock.fair</name>
<value>false</value>
</property>

<-- NameNode 處理rpc請求的執行緒數,預設為10 -->
<property>
<name>dfs.namenode.handler.count</name>
<value>200</value>
</property>

<-- dfs namenode web ui使用的監聽地址和基本埠。可以在etc/hadoop/hdfs-site.xml進行指定設定。 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hdp101:50070</value>
<final>true</final>
</property>

<-- 指定一個本地的檔案系統,決定NameNode 在何處存放fsimage -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/hadoop/hdfs/namenode</value>
<final>true</final>
</property>


<-- 指定一個本地的檔案系統,預設是開啟的 -->
<property>
<name>dfs.namenode.name.dir.restore</name>
<value>true</value>
</property>

<-- NameNode RPC 繫結的地址 -->
<property>
<name>dfs.namenode.rpc-address</name>
<value>hdp101:8020</value>
</property>

<-- 安全模式下的HDFS只支援後設資料的操作讀取,不支援檔案的建立、刪除等操作,同時會對資料塊進行大量校驗,導致資源的分配和申請耗時遠超預期。叢集中滿足正常配置的資料塊比例 ,如果是為了防止某些異常資料導致始終校驗不過的情況,可以嘗試將上面的dfs.namenode.safemode.threshold-pct引數調為0或比0小的值後重啟NameNode,這樣永遠不會進入安全模式 -->
<property>
<name>dfs.namenode.safemode.threshold-pct</name>
<value>0.99f</value>
</property>

<-- 資料節點標記為“過時”的時間間隔, 預設為300000ms, “過時”的節點不一定“死亡“。預設五分鐘沒有心跳就過時,十分鐘沒有心跳死亡 -->
<property>
<name>dfs.namenode.stale.datanode.interval</name>
<value>30000</value>
</property>

<-- NameNode 啟動後不進行塊刪除, 開啟HDFS非同步刪除機制,增加資料恢復機率 -->
<property>

<name>dfs.namenode.startup.delay.block.deletion.sec</name>
<value>3600</value>
</property>

<-- 當全部DN被標記為髒DN的比率高於此閥值,停止不寫資料到髒DN的策略,以免造成熱點問題(有效的,可寫的DN太少,壓力太大), dfs.namenode.avoid.write.stale.datanode -->
<property>
<name>dfs.namenode.write.stale.datanode.ratio</name>
<value>1.0f</value>
</property>

<-- 預設為 true。如果為 true,則啟用HDFS的許可權檢查,否則不啟用 -->
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>

<-- 預設 hdfs ,指定 HDFS 的超級使用者組的組名,可按需設定 -->
<property>
<name>dfs.permissions.superusergroup</name>
<value>hdfs</value>
</property>

<-- 塊副本數,預設為3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<-- 最大塊副本數 -->
<property>
<name>dfs.replication.max</name>
<value>50</value>
</property>

<-- 在NN和DN上開啟WebHDFS (REST API)功能 -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
<final>true</final>

</property>

<-- 在建立檔案和目錄時使用此umask值(使用者掩碼) 例如:"022" (8進位制,等同於以符號表示的u=rwx,g=r-x,o=r-x) 8進位制的掩碼,和實際許可權設定值正好相反 -->
<property>
<name>fs.permissions.umask-mode</name>
<value>022</value>
</property>

<-- 啟用該功能後,會將其他欄位寫入用於審計粗粒度操作的名稱節點審計日誌記錄。 -->
<property>
name>hadoop.caller.context.enabled</name>
<value>true</value>
</property>

<-- 為 HDFS 啟用包含檔案管理 -->
<property>
<name>manage.include.files</name>
<value>false</value>
</property>

<-- 預設情況下,匯出可以由任何客戶端裝入。您必須更新此屬性才能控制訪問許可權。值字串包含機器名稱和訪問許可權,由空格字元分隔。計算機名稱可以是單主機,萬用字元或IPv4網路格式。訪問許可權使用rw或ro指定對匯出的readwrite或readonly訪問 -->
<property>
<name>nfs.exports.allowed.hosts</name>
<value>* rw</value>
</property>

<-- 此目錄用於在寫入HDFS之前臨時儲存無序寫入。需要確保目錄有足夠的空間 -->
<property>
<name>nfs.file.dump.dir</name>
<value>/tmp/.hdfs-nfs</value>
</property>

相關文章