Hadoop: 單節(jié)點集群配置

本文翻譯自 Hadoop 的官方文檔,原文 Hadoop: Setting up a Single Node Cluster

目的

本文介紹了如何快速的搭建一個 Hadoop 單機運行環(huán)境,以便你使用 MapReduce 和 Hadoop 分布式文件系統(tǒng) (HDFS) 運行一些簡單的作業(yè)。

前提

平臺支持

  • GNU/Linux是產(chǎn)品開發(fā)和運行的平臺。 Hadoop已在有2000個節(jié)點的GNU/Linux主機組成的集群系統(tǒng)上得到驗證。
  • Windows 平臺也支持 Hadoop,但后續(xù)步驟僅適用于 Linux。關(guān)于如何在 Windows 上配置 Hadoop 請看 這里。

所需軟件

對 Linux 平臺來說,所需軟件如下:

  1. Java?,推薦使用的 Java 版本請參考 HadoopJavaVersions
  2. ssh,并且 sshd 服務(wù)必須正常運行,以便用 Hadoop 腳本管理遠(yuǎn)端 Hadoop 守護進(jìn)程。

安裝軟件

如果你的集群中尚未安裝所需軟件你必須先安裝它們。

以 Ubuntu Linux 為例:

  1. 安裝 Java
    參考 JDK 的正確安裝姿勢

  2. 安裝 ssh

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

下載

這里下載 Hadoop 的發(fā)行版。

運行 Hadoop 集群的準(zhǔn)備工作

解壓下載好的安裝文件(我這里下載的是 hadoop-2.7.3.tar.gz):

$ tar zxvf hadoop-2.7.3.tar.gz 

編輯 etc/hadoop/hadoop-env.sh 文件,將 JAVA_HOME 修改為你的 Java 安裝目錄:

export JAVA_HOME="你的 Java 安裝目錄"

試試如下命令:

$ bin/hadoop

這將顯示 hadoop 腳本的用法。

現(xiàn)在,準(zhǔn)備工作已經(jīng)做好了。你可以使用下面任意一種方法開始集群的搭建:

  • 本地(單機)模式
  • 偽分布式模式
  • 完全分布式模式

單機模式

Hadoop 默認(rèn)作為一個獨立的 Java 進(jìn)程運行在非分布式模式下。這對調(diào)試來說很有幫助。

下面的這個例子演示了如何在單機模式下運行 Hadoop(所有操作路徑均相對于 Hadoop 安裝目錄):

// 創(chuàng)建 input 目錄
$ mkdir input
// 復(fù)制一些文件到 input 目錄作為輸入
$ cp etc/hadoop/*.xml input
// 執(zhí)行一個 mapreduce 作業(yè),該作業(yè)將 input 目錄下的所有文件作為輸入,將匹配到模式 'dfs[a-z.]+' 的字符串作為輸出
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'
// 查看輸出結(jié)果
$ cat output/*

偽分布式模式

Hadoop 同樣可以在一個節(jié)點以偽分布式模式運行,此時每個 Hadoop 守護進(jìn)程分別以獨立的 Java 進(jìn)程運行。

配置

進(jìn)行如下配置:
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>

設(shè)置 ssh 免密碼登錄

嘗試輸入以下命令:

$ ssh localhost

如果你在不輸入密碼的情況下無法通過 ssh 連接到 localhost 的話,請執(zhí)行以下命令:

$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys

執(zhí)行

接下來介紹了如何執(zhí)行一個本地的 MapReduce 作業(yè)。

  1. 格式化文件系統(tǒng):
$ bin/hdfs namenode -format
  1. 啟動 NameNode 守護進(jìn)程和 DataNode 守護進(jìn)程:
$ sbin/start-dfs.sh

Hadoop 守護進(jìn)程會將日志寫入 $HADOOP_LOG_DIR 目錄中(默認(rèn)情況下是 $HADOOP_HOME/logs 目錄)

  1. 通過 web 接口在瀏覽器中查看 Hadoop 的運行情況;默認(rèn)可以通過如下地址訪問:
  1. 在 HDFS 中創(chuàng)建目錄,MapReduce 作業(yè)需要從這些目錄中讀取數(shù)據(jù):
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
  1. 從本地上傳文件到 HDFS 中:
$ bin/hdfs dfs -put etc/hadoop input
  1. 運行 Hadoop 提供的示例:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'
  1. 將輸出文件從 HDFS 中下載到本地并且檢驗結(jié)果是否正確:
$ bin/hdfs dfs -get output output
$ cat output/*

或者直接在 HDFS 上查看輸出文件:

$ bin/hdfs dfs -cat output/*
  1. 完成之后可以通過如下命令停止守護進(jìn)程:
$ sbin/stop-dfs.sh

以 YARN 架構(gòu)運行

你只需進(jìn)行很少的配置就可以以 YARN 架構(gòu)在偽分布式模式下執(zhí)行 MapReduce 作業(yè)。此外,ResourceManager 守護進(jìn)程 和 NodeManager 守護進(jìn)程也會啟動。

下述步驟基于上一節(jié)中的 1 ~ 4 步。

  1. 進(jìn)行如下配置:
    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>
</configuration>
  1. 啟動 ResourceManager 守護進(jìn)程 和 NodeManager 守護進(jìn)程:
$ sbin/start-yarn.sh
  1. 在瀏覽器中查看 ResourceManager 是否正常運行;默認(rèn)在 8088 端口:
  1. 執(zhí)行 MapReduce 作業(yè)。
  2. 執(zhí)行完畢可以通過如下命令停止守護進(jìn)程:
$ sbin/stop-yarn.sh

完全分布式模式

請參考 Hadoop 完全分布式環(huán)境搭建

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容