1. 程式人生 > >Hadoop3.0: 單機(偽叢集)配置

Hadoop3.0: 單機(偽叢集)配置

目的

本文主要講解的是在單節點下的Hadoop的環境安裝和配置,以幫助您可以快速的使用Hadoop的MapReduce和HDFS

前提條件

環境支援

GNU/Linux現已支援開發和生產環境. Hadoop可以在 GNU/Linux叢集上支援2000節點。
Windows現也支援但是沒有Linux那麼先進.關於如何在Windows上配置Hadoop ,請檢視連結 wiki page 

必需的軟體

Linux下需要的軟體包括:
1.   Java™必須已經安裝好.與Hadoop版本對應的JDK版本請參考 HadoopJavaVersions.
2.   如果使用Hadoop指令碼對Hadoop的守護程序進行遠端管理。必須安裝ssh並且啟動sshd服務。

軟體安裝

如果您的叢集沒有安裝對應的軟體,你需要安裝它們。
以Ubuntu Linu為例: 
$ sudo apt-get install ssh
$ sudo apt-get install pdsh

Hadoop下載

獲取最新的Hadoop,您可以從Apache的下載映象中進行選擇下載 Apache Download Mirrors.

搭建Hadoop Cluster

準備工作

解壓Hadoop壓縮包。然後進入目錄。編輯etc/hadoop/hadoop-env.sh的下列引數:
  # set to the root of your Java installation
# set to the root of your Java installation
  export JAVA_HOME=/usr/java/latest

儲存退出後,執行以下命令:

$ bin/hadoop

它將顯示hadoop指令碼可用的檔案。
現在您可以開始從下列三種支援的Hadoop cluster模式中選擇一種來進行環境搭建了:

  • 本地(單機)模式
  • 偽分散式模式
  • 分散式模式

單機設定

預設情況下,Hadoop的配置是非分散式模式,就像一個Java程序一樣,它有利於進行debug除錯。
您可以複製下個例子中的程式碼到解壓路徑下進行執行根據指定的表示式,匹配查詢每次輸入的結果,並且對其進行輸出到output路徑下。。
  
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+'
$ cat output/*

偽分散式設定

Hadoop也是支援在單節點上配置偽分散式模式的。在這樣的情況下,Hadoop的守護程序都是單獨的java程序。

配置

配置如下:
etc/hadoop/core-site.xml:
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

etc/hadoop/hdfs-site.xml:

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

配置ssh密碼

檢查現有ssh下的localhost是否為不需要密碼的:
 $ ssh localhost
您也可以配置ssh下localhost免密碼模式。執行下列命令:
 $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
 $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 $ chmod 0600 ~/.ssh/authorized_keys

執行

下列一系列的指令是配置配置MapReduce job的。如果您想在YARN上執行job。可以檢視YARN單節點配置。
1.   格式化HDFS檔案系統:
 $ bin/hdfs namenode -format
2.   啟動NameNode守護程序和DataNode守護程序: 
 $ sbin/start-dfs.sh
3.    hadoop守護程序日誌輸出到$HADOOP_LOG_DIR 路徑 (預設為 $HADOOP_HOME/logs)。
4.   通過瀏覽器訪問NameNode的web介面,預設地址為:http://localhost:9870/。
5.   建立需執行MapReduce jobs的HDFS目錄:
 $ bin/hdfs dfs -mkdir input
 $ bin/hdfs dfs -put etc/hadoop/*.xml input
6.   複製input檔案到分散式檔案系統:
 $ bin/hdfs dfs -mkdir input
 $ bin/hdfs dfs -put etc/hadoop/*.xml input
7.   執行提供的示例程式:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar grep input output 'dfs[a-z.]+'
8.   檢查輸出檔案:從分散式檔案系統複製output檔案到本地然後進行檢查:
$ bin/hdfs dfs -get output output
$ cat output/*
    或
    直接在分散式檔案系統中進行檢視:
$ bin/hdfs dfs -cat output/*
9.   當您已經完成上面所有的工作的時候,您可以停止守護程序了:
$ sbin/stop-dfs.sh

YARN上執行單點

您可以在單點模式的YARN上執行MapReduce job。您只需要增加ResourceManager守護程序和NodeManager守護程序設定就可以了。
其實現方式通過下面1~4步驟進行配置:
1.   配置引數如下:
etc/hadoop/mapred-site.xml:
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
etc/hadoop/yarn-site.xml:
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>
2.   啟動 ResourceManager守護程序和NodeManager守護程序:
$ sbin/start-yarn.sh
3.   通過瀏覽器訪問ResourceManager的web介面,預設地址為: http://localhost:8088/
4.   執行一個 MapReduce job.
5.   當您已經完成上面所有的工作的時候,您可以停止守護程序了:
 $ sbin/stop-yarn.sh

 分散式叢集配置

關於分散式叢集配置,請檢視叢集配置