Linux CentOS下Hadoop偽分布模式安裝筆記

來源:互聯網
上載者:User

 

一. 概要       經過幾天的調試,終於在Linux Cent OS 5.0下成功搭建Hadoop測試環境。本次測試在一台伺服器上進行偽分布式搭建。Hadoop 偽分布式模式是在單機上類比 Hadoop 分布式,單機上的分布式並不是真正的偽分布式,而是使用線程類比分布式。Hadoop 本身是無法區分偽分布式和分布式的,兩種配置也很相似,唯一不同的地方是偽分布式是在單機器上配置,資料節點和名位元組點均是一個機器。雖然Hadoop的安裝步驟並不複雜,但是我在安裝期間還是遇到了很多瑣碎的問題,現將自己搭建Hadoop的詳細過程和遇到的問題記錄下來。  二. 環境搭建      搭建測試環境所需的軟體包括:jdk1.6.0_20、hadoop-0.20.2.tar.gz。測試伺服器作業系統Linux Cent OS 5.0。  1.  SSH無密碼驗證配置     Hadoop 需要使用SSH 協議,namenode 將使用SSH 協議啟動 namenode和datanode 進程,偽分布式模式資料節點和名稱節點均是本身,必須配置 SSH localhost無密碼驗證。    用root使用者登入,在家目錄下執行如下命令:ssh-keygen -t rsa [root@master ~]# ssh-keygen -t  rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
& 按斷行符號預設路徑 &
Created directory '/root/.ssh'.  &建立/root/.ssh目錄&
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c6:7e:57:59:0a:2d:85:49:23:cc:c4:58:ff:db:5b:38 root@master
     通過以上命令將在/root/.ssh/ 目錄下產生id_rsa私密金鑰和id_rsa.pub公開金鑰。進入/root/.ssh目錄在namenode節點下做如下配置:[root@master .ssh]#
cat id_rsa.pub > authorized_keys配置完畢,可通過ssh 本機IP 測試是否要求輸入密碼登入。  2. JDK安裝及Java環境變數的配置2.1 JDK安裝     root 使用者登陸,建立檔案夾 /usr/program ,下載 JDK 安裝包
jdk-6u13-linux-i586.bin,複製到目錄/usr/ program 下,在命令列進入該目錄,執行命令“./ jdk-6u20-linux-i586.bin”,命令運行完畢,將在目錄下組建檔案夾jdk1.6.0_20,安裝完畢。 2.2 java環境變數配置        root 使用者登陸,命令列中執行命令“vi /etc/profile”,並加入以下內容,配置環境變數(注意/etc/profile 這個檔案很重要,後面 Hadoop 的配置還會用到)。 
# set java environment
   export JAVA_HOME=/usr/program/jdk1.6.0_20
   export JRE_HOME=/usr/program/jdk1.6.0_20/jre
   export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
   export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH在vi編輯器增加以上內容後儲存退出,並執行以下命令使配置生效    chmod +x  /etc/profile ;增加執行許可權    source  /etc/profile ;配置完畢後,在命令列中輸入java -version,如出現下列資訊說明java環境安裝成功。java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode)  2. Hadoop配置   下載 hadoop-0.20.2.tar.gz,將其解壓到/usr/local/hadoop 目錄下,解壓後目錄形式是/usr/local/hadoop/hadoop-0.20.2。使用如下命令:

  tar zxvf  hadoop-0.19.1.tar.gz 進行hadoop壓縮檔解壓。2.1   進入/usr/local/hadoop/hadoop-0.20.2/conf, 配置Hadoop設定檔2.1.1 配置hadoop-env.sh檔案添加 # set java environment
             export JAVA_HOME=/usr/program/jdk1.6.0_20編輯後儲存退出。 2.1.2 配置core-site.xml [root@master conf]# vi core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>   <property>     <name>fs.default.name</name>     <value>hdfs://202.173.253.36:9000/</value>   </property>   <property>     <name>hadoop.tmp.dir</name>     <value>/usr/local/hadoop/hadooptmp</value>   </property></configuration> 2.1.3 配置hdfs-site.xml[root@master conf]# vi  hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>  <property>     <name>dfs.name.dir</name>     <value>/usr/local/hadoop/hdfs/name</value>  </property>  <property>     <name>dfs.data.dir</name>     <value>/usr/local/hadoop/hdfs/data</value>  </property>  <property>     <name>dfs.replication</name>     <value>1</value>  </property></configuration>    2.1.4 配置mapred-site.xml[root@master conf]# vi mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration>  <property>     <name>mapred.job.tracker</name>     <value>202.173.253.36:9001</value>  </property>  <property>     <name>mapred.local.dir</name>     <value>/usr/local/hadoop/mapred/local</value>  </property>  <property>     <name>mapred.system.dir</name>     <value>/tmp/hadoop/mapred/system</value>  </property></configuration> 2.1.5 配置masters檔案和slaves檔案[root@master conf]# vi masters 202.173.253.36[root@master conf]# vi slaves 202.173.253.36註:因為在偽分布模式下,作為master的namenode與作為slave的datanode是同一台伺服器,所以設定檔中的ip是一樣的。 2.1.6 編輯主機名稱[root@master ~]# vi /etc/hosts# Do not remove the following line, or various programs
 that require network functionality will fail.127.0.0.1                      localhost
202.173.253.36            master
202.173.253.36            slave註:因為是在偽分布模式下,所以master與slave是一台機  2.2 Hadoop啟動2.2.1 進入 /usr/local/hadoop/hadoop-0.20.2/bin目錄下,格式化namenode[root@master bin]# hadoop namenode -format
10/07/19 10:46:41 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = master/202.173.253.36
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.20.2
STARTUP_MSG:   build =
https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
Re-format filesystem in /usr/local/hadoop/hdfs/name ?
(Y or N) Y
10/07/19 10:46:43 INFO namenode.FSNamesystem: fsOwner=root,root,bin,daemon,sys,adm,disk,wheel
10/07/19 10:46:43 INFO namenode.FSNamesystem: supergroup=supergroup
10/07/19 10:46:43 INFO namenode.FSNamesystem: isPermissionEnabled=true
10/07/19 10:46:43 INFO common.Storage: Image file of size 94 saved in 0 seconds.
10/07/19 10:46:43 INFO common.Storage: Storage directory /usr/local/hadoop/hdfs/name has been successfully formatted.
10/07/19 10:46:43 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/202.173.253.36
************************************************************/  2.2.2 啟動hadoop所有進程在/usr/local/hadoop/hadoop-0.20.2/bin 目錄下,執行start-all.sh命令啟動完成後,可用jps命令查看hadoop進程是否啟動完全。正常情況下應該有如下進程:10910 NameNode
11431 Jps
11176 SecondaryNameNode
11053 DataNode
11254 JobTracker
11378 TaskTracker          我在搭建過程中,在此環節出現的問題最多,經常出現啟動進程不完整的情況,要不是datanode無法正常啟動,就是namenode或是TaskTracker啟動異常。解決的方式如下:1.在Linux下關閉防火牆:使用service iptables stop命令;2.再次對namenode進行格式化:在/usr/local/hadoop/hadoop-0.20.2/bin 目錄下執行hadoop namenode -format命令3.對伺服器進行重啟4.查看datanode或是namenode對應的記錄檔,記錄檔儲存在/usr/local/hadoop/hadoop-0.20.2/logs目錄下。仔細查看日誌報錯的原因,(上次日誌報錯的資訊忘記了)解決方案是進入/usr/local/hadoop/hdfs/name 和usr/local/hadoop/hdfs/data目錄下,將目錄下的檔案全部刪除。5.再次在/bin目錄下用start-all.sh命令啟動所有進程,通過以上的幾個方法應該能解決進程啟動不完全的問題了。 2.2.3  查看叢集狀態在 bin目錄下執行:hadoop dfsadmin  -report
[root@master bin]# hadoop dfsadmin -report
Configured Capacity: 304427253760 (283.52 GB)
Present Capacity: 282767941632 (263.35 GB)
DFS Remaining: 282767904768 (263.35 GB)
DFS Used: 36864 (36 KB)
DFS Used%: 0%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0-------------------------------------------------
Datanodes available: 1 (1 total, 0 dead)Name: 202.173.253.36:50010
Decommission Status : Normal
Configured Capacity: 304427253760 (283.52 GB)
DFS Used: 36864 (36 KB)
Non DFS Used: 21659312128 (20.17 GB)
DFS Remaining: 282767904768(263.35 GB)
DFS Used%: 0%
DFS Remaining%: 92.89%
Last contact: Mon Jul 19 11:07:22 CST 2010 2.3 在WEB頁面下查看Hadoop工作情況開啟IE瀏覽器輸入部署Hadoop伺服器的IP: http://localhost:50070; http://localhost:50030。  3. Hadop使用一個測試例子wordcount      計算輸入文本中詞語數量的程式。WordCount在Hadoop主目錄下的java程式包hadoop-0.20.2-examples.jar 中,執行步驟如下:在/usr/local/hadoop/hadoop-0.20.2/bin/目錄下進行如下操作:hadoop fs -mkdir  bxy(建立目錄名稱,可任意命名)[root@master log]# hadoop fs -copyFromLocal secure.2 bxy (找一個任意檔案將其copy到bxy檔案夾)  在/usr/local/hadoop/hadoop-0.20.2下執行:[root@master hadoop-0.20.2]# hadoop jar hadoop-0.20.2-examples.jar wordcount bxy  output (提交作業,此處需注意bxy與output是一組任務,下次再執行wordcount程式,還要建立目錄bxy1與output1不能跟bxy與output重名)執行完畢後,可進入web介面重新整理查看running job及completed job的顯示。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.