hadoop~大數據


    hadoop是一個分佈式文件系統(Hadoop Distributed File System)HDFS。Hadoop是一個能夠對大量數據進行分佈式處理軟件框架。 Hadoop 以一種可靠、高效、可伸縮的方式進行數據處理。Hadoop 是可靠的,因爲它假設計算元素和存儲會失敗,因此它維護多個工作數據副本,確保能夠針對失敗的節點重新分佈處理。Hadoop帶有用Java語言編寫的框架。

   Hadoop的master節點包括名稱節點、從屬名稱節點和 jobtracker 守護進程以及管理集羣所用的實用程序和瀏覽器。slave節點包括 tasktracker 和數據節點.主節點包括提供 Hadoop 集羣管理和協調的守護進程,而從節點包括實現Hadoop 文件系統(HDFS)存儲功能和 MapReduce 功能(數據處理功能)的守護進程。

   Namenode 是 Hadoop 中的主服務器,通常在 HDFS 實例中的單獨機器上運行的軟件,它管理文件系統名稱空間和對集羣中存儲的文件的訪問。每個 Hadoop 集羣中可以找到一個 namenode和一個secondary namenode。。當外部客戶機發送請求要求創建文件時,NameNode 會以塊標識和該塊的第一個副本的 DataNode IP 地址作爲響應。這個 NameNode 還會通知其他將要接收該塊的副本的 DataNode。

         Datanode,hadoop 集羣包含一個 NameNode 和大量 DataNode。DataNode 通常以機架的形式組織,機架通過一個交 換機將所有系統連接起來。DataNode 響應來自 HDFS 客戶機的讀寫請求。它們還響應來自 NameNode 的創建、刪除和複製塊的命令。

  JobTracker是一個master服務,軟件啓動之後JobTracker接收Job,負責調度Job的每一個子任務task運行於TaskTracker上,並監控它們,如果發現有失敗的task就重新運行它。

  TaskTracker是運行在多個節點上的slaver服務。TaskTracker主動與JobTracker通信,接收作業,並負責直接執行每一個任務。TaskTracker都需要運行在HDFS的DataNode上.

  NameNode、Secondary ,NameNode、JobTracker運行在Master節點上,而在每個Slave節點上,部署一個DataNode和TaskTracker,以便 這個Slave服務器運行的數據處理程序能儘可能直接處理本機的數據。



  

server2.example.com 172.25.45.2   (master)

server3.example.com 172.25.45.3   (slave)

server4.example.com 172.25.45.4   (slave)

server5.example.com 172.25.45.5   (slave)



  1. hadoop傳統版的配置:

    server2,server3,server4和server5添加hadoop用戶:

   useradd -u 900 hadoop

   echo westos | passwd --stdin hadoop


  server2:

  

  sh jdk-6u32-linux-x64.bin         ##安裝JDK

  mv jdk1.6.0_32/  /home/hadoop/java

  mv hadoop-1.2.1.tar.gz /home/hadoop/

  

  su - hadoop


  vim .bash_profile 

export JAVA_HOME=/home/hadoop/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin


  source .bash_profile

  

  tar zxf hadoop-1.1.2.tar.gz        ##配置hadoop單節點

  ln -s hadoop-1.1.2 hadoop

  cd /home/hadoop/hadoop/conf           

  vim hadoop-env.sh

export JAVA_HOME=/home/hadoop/java

  cd ..

  mkdir input

  cp conf/*.xml  input/

  bin/hadoop jar hadoop-examples-1.1.2.jar

  bin/hadoop jar hadoop-examples-1.1.2.jar grep input output 'dfs[a-z.]+'               

  cd output/

  cat *

1   dfsadmin


     

  設置master到slave端無密碼登陸:

  

   server2:


  su - hadoop


  ssh-keygen

  ssh-copy-id localhost

  ssh-copy-id  172.25.45.3

  ssh-copy-id  172.25.45.4


  cd /home/hadoop/hadoop/conf

  vim core-site.xml        ##指定 namenode

<property>
<name>fs.default.name</name>
<value>hdfs://172.25.45.2:9000</value>
</property>


    vim mapred-site.xml     ##指定 jobtracker

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>172.25.45.2:9001</value>
</property>
<configuration>


    vim hdfs-site.xml        ##指定文件保存的副本數

 

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<configuration>

   cd ..

   bin/hadoop namenode -format         ##格式化成一個新的文件系統

   ls /tmp                      

hadoop-hadoop  hsperfdata_hadoop  hsperfdata_root  yum.log

   


   bin/start-dfs.sh              ##啓動hadoop進程

  jps

wKioL1eChGvSUA2kAAAqoUUgwMg223.png-wh_50


   bin/start-mapred.sh

   jps


wKiom1eChIiCtb8SAAA4Mz_DRe0395.png-wh_50


    

    在瀏覽器中打開:172.25.45.2:50030

wKioL1eChKGAvuJMAAE8GFdygZI253.png-wh_50

    打開172.25.45.2:50070

wKiom1eChLGSqhbrAAByk_RT7jA334.png-wh_50



    bin/hadoop fs -put input test     ##給分佈式文件系統考入新建的文件

wKiom1eChYCw-wNPAACbm0z_NQg317.png-wh_50



   bin/hadoop jar hadoop-examples-1.2.1.jar wordcount output

    同時在網頁中

wKiom1eChSKxoBdtAAB6mm5rLmk308.png-wh_50



   查看網頁中上傳的文件:

   bin/hadoop fs -get output test

   cat test/*

   rm -fr test/          ##刪除下載的文件








2. server2:  

   共享文件系統: 

    su - root

    yum install nfs-utils -y

    /etc/init.d/rpcbind start 

    /etc/init.d/nfs start

    

    vim /etc/exports

/home/hadoop   *(rw,anonuid=900,anongid=900)

    

     exportfs -rv

     exportfs -v  

     


    server3和server4:

    yum install nfs-utils -y

    /etc/init.d/rpcbind start

    showmount -e 172.25.45.2    ##

Export list for 172.25.45.2:

/home/hadoop *

    mount 172.25.45.2:/home/hadoop /home/hadoop/

    df

wKiom1eChk7iGXtZAAB2cIEwQgw772.png-wh_50

         

 wKioL1eChljAQTjGAABzAFy0qnk248.png-wh_50    



    server2:

    su - hadoop

    cd hadoop/conf

    vim hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

   vim slaves       ##slave端的ip

172.25.45.3
172.25.45.4

   vim masters       ##master端的ip

172.25.45.2


    提示:##如果還有之前的進程開着,必須先關閉,才能再進行格式化,保證jps沒有什麼進程運行

    關閉進程的步驟

   bin/stop-all.sh   ##執行完之後,有時tasktracker,datanode會開着,所以要關閉它們

   bin/hadoop-daemon.sh stop tasktracker

   bin/hadoop-daemon.sh stop datanode

   以hadoop用戶的身份刪除/tmp裏的文件,沒有權限的文件就留着

  


  su - hadoop

  bin/hadoop namenode -format

  bin/start-dfs.sh

  bin/start-mapred.s

  bin/hadoop fs -put input test              ##

  bin/hadoop jar hadoop-examples-1.2.1.jar grep test output 'dfs[a-z.]+'          ##

  一邊上傳一邊在瀏覽器中打開172.25.45.2:50030中觀察會發現有正在上傳的文件

 

  su - hadoop

  bin/hadoop dfsadmin -report 

 dd if=/dev/zero of=bigfile bs=1M count=200

 bin/hadoop fs -put bigfile test

 在瀏覽器中打開172.25.45.2:50070

wKioL1eChqezxt3tAAGWuRnNH4M217.png-wh_50




3.新加server5.example.com 172.25.45.5 作爲新的slave端:

 

    su - hadoop

   yum install nfs-utils -y

   /etc/init.d/rpcbind start

   useradd -u 900 hadoop

   echo westos | passwd --stdin hadoop

   mount 172.25.45.2:/home/hadoop/ /home/hadoop/

   su - hadoop

   vim  hadoop/conf/slaves

172.25.45.3
172.25.45.4
172.25.45.5

   cd /home/hadoop/hadoop

   bin/hadoop-daemon.sh start datanode

   bin/hadoop-daemon.sh start tasktracker

   jps

 

 刪除一個slave端:

   server2:

   

   su - hadoop

   cd  /home/hadoop/hadoop/conf

   vim mapred-site.xml 

<property>
<name>dfs.hosts.exclude</name>
<value>/home/hadoop/hadoop/conf/datanode-excludes</value>
</property>

  

    vim /home/hadoop/hadoop/conf/datanode-excludes

172.25.45.3               ##刪除172.25.45.3不作爲slave端

                                                                  

    cd /home/hadoop/hadoop

    bin/hadoop dfsadmin -refreshNodes   ##刷新節點    

    bin/hadoop dfsadmin -report    ##查看節點狀態,會發現server3上的數據轉移到serve5上


   在server3上:   

   su - hadoop

   bin/stop-all.sh

   cd  /home/hadoop/hadoop

   bin/hadoop-daemon.sh stop tasktracker

   bin/hadoop-daemon.sh stop datanode

  



   server2:

   vim  /home/hadoop/hadoop/conf/slaves

172.25.45.4

172.25.45.5 






4. 配置新版的hadoop:

   server2:

   su - hadoop

   cd /home/hadoop

   tar zxf jdk-7u79-linux-x64.tar.gz

   ln -s jdk1.7.0_79/   java

   tar zxf hadoop-2.6.4.tar.gz

   ln -s hadoop-2.6.4   hadoop

   cd /home/hadoop/hadoop/etc/hadoop

   vim hadoop-env.sh

export JAVA_HOME=/home/hadoop/java
export HADOOP PREFIX=/home/hadoop/hadoop

  


   cd /home/hadoop/hadoop

   mkdir inp

   cp etc/hadoop/*.xml input

   tar -tf hadoop-native-64-2.6.0.tar

   tar -xf hadoop-native-64-2.6.0.tar -C  hadoop/lib/native/

   cd /home/hadoop/hadoop

   rm -fr output/

   bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar grep input output 'dfs[a-z.]+'


  cd /hone/hadoop/hadoop/etc/hadoop/

  vim slaves

172.25.45.3
172.25.45.4

   vim core-site.xm

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://172.25.45.2:9000</value>
</property>
</configuration>

  

  vim mapred-site.xml

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>172.25.45.2:9001</value>
</property>
<configuration>


   vim hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>



     cd /home/hadoop/hadoop

     bin/hdfs  namenode -format

     sbin/start-dfs.sh  

     jps

     

     bin/hdfs dfs -mkdir /user/hadoop  ##要上傳的文件,必須在上傳之前新建出其目錄

     bin/hdfs  dfs -put input/ test

     rm -fr input/

     bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar grep test output 'dfs[a-z.]+'

     bin/hdfs dfs -cat output/*

1dfsadmin



   在瀏覽器中打開172.25.45.2:50070

wKioL1eCimSzmD_XAAGhHLjiZ2c249.png-wh_50


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