Hadoop經常使用操做

Hadoop經常使用操做

一、Hadoop安裝

node

二、Hadoop配置

web

三、Hadoop多目錄配置

namenode和datanode節點下均可以進行多個目錄的配置,可是意義不一樣。namenode的多目錄配置是副本策略,保證數據可靠性,datanode多目錄配置是對容量進行擴容,因爲datanode已經有副本機制了。shell

[hdfs-site.xml]centos

<!-- namenode多目錄配置 -->
<property>
  <name>dfs.namenode.name.dir</name>
  <value>file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp.dir}/dfs/name2</value>
</property>
<!-- datanode多目錄配置 -->
<property>
  <name>dfs.datanode.data.dir</name>
  <value>file://${hadoop.tmp.dir}/dfs/data1,file://${hadoop.tmp.dir}/dfs/data2</value>
</property>

其中${hadoop.tmp.dir}是hadoop臨時目錄配置。安全

[core-site.xml]ssh

<property>
  <name>hadoop.tmp.dir</name>
  <value>/home/centos/hadoop/ha</value>
</property>

四、hadoop配額管理

配額是對空間和目錄個數進行限制,放置目錄下的文件個數或大小過於龐大。所以配額分爲空間配額和目錄配額。oop

  • 目錄配額ui

    限制目錄所含文件或文件夾的個數。若是爲1,則保持目錄爲空(能夠認爲將目錄自己也包含在內)。spa

    #設置配額
    $>hdfs dfsadmin -setQuota 1 data
    #清除配額
    $>hdfs dfsadmin -clsQuota data

  • 空間配額日誌

    因爲每份文件都有三個副本,空間配額計算時也將副本數計算在內,加上每一個數據塊文件默認爲128m,所以空間配額至少要指定384m的空間值。即128 * 3 = 384。

    #該設置會出錯,說至少是384m空間
    $>hdfs dfsadmin -setSpaceQuota 384m data

五、快照

快照是對hdfs的目錄進行瞬間照相,內部採用差別化存儲機制。所以不會空間形成大量的消耗。這能夠經過查看blockid來考察。默認狀況下目錄是不容許快照的,所以若是要使用該功能,還須要對特定目錄先啓用快照。

#啓用快照
$>hfds dfsadmin -allowSnapshot data
#禁用快照
$>hfds dfsadmin -disallowSnapshot data

#建立快照
$>hdfs dfs -createSnapshot data sp1
#刪除
$>hdfs dfs -deleteSnapshot data sp1
#重命名
$>hdfs dfs -renameSnapshot data sp1 sp2

注意:刪除目錄時,若是是可快照目錄而且有快照,須要先刪除快照,再刪除目錄。

六、元數據管理

6.1 鏡像文件查看

鏡像文件存放的是hdfs的元數據,是最重要的數據文件。能夠經過多種格式進行查看。內容包括目錄、權限、配額、數據塊等信息。

#i:input o:output p:處理方式
$>hdfs oiv -i fsimage_0000000000000207400 -o ~/1.xml -p XML

6.2 編輯日誌查看

對hdfs的每一個寫操做都會記錄到編輯日誌中,查看方式同鏡像相似。

$>hdfs oev -i edits_0000000000000200088-00000000000002000199 -o 2.xml -p XML

6.3 鏡像控制

2nn節點對nn節點會進行週期性檢查,以完成元數據的備份與融合。具體能夠經過如下屬性進行控制:

  1. dfs.namenode.checkpoint.period

    檢查週期,多長時間生成一次新的檢查點,默認爲3600秒,即1小時。

  2. dfs.namenode.checkpoint.txns

    操做記錄數控制,默認1000,000,發生這些次操做也會生成新的檢查點,即時時間不到1小時。

  3. dfs.namenode.checkpoint.check.period

    <property>
      <name>dfs.namenode.checkpoint.check.period</name>
      <value>60</value>
      <description>The SecondaryNameNode and CheckpointNode will poll the NameNode
        every 'dfs.namenode.checkpoint.check.period' seconds to query the number
        of uncheckpointed transactions.
      </description>
    </property>

  4. dfs.namenode.num.checkpoints.retained

    <property>
      <name>dfs.namenode.num.checkpoints.retained</name>
      <value>2</value>
      <description>The number of image checkpoint files (fsimage_*) that will be retained by
        the NameNode and Secondary NameNode in their storage directories. All edit
        logs (stored on edits_* files) necessary to recover an up-to-date namespace from the oldest retained
        checkpoint will also be retained.
      </description>
    </property>

七、舊節點下線操做

7.1 介紹

舊節點下線操做,須要經過黑白名單進行控制。下線時主要完成舊節點數據的安全轉移。成功後,就能夠安全下線了。hdfs的黑白名單由dfs.hosts.exclude和dfs.hosts控制,yarn的黑白名單由yarn.resourcemanager.nodes.exclude-path和yarn.resourcemanager.nodes.include-path控制。

  • dfs.hosts

    白名單,能夠連到namenode的datanode節點列表。

  • dfs.hosts.exclude

    黑名單,不容許鏈接到namenode的datanode節點列表。

黑白名單組合規則:

dfs.hosts dfs.hosts.exclude 結果
NO NO Not
NO YES Not
YES NO YES
YES YES YES並將退役

7.2 HDFS舊節點下線操做

  1. 準備黑白名單

    • dfs_exclude.conf
    • dfs_include.conf
  2. 配置hdfs-site.xml的黑白名單屬性

    [hdfs-site.xml]

    <!-- 白名單 -->
    <property>
      <name>dfs.hosts</name>
      <value>/soft/hadoop/etc/full/dfs_include.conf</value>
    </property>
    <!-- 黑名單 -->
    <property>
      <name>dfs.hosts.exclude</name>
      <value>/soft/hadoop/etc/full/dfs_exclude.conf</value>
    </property>

  3. 添加退役節點地址到黑名單,不要更新白名單

    [dfs_exclude.conf]

    s102

  4. 刷新nn

    $>hdfs dfsadmin -refreshNodes
  5. 進入webui,查看退役的節點是否顯式爲"退役中",開始複製數據塊到其餘節點。

    http://s101:50070/
  6. 一旦複製完成,狀態顯式"Decommissioned",中止退役節點

  7. 從白名單中刪除退役節點

  8. 再次刷新節點

    $>hdfs dfsadmin -refreshNodes
  9. 從slaves中刪除退役節點

八、HDFS新節點上線

新節點上線時,須要先配置ssh和hadoop軟件包。上線實操過程以下:

  1. 配置新節點ssh和安裝hadoop軟件包以及配置環境變量

  2. 添加新地址到白名單

  3. 刷新名稱節點

    $>hdfs dfsadmin -refreshNodes
  4. 更新slaves文件

  5. 單獨啓動新節點的datanode進程

    $>hadoop-daemon.sh start datanode
  6. 檢查webui

九、YARN舊節點下線

  1. 準備黑白名單

    yarn_exclude.conf

    yarn_include.conf

  2. 配置yarn-site.xml的黑白名單屬性

    [yarn-site.xml]

    <!-- yarn白名單 -->
    <property>
      <name>yarn.resourcemanager.nodes.include-path</name>
      <value>/soft/hadoop/etc/full/yarn_include.conf</value>
    </property>
    <!-- yarn黑名單 -->
    <property>
      <name>yarn.resourcemanager.nodes.exclude-path</name>
      <value>/soft/hadoop/etc/full/yarn_exclude.conf</value>
    </property>
  3. 添加退役節點地址到黑名單,不要更新白名單

    [yarn-exclude.conf]

    s102

  4. 刷新yarn

    $>yarn rmadmin -refreshNodes
  5. 進入webui,查看退役的節點是否顯式爲"退役中",開始複製數據塊到其餘節點。

    http://rm:8088/
  6. 一旦複製完成,狀態顯式"Decommissioned",中止退役節點

  7. 從白名單中刪除退役節點

  8. 再次刷新節點

    $>yarn rmadmin -refreshNodes
  9. 從slaves中刪除退役節點

相關文章
相關標籤/搜索