hadoop 轉

detailed http://wenku.baidu.com/view/c2d1ebb4ba0d4a7302763a84.html

http://hadoop.apache.org/docs/r1.0.4/cn/cluster_setup.html  old

 

最新的hadoop2.5 安裝目錄作了必定修改,安裝變得稍微簡單一點html

 

首先安裝準備工具java

 

 $ sudo apt-get install ssh
  $ sudo apt-get install rsync
配置ssh
  $ ssh localhost

If you cannot ssh to localhost without a passphrase, execute the following commands:node

  $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
  $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

 

 

進入etc/hadoop/hadoop-env.sh 配置運行環境linux

  # set to the root of your Java installation
  export JAVA_HOME=/usr/java/latest

  # Assuming your installation directory is /usr/local/hadoop
  export HADOOP_PREFIX=/usr/local/hadoop

 

配置hdfs端口和備份數web

 

etc/hadoop/core-site.xml:shell

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
<property>#ClientDatanodeProtocol 調用getBlockLocalPathInfo的時候           <name>dfs.block.local-path-access.user</name>           <value>infomorrow</value>      </property>      <property>           <name>dfs.replication</name>           <value>1</value>       </property>       <property>           <name>hadoop.tmp.dir</name>           <value>/home/infomorrow/hadoop-tmp</value>          </property> 
</configuration>

etc/hadoop/hdfs-site.xml:apache

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

 

配置使用yarnubuntu

 

 

etc/hadoop/mapred-site.xml:vim

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

etc/hadoop/yarn-site.xml:bash

NodeManager 在 啓 動 時 加 載shuffle server,shuffle server 實 際 上 是 Jetty/Netty Server,Reduce Task 通 過 該 server 從 各 個NodeManager 上遠程複製 Map Task 產生的中間結果

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

 

啓動過程:

hdfs

 

  1.   $ bin/hdfs namenode -format (初次使用時)
  2.   $ sbin/start-dfs.sh
  3. 進入監控頁查看 - http://localhost:50070/
  4. 在hdfs上建立文件夾
      $ bin/hdfs dfs -mkdir /user
      $ bin/hdfs dfs -mkdir /user/<username>
  5. 查看hdfs上建立的文件夾 bin/hadoop fs -ls /

yarn

 

 

  1. $ sbin/start-yarn.sh
  2. 進入監控頁查看http://localhost:8088/

關閉:

 

 

 $ sbin/stop-dfs.sh
$ sbin/stop-yarn.sh

 

 

 

hadoop僞分佈能夠安裝chukwa

 

用chukwa的人不多 去hadoop論壇問問吧 
目測能。。
 

什叫hadoop僞分佈 ,是一臺主機裏有虛擬機這樣

 

僞分佈模式也是在一臺單機上運行,但用不一樣的 Java 進程模仿分佈式運行中的各種結點 ( NameNode, DataNode, JobTracker, TaskTracker, Secondary NameNode ),分佈式運行中的這幾個結點的區別: 
從分佈式存儲的角度來講,集羣中的結點由一個 NameNode 和若干個 DataNode 組成, 另有一個 Secondary NameNode 做爲 NameNode 的備份。 
從分佈式應用的角度來講,集羣中的結點由一個 JobTracker 和若干個 TaskTracker 組成,JobTracker 負責任務的調度,TaskTracker 負責並行執行任務。
TaskTracker 必須運行在 DataNode 上,這樣便於數據的本地計算。JobTracker 和 NameNode 則無須在同一臺機器上。
僞分佈模式安裝步驟:
1.解壓到某目錄下並設置JAVA_HOME。
2.修改配置文件:
a)修改conf/core-site.xml:
<configuration> 
<property> 
<name>fs.default.name</name> 
<value>hdfs://localhost:9000</value> 
</property> 
</configuration> 
b)修改conf/mapred-site.xml:
<configuration> 
<property> 
<name>mapred.job.tracker</name> 
<value>localhost:9001</value> 
</property> 
</configuration>
c)修改conf/hdfs-site.xml:
<configuration> 
<property> 
<name>dfs.replication</name> 
<value>1</value> 
</property> 
</configuration> 
#參數 fs.default.name 指定 NameNode 的 IP 地址和端口號。缺省值是 file:///, 表示使用本地文件系統, 用於單機非分佈式模式。此處咱們指定使用運行於本機 localhost 上的 NameNode。 
#參數 mapred.job.tracker 指定 JobTracker 的 IP 地址和端口號。缺省值是 local, 表示在本地同一 Java 進程內執行 JobTracker 和 TaskTracker, 用於單機非分佈式模式。此處咱們指定使用運行於本機 localhost 上的 JobTracker ( 用一個單獨的 Java 進程作 JobTracker )。 
#參數 dfs.replication 指定 HDFS 中每一個 Block 被複制的次數,起數據冗餘備份的做用。 在典型的生產系統中,這個數常......餘下全文>>
 

 

 

歷時一週多,終於搭建好最新版本hadoop2.2集羣,期間遇到各類問題,做爲菜鳥真心被各類折磨,不過當wordcount給出結果的那一刻,興奮的不得了~~(文當中如有錯誤之處或疑問歡迎指正,互相學習)

PS:轉載請註明來源:http://blog.csdn.net/licongcong_0224/article/details/12972889

另外:歡迎配置過程當中遇到問題的朋友留言,相互討論,而且可以把解決方法共享給你們。下面評論中有幾個朋友遇到的問題和解決方法,歡迎參考!

特別說明:我本人也是hadoop入門不久,並正在學習中,因此當初配置也是參考了不少資料,給出的這個參考配置能夠保證你們配置的集羣正常work,若是是真正的生產環境,那文檔中是有不少紕漏了,以下面的幾位大牛評論。謝謝參考,並提意見,互相學習!

 

第一部分 Hadoop 2.2 下載

          Hadoop咱們從Apache官方網站直接下載最新版本Hadoop2.2。官方目前是提供了linux32位系統可執行文件,因此若是須要在64位系統上部署則須要單獨下載src 源碼自行編譯(10樓評論中提供了一個解決方法連接)。

下載地址:http://apache.claz.org/hadoop/common/hadoop-2.2.0/

以下圖所示,下載紅色標記部分便可。若是要自行編譯則下載src.tar.gz.

 

 

 

第二部分 集羣環境搭建

一、這裏咱們搭建一個由三臺機器組成的集羣:

192.168.0.1     hduser/passwd        cloud001       nn/snn/rm        CentOS6 64bit

192.168.0.2     hduser/passwd        cloud002        dn/nm             Ubuntu13.04 32bit

192.168.0.3     hduser/passwd        cloud003        dn/nm              Ubuntu13.0432bit

1.1 上面各列分別爲IP、user/passwd、hostname、在cluster中充當的角色(namenode, secondary namenode, datanode , resourcemanager, nodemanager)

1.2   Hostname能夠在/etc/hostname中修改(ubuntu是在這個路徑下,redhat稍有不一樣)

1.3  這裏咱們爲每臺機器新建了一個帳戶hduser.這裏須要給每一個帳戶分配sudo的權限。(切換到root帳戶,修改/etc/sudoers文件,增長:hduser  ALL=(ALL) ALL )

二、修改/etc/hosts 文件,增長三臺機器的ip和hostname的映射關係

                192.168.0.1     cloud001

                192.168.0.2     cloud002

                192.168.0.3     cloud003

三、打通cloud001到cloud00二、cloud003的SSH無密碼登錄

3.1 安裝ssh

         通常系統是默認安裝了ssh命令的。若是沒有,或者版本比較老,則能夠從新安裝:

  sodu apt-get install ssh

3.2設置local無密碼登錄

安裝完成後會在~目錄(當前用戶主目錄,即這裏的/home/hduser)下產生一個隱藏文件夾.ssh(ls  -a 能夠查看隱藏文件)。若是沒有這個文件,本身新建便可(mkdir .ssh)。

具體步驟以下:

一、 進入.ssh文件夾

二、 ssh-keygen -t  rsa 以後一路回 車(產生祕鑰)

三、 把id_rsa.pub 追加到受權的 key 裏面去(cat id_rsa.pub >> authorized_keys)

四、 重啓 SSH 服 務命令使其生效 :service sshd restart(這裏RedHat下爲sshdUbuntu下爲ssh)

此時已經能夠進行ssh localhost的無密碼登錄

     【注意】:以上操做在每臺機器上面都要進行。

3.3設置遠程無密碼登錄

這裏只有cloud001是master,若是有多個namenode,或者rm的話則須要打通全部master都其餘剩餘節點的免密碼登錄。(將001的authorized_keys追加到002和003的authorized_keys)

進入001的.ssh目錄

scp authorized_keys hduser@cloud002:~/.ssh/ authorized_keys_from_cloud001

進入002的.ssh目錄

cat authorized_keys_from_cloud001>> authorized_keys

至此,能夠在001上面sshhduser@cloud002進行無密碼登錄了。003的操做相同。

四、安裝jdk(建議每臺機器的JAVA_HOME路徑信息相同)

注意:這裏選擇下載jdk並自行安裝,而不是經過源直接安裝(apt-get install)

4.一、下載jkd( http://www.oracle.com/technetwork/java/javase/downloads/index.html

4.1.1 對於32位的系統能夠下載如下兩個Linux x86版本(uname -a 查看系統版本)

4.1.2  64位系統下載Linux x64版本(即x64.rpm和x64.tar.gz)

 

 

4.二、安裝jdk(這裏以.tar.gz版本,32位系統爲例)

安裝方法參考http://docs.oracle.com/javase/7/docs/webnotes/install/linux/linux-jdk.html 

4.2.1 選擇要安裝java的位置,如/usr/目錄下,新建文件夾java(mkdirjava)

4.2.2 將文件jdk-7u40-linux-i586.tar.gz移動到/usr/java

4.2.3 解壓:tar -zxvf jdk-7u40-linux-i586.tar.gz

4.2.4 刪除jdk-7u40-linux-i586.tar.gz(爲了節省空間)

至此,jkd安裝完畢,下面配置環境變量

4.三、打開/etc/profile(vim /etc/profile)

在最後面添加以下內容:

JAVA_HOME=/usr/java/jdk1.7.0_40(這裏的版本號1.7.40要根據具體下載狀況修改)

CLASSPATH=.:$JAVA_HOME/lib.tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOMECLASSPATH PATH

4.四、source /etc/profile

4.五、驗證是否安裝成功:java–version

  【注意】每臺機器執行相同操做,最後將java安裝在相同路徑下(不是必須的,但這樣會使後面的配置方便不少)

五、關閉每臺機器的防火牆

RedHat:

/etc/init.d/iptables stop 關閉防火牆。

chkconfig iptables off 關閉開機啓動。

Ubuntu:

ufw disable (重啓生效)

 

第三部分 Hadoop 2.2安裝過程

        因爲hadoop集羣中每一個機器上面的配置基本相同,因此咱們先在namenode上面進行配置部署,而後再複製到其餘節點。因此這裏的安裝過程至關於在每臺機器上面都要執行。但須要注意的是集羣中64位系統和32位系統的問題。

一、 解壓文件

       將第一部分中下載的hadoop-2.2.tar.gz解壓到/home/hduser路徑下(或者將在64位機器上編譯的結果存放在此路徑下)。而後爲了節省空間,可刪除此壓縮文件,或將其存放於其餘地方進行備份。

注意:每臺機器的安裝路徑要相同!!

二、 hadoop配置過程

配置以前,須要在cloud001本地文件系統建立如下文件夾:

~/dfs/name

~/dfs/data

~/temp

這裏要涉及到的配置文件有7個:

~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh

~/hadoop-2.2.0/etc/hadoop/yarn-env.sh

~/hadoop-2.2.0/etc/hadoop/slaves

~/hadoop-2.2.0/etc/hadoop/core-site.xml

~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml

~/hadoop-2.2.0/etc/hadoop/mapred-site.xml

~/hadoop-2.2.0/etc/hadoop/yarn-site.xml

以上個別文件默認不存在的,能夠複製相應的template文件得到。

配置文件1:hadoop-env.sh

修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7.0_40)

配置文件2:yarn-env.sh

修改JAVA_HOME值(exportJAVA_HOME=/usr/java/jdk1.7.0_40)

配置文件3:slaves (這個文件裏面保存全部slave節點)

寫入如下內容:

cloud002

cloud003

配置文件4:core-site.xml

<configuration>

                <property>

                                <name>fs.defaultFS</name>

                                <value>hdfs://cloud001:9000</value>

                </property>

       <property>

                                <name>io.file.buffer.size</name>

                                <value>131072</value>

                </property>

       <property>

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

                                <value>file:/home/hduser/tmp</value>

                                <description>Abase for other temporary directories.</description>

                </property>

        <property>

               <name>hadoop.proxyuser.hduser.hosts</name>

               <value>*</value>

       </property>

                 <property>

               <name>hadoop.proxyuser.hduser.groups</name>

               <value>*</value>

       </property>

</configuration>

配置文件5:hdfs-site.xml

<configuration>

       <property>

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

               <value>cloud001:9001</value>

        </property>

         <property>

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

                 <value>file:/home/hduser/dfs/name</value>

            </property>

           <property>

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

                    <value>file:/home/hduser/dfs/data</value>

            </property>

            <property>

                     <name>dfs.replication</name>

                     <value>3</value>

             </property>

             <property>

                     <name>dfs.webhdfs.enabled</name>

                     <value>true</value>

         </property>

</configuration>

配置文件6:mapred-site.xml

<configuration>

                <property>

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

                                <value>yarn</value>

                </property>

                <property>

                                <name>mapreduce.jobhistory.address</name>

                                <value>cloud001:10020</value>

                </property>

                <property>

               <name>mapreduce.jobhistory.webapp.address</name>

               <value>cloud001:19888</value>

       </property>

</configuration>

配置文件7:yarn-site.xml

<configuration>

                 <property>

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

               <value>mapreduce_shuffle</value>

        </property>

                 <property>

               <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

               <value>org.apache.hadoop.mapred.ShuffleHandler</value>

        </property>

        <property>

               <name>yarn.resourcemanager.address</name>

               <value>cloud001:8032</value>

       </property>

                <property>

               <name>yarn.resourcemanager.scheduler.address</name>

               <value> cloud001:8030</value>

               </property>

               <property>

                       <name>yarn.resourcemanager.resource-tracker.address</name>

                        <value> cloud001:8031</value>

               </property>

               <property>

                       <name>yarn.resourcemanager.admin.address</name>

                        <value> cloud001:8033</value>

               </property>

                <property>

               <name>yarn.resourcemanager.webapp.address</name>

               <value> cloud001:8088</value>

       </property>

</configuration>

三、複製到其餘節點

這裏能夠寫一個shell腳本進行操做(有大量節點時比較方便)

cp2slave.sh

#!/bin/bash 

scp–r /home/hduser/hadoop-2.2.0 hduser@cloud002:~/

scp–r /home/hduser/hadoop-2.2.0 hduser@cloud003:~/

注意:因爲咱們集羣裏面001是64bit 而002和003是32bit的,因此不能直接複製,而採用單獨安裝hadoop,複製替換相關配置文件:

Cp2slave2.sh

#!/bin/bash

scp /home/hduser/hadoop-2.2.0/etc/hadoop/slaveshduser@cloud002:~/hadoop-2.2.0/etc/hadoop/slaves

scp /home/hduser/hadoop-2.2.0/etc/hadoop/slaveshduser@cloud003:~/hadoop-2.2.0/etc/hadoop/slaves

scp /home/hduser/hadoop-2.2.0/etc/hadoop/core-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/core-site.xml

scp /home/hduser/hadoop-2.2.0/etc/hadoop/core-site.xml hduser@cloud003:~/hadoop-2.2.0/etc/hadoop/core-site.xml

scp /home/hduser/hadoop-2.2.0/etc/hadoop/hdfs-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml

scp /home/hduser/hadoop-2.2.0/etc/hadoop/hdfs-site.xmlhduser@cloud003:~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml

scp /home/hduser/hadoop-2.2.0/etc/hadoop/mapred-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/mapred-site.xml

scp /home/hduser/hadoop-2.2.0/etc/hadoop/mapred-site.xmlhduser@cloud003:~/hadoop-2.2.0/etc/hadoop/mapred-site.xml

scp /home/hduser/hadoop-2.2.0/etc/hadoop/yarn-site.xmlhduser@cloud002:~/hadoop-2.2.0/etc/hadoop/yarn-site.xml

scp /home/hduser/hadoop-2.2.0/etc/hadoop/yarn-site.xmlhduser@cloud003:~/hadoop-2.2.0/etc/hadoop/yarn-site.xml

四、啓動驗證

4.1 啓動hadoop

進入安裝目錄: cd  ~/hadoop-2.2.0/

格式化namenode:./bin/hdfs namenode –format

啓動hdfs: ./sbin/start-dfs.sh

此時在001上面運行的進程有:namenode secondarynamenode

002和003上面運行的進程有:datanode

啓動yarn: ./sbin/start-yarn.sh

此時在001上面運行的進程有:namenode secondarynamenoderesourcemanager

002和003上面運行的進程有:datanode nodemanaget

查看集羣狀態:./bin/hdfs dfsadmin –report

 

查看文件塊組成:  ./bin/hdfsfsck / -files -blocks

查看HDFS:    http://16.187.94.161:50070

查看RM:    http:// 16.187.94.161:8088

4.2 運行示例程序:

先在hdfs上建立一個文件夾

./bin/hdfs dfs –mkdir /input

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jarrandomwriter input

 

PS:dataNode 沒法啓動是配置過程當中最多見的問題,主要緣由是屢次format namenode 形成namenode 和datanode的clusterID不一致。建議查看datanode上面的log信息。解決辦法:修改每個datanode上面的CID(位於dfs/data/current/VERSION文件夾中)使二者一致。還有一種解決方法見下面6樓評論!

相關文章
相關標籤/搜索