Hadoop 3.1.1 - 概述 - 單節點安裝


Hadoop: 單節點安裝

目標

本文描述了如何安裝和配置單機的 Hadoop,這樣你可以使用 Hadoop MapReduce 和 Hadoop 分布式文件系統(HDFS)快速地嘗試簡單的操作。

前提

支持的平台

  • 支持 GNU/Linux 作為開發平台和生產環境。經實戰檢驗,Hadoop 能運行在包含 2000 台 GNU/Linux 機器組成的集群上。
  • 同樣支持 Windows,但后續步驟只適用於 Linux。要在 Windows 上安裝 Hadoop,請查閱百科文檔

需要的軟件

Linux 平台需要的軟件包括:

  1. Java™ 一定要安裝。推薦的 Java 版本參見 Hadoop Java 版本
  2. 如果要執行 Hadoop 可選的啟停腳本來管理遠端的 Hadoop 守護進程,ssh 一定要安裝。此外,推薦安裝 pdsh 以更好地管理 ssh 資源。

安裝軟件

如果你的集群沒有上述軟件,你必須先安裝它們。

在 Ubuntu Linux 上可執行:

 $ sudo apt-get install ssh
 $ sudo apt-get install pdsh

下載

為了獲得 Hadoop 發行包,請從 Apache 下載鏡像中任意一家下載最近的穩定版本。

准備啟動 Hadoop 集群

解壓下載的 Hadoop 發行包,編輯文件 etc/hadoop/hadoop-env.sh 以定義如下的參數:

 # 給定 Java 安裝的根目錄
 export JAVA_HOME=/usr/java/latest 

執行如下命令:

$ bin/hadoop

屏幕將顯示 Hadoop 腳本的使用文檔。

現在,你可以任選以下三種模式之一來啟動你的 Hadoop 集群:

本地模式

默認情況,Hadoop 以一個 Java 進程的形態運行在非分布式模式下,這對於調試很有幫助。

以下示例復制解壓后的配置目錄作為輸入,查詢所有匹配正則表達式的文本,結果被寫到給定的輸出目錄中。

$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.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>

etc/hadoop/hadoop-env.sh

# 添加如下環境變量
export HDFS_DATANODE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

配置免密碼的 ssh

現在,檢查你是否可以 ssh 登錄到本機而無需密碼:

$ 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 作業。如果你想在 Yarn 上執行一個作業,請參閱單機運行 Yarn

  1. 格式化文件系統:

    $ bin/hdfs namenode -format
  2. 啟動 NameNode 守護進程和 DataNode 守護進程:

    $ sbin/start-dfs.sh

    Hadoop 守護進程的日志輸出目錄是 $HADOOP_LOG_DIR,其默認值是 $HADOOP_HOME/logs。

  3. 瀏覽 NameNode 的網頁,地址默認是:

    • NameNode - http://localhost:9870/
  4. 創建運行 MapReduce 作業必需的 HDFS 目錄:

    $ bin/hdfs dfs -mkdir /user
    $ bin/hdfs dfs -mkdir /user/<username>
  5. 復制輸入文件到分布式文件系統中:

    $ bin/hdfs dfs -mkdir input
    $ bin/hdfs dfs -put etc/hadoop/*.xml input
  6. 運行提供的示例程序:

    $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.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

單機運行 Yarn

在偽分布式模式中,只需設定很少的參數,你就可以用 Yarn 運行一個 MapReduce 作業,並激活 ResourceManager 守護進程和 NodeManager 守護進程。

后續指令假定上述指令的第 1 ~ 4 步已被執行:

  1. 如下配置參數:

    etc/hadoop/mapred-site.xml

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
    <configuration>
        <property>
            <name>mapreduce.application.classpath</name>
            <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</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 的網頁,地址默認是:

    • ResourceManager - http://localhost:8088/
  4. 運行一個 MapReduce 作業。

  5. 完成以上步驟后,執行一下命令來停止所有的守護進程:

    $ sbin/stop-yarn.sh

完全分布式模式

如果想要安裝完全分布式的、非試驗性的集群,請參閱文檔集群安裝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM