Hadoop2.6.0從入門到精通系列之Hadoop 單節點安裝與配置

jichuanlau07發表於2015-04-04

安裝單節點的Hadoop叢集

說明:本文翻譯英文地址出自 Hadoop Apache 官方網站,如需參考英文,請參考官網。

完成目標

1、安裝和配置單一節點的Haddop環境。
2、使用Hadoop MapReduce和 HDFS(Hadoop Distributed File System)進行簡單操作。

Hadoop 支援的作業系統平臺


  • GNU/Linux作為開發與產品平臺被支援。在GNU/Linux平臺上,Hadoop已經成功部署2000節點的叢集。


  • Windows也是被支援的平臺,但是以下的內容只涉及Linux。想在 Windows上安裝Hadoop,參考 wiki


需要的軟體環境


  1. Java 必須在Linux系統中安裝,推薦的Java版本資訊參見 HadoopJavaVersions.
  2. ssh 必須安裝,要使用Hadoop指令碼管理遠端Hadoop守護程式時會執行ssh。

說明:本人作業系統軟體資訊如下:
#使用者資訊
[root@HadoopMaster ~]# id       
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
#系統資訊
[root@HadoopMaster ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
# JAVA 資訊
[root@HadoopMaster ~]# java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) Client VM (build 20.45-b01, mixed mode, sharing)
[root@HadoopMaster ~]#

安裝軟體

 如果你的作業系統中沒有以上所需的軟體你需要參照以下方式進行安裝。
以Ubuntu Linux為例:

  $ sudo apt-get install ssh
  $ sudo apt-get install rsync

安裝完軟體後,下面下載Hadoop安裝介質。


下載地址:http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz


啟動Hadoop 叢集

首先,建立Hadoop Base 目錄,本人建立在根目錄,命名為/hadoop/
#mkdir /hadoop

 然後,將下載的Hadoop軟體介質從下載地址拷貝到/hadoop目錄下,執行命名進行解壓。
[root@HadoopMaster hadoop]# mv /download/hadoop-2.6.0.tar.gz   /hadoop/hadoop-2.6.0.tar.gz
[root@HadoopMaster hadoop]# tar xvf hadoop-2.6.0.tar.gz

進入到/hadoop/hadoop-2.6.0目錄,編輯etc/hadoop/hadoop-env.sh檔案,修改以下引數資訊
[root@HadoopMaster hadoop]# cd hadoop-2.6.0
[root@HadoopMaster hadoop-2.6.0]# vi etc/hadoop/hadoop-env.sh

  #設定Java安裝的路徑,我的系統Java安裝在/hadoop/jdk1.6.0_45目錄下,安裝Java的時候一定要注意32位還是64位版本。
  export JAVA_HOME=/hadoop/jdk1.6.0_45/

  # 設定HADOOP安裝目錄所在目錄,本人未在etc/hadoop/hadoop-env.sh檔案內找到該說明,所以未進行設定。
  export HADOOP_PREFIX=/hadoop
 執行以下命令,測試Hadoop環境可用性。
[root@HadoopMaster hadoop-2.6.0]# bin/hadoop
Usage: hadoop [--config confdir] COMMAND
       where COMMAND is one of:
  fs                   run a generic filesystem user client
  version              print the version
  jar             run a jar file
  checknative [-a|-h]  check native hadoop and compression libraries availability
  distcp   copy file or directories recursively
  archive -archiveName NAME -p  *  create a hadoop archive
  classpath            prints the class path needed to get the
  credential           interact with credential providers
                       Hadoop jar and the required libraries
  daemonlog            get/set the log level for each daemon
  trace                view and modify Hadoop tracing settings
 or
  CLASSNAME            run the class named CLASSNAME

Most commands print help when invoked w/o parameters.
[root@HadoopMaster hadoop-2.6.0]# 

 #以上是hadoop 指令碼命令的使用方法,出現上述資訊說明安裝成功。

 現在,你就準備好了,可以使用以下三種模式之一啟動你的Hadoop叢集了。

 本地模式操作

 預設情況下,Hadoop被配置成單一Java程式執行的非分散式模式,這樣很利於除錯。
 下面的例子拷貝解壓的conf目錄作為輸入來使用,然後查詢並顯示所有匹配的正規表示式。並將查詢結果寫入到指定的目錄。
  [hadoop@HadoopMaster hadoop]$ pwd
  /hadoop
  [hadoop@HadoopMaster hadoop]$ ls -l[root@HadoopMaster hadoop]# ll
  total 260832
  drwxr-xr-x 12 hadoop hadoop      4096 Mar 29 19:09 hadoop-2.6.0
  -rwxrwxr-x  1 hadoop hadoop 195257604 Mar 29 18:37 hadoop-2.6.0.tar.gz
  drwxr-xr-x  8 hadoop grid        4096 Mar 26  2013 jdk1.6.0_45
  -rwxr-xr-x  1 hadoop grid    71799552 Nov 26 09:28 jdk-6u45-linux-i586.bin
  drwxr-xr-x  2 hadoop grid       16384 Nov 26 08:54 lost+found
  $cd hadoop-2.6.0
  注:以上命令是本人主機環境,具體如何做根據個人情況執行,做完以上操作,繼續以下操作。

  $ mkdir input
  $ cp etc/hadoop/*.xml input
  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
 執行完成,未出現錯誤的情況下,檢視結果。
 [hadoop@HadoopMaster hadoop-2.6.0]$ cat output/*
 [hadoop@HadoopMaster hadoop-2.6.0]$ cat output/* 
 1    dfsadmin 
 1    dfs.replication

注:以下結構是我主機上執行的結果。

[hadoop@HadoopMaster hadoop-2.6.0]$ ls -al output/
total 20
drwxrwxr-x  2 hadoop hadoop 4096 03-29 18:52 .
drwxr-xr-x 11 hadoop hadoop 4096 03-29 18:52 ..
-rw-r--r--  1 hadoop hadoop   11 03-29 18:52 part-r-00000
-rw-rw-r--  1 hadoop hadoop   12 03-29 18:52 .part-r-00000.crc
-rw-r--r--  1 hadoop hadoop    0 03-29 18:52 _SUCCESS
-rw-rw-r--  1 hadoop hadoop    8 03-29 18:52 ._SUCCESS.crc

以上操作主要功能是在Hadoop安裝的目錄下建立資料夾input,然後將 etc/hadoop/目錄下的xml 檔案拷貝到資料夾input下,通過執行hadoop命令呼叫java編寫的jar程式share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar 將input目錄下的所有xml檔案內包含dfs的內容寫入到output目錄下。

偽分散式操作

hadoop也能在單節點上以偽分散式模式執行,Hadoop守護程式以獨立的Java程式執行。
配置:
etc/hadoop/core-site.xml:


    
        fs.defaultFS
        hdfs://localhost:9000
    


etc/hadoop/hdfs-site.xml:

    
        dfs.replication
        1
    

Setup passphraseless ssh 安裝無密ssh(Secure Shell)

首先,檢查是否可以通過在提供密碼的情況下使用ssh命令連線到localhost主機。

  $ ssh localhost

如果不能在無密的情況下ssh到localhost,現在需要使用以下命令配置ssh信任。
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

#注意:執行完成以上命令後,請確認 ~/.ssh/authorized_keys 檔案的許可權,一定要是644,否則,互信不會成功,導致無法正常通訊,具體原因是由於SSH出於安全考慮。

操作步驟

以下命令是在本地執行MapReduce作業,如果想在YARN上執行作業,請參考YARN on Single Node.


	
    格式化檔案系統:Format the filesystem:
         #cd /hadoop/hadoop-2.6.0/
  1.   $ bin/hdfs namenode -format
  2. 啟動名稱節點和資料節點後臺程式:
      $ sbin/start-dfs.sh

    Hadoop守護程式日誌輸出被寫入$HADOOP_LOG_DIR目錄(預設為$HADOOP_HOME/logs)

  3. 瀏覽名稱節點資訊,在本地瀏覽器位址列輸入:http://192.168.9.21:50070,資訊如下:
  4. 建立Hadoop Distributed File System(HDFS)
      $ bin/hdfs dfs -mkdir /user
      $ bin/hdfs dfs -mkdir /user/   #本人執行的是  $bin/hdfs dfs -mkdir /user/hadoop
  5. 拷貝本地的 etc/hadoop目錄下的檔案拷貝到分散式檔案系統 /user/hadoop/input目錄下:
      $ bin/hdfs dfs -put etc/hadoop /usr/hadoop/input      #第一個地址是源地址,第二個地址是目標地址即HDFS地址。
  6. 執行Hadoop提供的例子。
      $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
  7. 檢測輸出檔案:

    將分散式檔案系統中的檔案拷貝到本地,並檢視輸出內容:

      $ bin/hdfs dfs -get output output
      $ cat output/*

    或者在分散式檔案系統中檢視檔案:

      $ bin/hdfs dfs -cat output/*
  8. 停止分散式檔案系統守護程式
      $ sbin/stop-dfs.sh
至此,Hadoop單節點的安裝配置已經完成,寫這篇文章前後持續了將近一週時間,終於於今天熬夜完成。
今天就到這裡了,睡個好覺,明天繼續努力。

以下的英文說明對於單節點安裝配置作用不大,後面的部分仍會有提及,再次不做過度詳述。

You can run a MapReduce job on YARN in a pseudo-distributed mode by setting a few parameters and running ResourceManager daemon and NodeManager daemon in addition.

The following instructions assume that 1. ~ 4. steps of the above instructions are already executed.

  1. Configure parameters as follows:

    etc/hadoop/mapred-site.xml:

    
        
            mapreduce.framework.name
            yarn
        
    

    etc/hadoop/yarn-site.xml:

    
        
            yarn.nodemanager.aux-services
            mapreduce_shuffle
        
    
  2. Start ResourceManager daemon and NodeManager daemon:
      $ sbin/start-yarn.sh
  3. Browse the web interface for the ResourceManager; by default it is available at:
    • ResourceManager - http://localhost:8088/
  4. Run a MapReduce job.
  5. When you're done, stop the daemons with:
      $ sbin/stop-yarn.sh

Fully-Distributed Operation

For information on setting up fully-distributed, non-trivial clusters see Cluster Setup.




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23628945/viewspace-1486002/,如需轉載,請註明出處,否則將追究法律責任。

相關文章