Hadoop學習--完全分佈式部署(pdsh/include&exclude/安全模式/均衡器/快照/回收站)--day02

  1. 安裝準備工作

    準備5臺服務器,hadoop01部署namenode resourcemanager,hadoop02-hadoop03是datanode,hadoop04部署secondarynamenode

   上傳hadoop-2.7.3.tar.gz  /soft

   虛擬機Java安裝完畢

        卸載原有的openjdk的版本

        # java -version如果看到有openjdk的字樣就是說明是系統帶的openjdk版本

        # rpm -qa|grep jdk

        用類似如下的方法刪除上面的rpm包

           #rpm -e --nodeps   java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

        檢查是否還有jdk1.5的版本,有就刪除

        #rpm -e --nodeps java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64

        #解壓新下載的jdk的安裝包

        配置環境變量

2.解壓hadoop

   $tar -xzvf hadoop-2.7.3.tar.gz

3.配置環境變量

   編輯/etc/profile,添加如下內容

   export JAVA_HOME=/soft/jdk1.8.0_111

   export HADOOP_HOME=/soft/hadoop-2.7.3

   export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

   並且把以上的內容寫到/home/hadoop/.bashrc中

4.配置SSH免密碼登陸

   $ssh-keygen -t rsa (四個回車)

   執行完這個命令後,會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)

   將公鑰拷貝到要免登陸的機器上

   $cd /home/hadoop/.ssh

   $cat id_rsa.pub >> ~/.ssh/authorized_keys

   $chmod 600 authorized_keys  

   

   mkdir ./ssh

   chmod 700 ~/.ssh cd ~/.ssh

   ssh-keygen -t rsa 

   cd ~/.ssh

   cat /root/.ssh/id_rsa.pub > authorized_keys

   chmod 600 ~/.ssh/authorized_keys

   scp authorized_keys userB:/root/.ssh/

   注:A 爲管理主機,B爲被管理主機。

5.安裝pdsh工具

  #tar -jxvf pdsh-2.29.tar.bz2

  #cd pdsh-2.29

  #./configure --with-ssh --with-rsh --with-mrsh --with-mqshell \

--with-qshell  --with-dshgroups --with-machines=/etc/pdsh/machines

  #make

  #make install

  查看pdsh的版本號已經可使用的模塊信息

  $pdsh -v

  查看pdsh顯示當前所有加載的模塊信息

  $pdsh -L

  命令查看user001,user002,user003主機上的時間,通過SSH

  $pdsh -w ssh:user00[1-3] "date"

  -g參數制定主機組,此參數用來指定一組遠程主機,在編譯pdsh時可以通過

  “--with-dshgroups”參數來激活此選項,默認可以將一組主機列表寫入一個

  文件中並放到本地主機的~/.dsh/group或/etc/dsh/group目錄下,這樣就可

  以通過“-g”參數調用了。

  $pdsh -R ssh -g userhosts "date" 

  其中“userhosts”是一個主機列表文件,可以將此文件放在~/.dsh/group或

  /etc/dsh/group目錄下

  $pdcp -R ssh -w vm[2-5] -r ~/mpi  ~/

  $pdcp -R ssh -g hostname -r ~/mpi  ~/

6.本地eclipse環境設置

  (1).首先解壓hadoop-2.7.3.tar.gz ,創建_libs/_source/_test-source/_test-libs這四個文件夾

  (2).進入hadoop-2.7.3目錄中,搜索jar包文件,先把搜索到的jar包文件全部複製到_libs文件夾下

  (3).進入_libs文件夾下,搜索帶source文件名的包,搜索到後剪切全部放入_source文件夾下

  (4).從_sources文件夾中搜索test-source的jar包,搜索到後剪切全部放入_test-source文件夾下

  (5).注意上述四個文件夾要放在同一級的目錄下

  (6).最後在_libs文件夾中搜索test的jar包,剪切後放入到新建的_test-libs包下

  (7).打開eclipse,新建一個項目,配置buildpath目錄

  (8).添加外部的jar包,找到_libs文件夾中所有的jar包,添加

  (9).對於的源碼信息要關聯時,點擊Attach Source到_source文件夾中對應的包

7.注意配置文件的內容對於jar包的位置

  (1).core-default.xml

      ...\_libs\hadoop-common-2.7.2.jar

  (2).hdfs-default.xml

      ...\_libs\hadoop-hdfs.2.7.2.jar

  (3).mapred-default.xml

      ...\_libs\hadoop-yarn-common-2.7.2.jar

  (4).yarn-default.xml

      ...\_libs\hadoop-yarn-common-2.7.2.jar

  (5).注意copy上面所有的內容到_conf文件夾中新建對於的同名的文件中

      以便查找配置項進行配置

8.配置輔助名稱節點

   從_conf文件中查找.xml文件結尾的內容中secondary字樣,找到配置輔助名稱節點的內容項

   在_conf\hdfs-default.xml中,發現有dfs.namenode.secondary.http-address這個key字樣

   修改hdfs-site.xml文件內容,增加如下內容

   <name>dfs.namenode.secondary.http-address</name>

   <value>hadoop05:50090</value>

   <description>

   The secondary namenode http server address and port.

   </description>     

9.配置hadoop臨時目錄的參數

   從_conf文件中查找.xml文件結尾的內容中local和hadoop.tmp.dir字樣,找到配置項內容的位置

   在_conf\core-default.xml中,發現有<name>hadoop.tmp.dir</name>的字段

   修改core-site.xml,添加如下的內容(具體目錄可以自己定義,這裏暫時沒有改變)

   <property>

   <name>hadoop.tmp.dir</name>

   <value>/tmp/hadoop-${user.name}</value>

   <description>A base for other temporary directories.</description>

   </property>

10.配置namenode的數據存放目錄

   同理在_conf\hdfs-default.xml中找到dfs.namenode.name.dir

   修改hdfs-site.xml文件內容,增加如下內容

   <property>

   <name>dfs.namenode.name.dir</name>

   <value>file://${hadoop.tmp.dir}/dfs/name</value>

   <description>Determines where on the local filesystem the DFS name node

      should store the name table(fsp_w_picpath).  If this is a comma-delimited list

      of directories then the name table is replicated in all of the

      directories, for redundancy. </description>

   </property>

11.同理配置datanode的數據存放目錄

   修改hdfs-site.xml文件內容,增加如下內容

   <property>

   <name>dfs.datanode.data.dir</name>

   <value>file://${hadoop.tmp.dir}/dfs/data</value>

   </property>

12.同理配置secondarynamenode的數據目錄

   修改hdfs-site.xml文件內容,增加如下內容

   <property>

   <name>dfs.namenode.checkpoint.dir</name>

   <value>file://${hadoop.tmp.dir}/dfs/namesecondary</value>

   </property>   

13.修改默認塊大小

   修改hdfs-site.xml文件內容,增加如下內容

   <property>

   <name>dfs.blocksize</name>

   <value>134217728</value>

   </property>

14.修改core-site.xml,添加如下信息

   <configuration>

   <property>

   <name>fs.defaultFS</name>

   <value>hdfs://hadoop01/</value>

   </property>

   </configuration>

15.修改hdfs-site.xml

   <property>

   <name>dfs.replication</name>

   <value>3</value>

   </property>  

16.修改mapred-site.xml

   <property>

   <name>mapreduce.framework.name</name>

   <value>yarn</value>

   </property>

17.修改yarn-site.xml

   <property>

   <name>yarn.resourcemanager.hostname</name>

   <value>hadoop01</value>

   </property>

   <!-- reducer獲取數據的方式 -->

   <property>

   <name>yarn.nodemanager.aux-services</name>

   <value>mapreduce_shuffle</value>

   </property>

18.修改slaves

    hadoop02

    hadoop03

    hadoop04

19.命令手動啓動namenode和datanode,其實hadoop-daemons.sh腳本是用到了hadoop-daemon.sh的腳本

   該命令只能在namenode的機器上執行

   $hadoop-daemon.sh start namenode  //啓動namenode進程

   $hadoop-daemon.sh stop  namenode  //關閉namenode進程

   

   $hadoop-daemon.sh start datanode  //在datanode節點上啓動該節點上的datanode進程

   $hadoop-daemon.sh stop datanode

   $hadoop-daemons.sh start datanode  //可以在任何namenode/datanode/secondarynamenode上執行

   $hadoop-daemons.sh stop datanode

   $hadoop-daemon.sh start secondarynamenode  //只能在secondarynamenode上執行啓動進程

   

   和該命令類似的有yarn-daemons.sh 和yarn-daemon.sh

20.查看節點信息位置

   $hdfs getconf -namenodes  //查看集羣中namenode是哪臺機器

   $hdfs getconf -secondarynamenodes //查看集羣中secondarynamenode是哪臺機器

   

21.端口信息

   HDFS中配置的namenode

      rpc              //8020

      webui            //50070

   datanode

      rpc              //8032

      webui            //50075

   secondarynamenode   

      webui            //50090

   historyServer 

      webui            //19888

   resourcemanager

      webui            //8088

   nodemanager

      webui            //8042

   linux系統中可用netstat -tuanlp這個命令來查看所有的內部端口、外部端口連接、

      TCP/UDP的所有信息

22.修改日誌存放路徑

   默認是在tar包目錄下面的log文件夾

   修改tar包etc配置文件下的hadoop-env.sh文件夾

   添加:

        export HADOOP_LOG_DIR=/var/log/hadoop

   查看分析日誌首先看的是.log文件, .out文件默認保留5個,會自動滾動覆蓋

23.四大模塊對於的配置文件

   (1).common

        hadoop-common-xxx.jar

        core-site.xml

        core-default.xml

   (2).hdfs

        hdfs-site.xml

        hdfs-default.xml

   (3).mapreduce

        mapred-site.xml

        mapred-default.xml

   (4).yarn      

        yarn-site.xml

        yarn-default.xml

24.Namenode和Datanode數據存放位置的說明

   (1).Namenode的數據存放位置配置

      在hdfs-default.xml中有如下參數可以修改,可以制定多個目錄,這樣就會在本機存在

        多個目錄存放的一樣的namenode的鏡像文件數據,一定程度上保證了數據的安全性,並行寫

      <property>

      <name>dfs.namenode.name.dir</name>

      <value>file://${hadoop.tmp.dir}/dfs/name</value>

      <description>Determines where on the local filesystem the DFS name node

      should store the name table(fsp_w_picpath).  If this is a comma-delimited list

      of directories then the name table is replicated in all of the

      directories, for redundancy. </description>

      </property>

      名稱配置多個目錄在於更可靠;

      每個目錄存放的內容都是相同的.

   (2).Datanode的數據存放位置配置

       數據節點配置多個目錄,不是副本;

       每個目錄存放的內容不同,用","號分割

       在hdfs-default.xml中有如下參數可以修改

       <property>

       <name>dfs.datanode.data.dir</name>

       <value>file://${hadoop.tmp.dir}/dfs/data</value>

       <description>Determines where on the local filesystem an DFS data node

       should store its blocks.  If this is a comma-delimited

       list of directories, then data will be stored in all named

       directories, typically on different devices. The directories should be tagged

       with corresponding storage types ([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK]) for HDFS

       storage policies. The default storage type will be DISK if the directory does

       not have a storage type tagged explicitly. Directories that do not exist will

       be created if local filesystem permission allows.

       </description>

       </property>

   (3).secondarynamenode數據存放位置

      可以存放多個目錄,存放的效果和存放namenode數據的多個目錄都是一樣的

      <property>

      <name>dfs.namenode.checkpoint.dir</name>

      <value>file://${hadoop.tmp.dir}/dfs/namesecondary</value>

      <description>Determines where on the local filesystem the DFS secondary

          name node should store the temporary p_w_picpaths to merge.

          If this is a comma-delimited list of directories then the p_w_picpath is

          replicated in all of the directories for redundancy.

      </description>

      </property>

25.Commission|Decommission服役和退役節點的配置以及節點refreshNodes

   三個配置文件的關係:

       salves文件規定的主機是啓動的時候允許啓動相應的datanode進行,但是不能保證是否

       能夠連接到namenode上。

       真正保證能夠連接到namenode上的配置文件是在hdfs-defaults.xml中的dfs.hosts這個參數值決定的,

       這個值指向的是一個文件,文件中記錄了哪些主機允許連接到namenode上,如果爲空,所有的機器都是

       被允許的。

       在hdfs-defaults.xml中有個dfs.hosts.exclude參數,這個參數上配置的文件決定了排除哪些機器連接到

       namenode的,也就是不允許連接到namenode上面的機器列表。

       當include文件和exclude文件同時存在的時候:

       include   exclude    描述

       no        no         數據節點無法連接到名稱節點

       no        yes        數據節點無法連接到名稱節點

       yes       no         數據節點可以連接到名稱節點

       yes       yes        數據節點可以連接到名稱節點,但會退役

       

   測試:

   編輯配置文件

      [hdfs-site.xml]

      dfs.hosts=/soft/hadoop/etc/dfs-hosts-include.conf

      dfs.hosts.exclude=/soft/hadoop/etc/dfs-hosts-exclude.conf

   分發hdfs-site.xml文件到所有的節點

   刷新節點,在namenode上面執行

      $hdfs  dfsadmin  -refreshNodes   

26.查看VERSION數據

   clusterID=xxx (namenode==datanode)

   storageID=xxx (datanode)

   cTime:集羣創建時間 

   acl:訪問控制列表 

   layoutVersion:是一個負整數,描述HDFS的永久性的數據結構(佈局)版本

   namespaceID:是文件系統的唯一的標識符,是文件系統首次格式化時設置的,任何datanode在註冊到namenode之前

               都不知道namepaceID值,因此namenode可以使用該屬性鑑別新建的datanode

27.安全模式

   (1).namenode啓動時,合併p_w_picpath和edit成新的p_w_picpath,併產生新的edit log

   (2).整個過程出於safe模式下,客戶端只能讀取

   (3).namenode安全模式操作

       $hdfs dfsadmin -safemode get //查看是什麼狀態

       $hdfs dfsadmin -safemode enter //進入

       $hdfs dfsadmin -safemode leave //離開

       $hdfs dfsadmin -safemode wait  //等待

   (4).執行saveNamespace命令使得p_w_picpath文件和edit立即進行合併,生成新的p_w_picpath文件和edit日誌,但是2nn還是老的

28.手動保存鏡像文件

   $hdfs dfsadmin -fetchImage ~/  //保存鏡像至當前home目錄下

   可以在任何節點機器上執行,不要在安全模式下,相當於拷貝最新的p_w_picpath鏡像,就是namenode上最新的p_w_picpath文件

29.手動保存元數據

   $hdfs dfsadmin -metasave  xxx.meta

   可以在任何節點上面執行上面的命令,但是數據保存在namenode的log文件下

   默認存放在{HADOOP_HOME}/logs/

30.文件系統健康檢查

   $hdfs fsck /

   查找HDFS某個文件的大小,塊的信息,所在節點的信息

   $hdfs fsck /user/hadoop/xxxx.files   -files  -blocks -racks

   webui查看數據節點上塊的信息:http://hadoop02:50075/blockScannerReport

31.啓動均衡器

   $start-balancer.sh

   啓動均衡器,讓集羣在數據存儲上更加平均,提高整個集羣的性能  

32.HDFS命令

   從本地上傳文件並刪除本地的文件

   $hadoop fs -moveFromLocal  hello.txt /usr/ubuntu/data/   

   刪除HDFS上面的文件

   $hadoop fs -rm -R /usr/ubuntu/data/had*

   查看hdfs上面文件的內容

   $hadoop fs -cat /user/ubuntu/data/had*

   查看目錄的統計信息,統計目錄數量/文件數/字節數

   $hadoop fs -count /x/x/x/

   追加HDFS上面的文件內容

   $hadoop fs -appendToFile name.txt /user/ubuntu/data/hello.txt

33.快照

   首先開啓快照

   $hdfs dfsadmin -allowSnapshot /user/ubuntu/data

   針對目錄進行snapshot,存放的快照文件在做快照目錄下面的.隱藏文件

   $hadoop fs -createSnapshot /user/ubuntu/data snapshot-1

   關閉快照屬性

   $hdfs dfsadmin -disallowSnapshot /usr/ubuntu/data

34.回收站

  (1).默認是0秒,意味着禁用回收站

  (2).設置文件在回收站的駐留時間

    [core-site.xml]

    fs.trash.interval=1  //分鐘數計算

  (3).通過shell命令刪除的文件,會進入trash

  (4).每個用戶都有自己的回收站(目錄)

    $/usr/ubuntu/.Trash

  (5).編程方式刪除不進入回收站,立即刪除,可以調用

     moveToTrash()方法,返回false,說明禁用回收站或者已經在站中

  (6).恢復文件

     將.Trash目錄的文件移動出來即可

     hadoop fs -mv /user/ubuntu/.Trash/xx/xx/xx  data/

  (7).清空回收站

     hadoop fs -expunge

  (8).測試刪除回收站

     hadoop fs -rm -R /user/ubuntu/.Trash

35.目錄配合和磁盤空間配額

   $hdfs dfsadmin -setQuota 2 /user/ubuntu/data/day   //指該目錄下可以存在的文件數或目錄的數量

   $hdfs dfsadmin -setSpaceQuota 20 /user/ubuntu/data/day  //配置目錄的磁盤空間配額爲20字節

   

         


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章