全部產品
Search
文件中心

Elastic Compute Service:搭建Hadoop環境

更新時間:Sep 10, 2024

Hadoop是由Apache基金會使用Java語言開發的分布式開源軟體架構,使用者可以在不瞭解分布式底層細節的情況下,開發分布式程式,充分利用叢集的能力進行高速運算和儲存。本文介紹如何在Linux作業系統的ECS執行個體上快速搭建Hadoop分布式環境。

前提條件

搭建Hadoop環境時,已有的ECS執行個體必須滿足以下條件:

  • 公網IP:執行個體已指派公網IP地址或綁定Elastic IP Address(EIP)。

  • 作業系統:Linux作業系統。

  • 執行個體安全性群組的入方向規則已允許存取22、443、8088(Hadoop YARN預設的Web UI連接埠)、9870(Hadoop NameNode預設的Web UI連接埠)連接埠。具體操作,請參見添加安全性群組規則

背景資訊

Apache Hadoop軟體庫是一個架構,它允許通過簡單的編程模型在由多台電腦群組成的叢集上對大規模資料集進行分散式處理。該架構設計能夠從單個伺服器擴充到數千台機器,每台機器都提供本地計算和儲存能力。Hadoop並不依賴硬體來實現高可用性,而是將其自身設計為能夠在應用程式層檢測並處理故障,因此能在可能各自存在故障風險的電腦叢集之上,提供高度可用的服務。

Hadoop的核心組件是HDFS(Hadoop Distributed File System)和MapReduce:

  • HDFS:是一個Distributed File System,可用於應用程式資料的分布式儲存和讀取。

  • MapReduce:是一個分散式運算架構,MapReduce的核心思想是把計算任務分配給叢集內的伺服器執行。通過對計算任務的拆分(Map計算和Reduce計算),再根據任務調度器(JobTracker)對任務進行分散式運算。

更多資訊,請參見Hadoop官網

Hadoop與Java開發套件(JDK)緊密整合,不同版本的Hadoop對JDK的要求也有所不同。

  • Hadoop 3.3:Java 8和Java 11

  • Hadoop 3.0.x~3.2.x:Java 8

  • Hadoop 2.7.x~2.10.x:Java 7和Java 8

本文使用的版本為Hadoop 3.2.4和Java 8,如您使用其他版本,請參考Hadoop官網指南。更多資訊,請參見Hadoop Java Versions

步驟一:安裝JDK

  1. 遠端連線已建立的ECS執行個體。

  2. 執行以下命令,下載JDK 1.8安裝包。

    wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
  3. 執行以下命令,解壓下載的JDK 1.8安裝包。

    tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
  4. 執行以下命令,移動並重新命名JDK安裝包。

    本樣本中將JDK安裝包重新命名為java8,您可以根據需要使用其他名稱。

    sudo mv java-se-8u41-ri/ /usr/java8
  5. 執行以下命令,配置Java環境變數。

    如果您將JDK安裝包重新命名為其他名稱,需將以下命令中的java8替換為實際的名稱。

    sudo sh -c "echo 'export JAVA_HOME=/usr/java8' >> /etc/profile"
    sudo sh -c 'echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile'
    source /etc/profile
  6. 執行以下命令,查看JDK是否成功安裝。

    java -version

    返回類似如下資訊,表示JDK已安裝成功。

    image

步驟二:安裝Hadoop

  1. 執行以下命令,下載Hadoop安裝包。

    wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz
  2. 執行以下命令,將Hadoop安裝包解壓至/opt/hadoop

    sudo tar -zxvf hadoop-3.2.4.tar.gz -C /opt/
    sudo mv /opt/hadoop-3.2.4 /opt/hadoop
  3. 執行以下命令,配置Hadoop環境變數。

    sudo sh -c "echo 'export HADOOP_HOME=/opt/hadoop' >> /etc/profile"
    sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/bin' >> /etc/profile"
    sudo sh -c "echo 'export PATH=\$PATH:/opt/hadoop/sbin' >> /etc/profile"
    source /etc/profile
  4. 執行以下命令,修改設定檔yarn-env.shhadoop-env.sh

    sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/yarn-env.sh'
    sudo sh -c 'echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/hadoop-env.sh'
  5. 執行以下命令,測試Hadoop是否安裝成功。

    hadoop version

    返回類似如下資訊,表示Hadoop已安裝成功。

    image

步驟三:配置Hadoop

  1. 修改Hadoop設定檔core-site.xml

    1. 執行以下命令,進入編輯頁面。

      sudo vim /opt/hadoop/etc/hadoop/core-site.xml
    2. 輸入i,進入編輯模式。

    3. <configuration></configuration>節點內,插入如下內容。

          <property>
              <name>hadoop.tmp.dir</name>
              <value>file:/opt/hadoop/tmp</value>
              <description>location to store temporary files</description>
          </property>
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://localhost:9000</value>
          </property>

      image

    4. Esc,退出編輯模式,並輸入:wq儲存並退出。

  2. 修改Hadoop設定檔hdfs-site.xml

    1. 執行以下命令,進入編輯頁面。

      sudo vim /opt/hadoop/etc/hadoop/hdfs-site.xml
    2. 輸入i,進入編輯模式。

    3. <configuration></configuration>節點內,插入如下內容。

          <property>
              <name>dfs.replication</name>
              <value>1</value>
          </property>
          <property>
              <name>dfs.namenode.name.dir</name>
              <value>file:/opt/hadoop/tmp/dfs/name</value>
          </property>
          <property>
              <name>dfs.datanode.data.dir</name>
              <value>file:/opt/hadoop/tmp/dfs/data</value>
          </property>

      image

    4. Esc,退出編輯模式,並輸入:wq後儲存並退出。

步驟四:配置SSH免密登入

  1. 執行以下命令,建立公開金鑰和私密金鑰。

    ssh-keygen -t rsa

    回顯資訊如下所示,表示建立公開金鑰和私密金鑰成功。

    image

  2. 執行以下命令,將公開金鑰添加到authorized_keys檔案中。

    cd .ssh
    cat id_rsa.pub >> authorized_keys

步驟五:啟動Hadoop

  1. 執行以下命令,初始化namenode

    hadoop namenode -format
  2. 啟動Hadoop。

    重要
    • 出於系統安全和穩定性考慮,Hadoop官方不推薦使用root使用者來啟動Hadoop服務,直接使用root使用者會因為許可權問題無法啟動Hadoop。您可以通過非root使用者身份啟動Hadoop服務,例如ecs-user使用者等。

    • 如果您一定要使用root使用者啟動Hadoop服務,請在瞭解Hadoop許可權控制及相應風險之後,修改以下設定檔。

      請注意:使用root使用者啟動Hadoop服務會帶來嚴重的安全風險,包括但不限於資料泄露、惡意軟體更容易獲得系統最高許可權、意料之外的許可權問題或行為。更多許可權說明,請參見Hadoop官方文檔

    修改設定檔,以便root使用者可以啟動Hadoop服務。

    一般情況下,以下設定檔位於/opt/hadoop/sbin目錄下。

    1. 在start-dfs.sh和stop-dfs.sh兩個檔案中添加以下參數。

      HDFS_DATANODE_USER=root
      HADOOP_SECURE_DN_USER=hdfs
      HDFS_NAMENODE_USER=root
      HDFS_SECONDARYNAMENODE_USER=root

      image

    2. 在start-yarn.sh,stop-yarn.sh兩個檔案中添加以下參數。

      YARN_RESOURCEMANAGER_USER=root
      HADOOP_SECURE_DN_USER=yarn
      YARN_NODEMANAGER_USER=root

      image

    1. 執行以下命令,啟動HDFS服務。

      這個指令碼會啟動NameNode、SecondaryNameNode和DataNode等組件,從而啟動HDFS服務。

      start-dfs.sh

      回顯資訊如下所示時,表示HDFS服務已啟動。

      image

    2. 執行以下命令,啟動YARN服務。

      這個指令碼會啟動ResourceManager、NodeManager和ApplicationHistoryServer等組件,從而啟動YARN服務。

      start-yarn.sh

      回顯資訊如下所示時,表示YARN服務已啟動。

      image

  3. 執行以下命令,可以查看成功啟動的進程。

    jps

    成功啟動的進程如下所示。

    image

  4. 在本地瀏覽器地址欄輸入http://<ECS公網IP>:8088,訪問YARN的Web UI介面。

    通過該介面可以查看整個叢集的資源使用方式、應用程式狀態(比如MapReduce作業)、隊列資訊等。

    重要

    需確保在ECS執行個體所在安全性群組的入方向中允許存取Hadoop YARN所需的8088連接埠,否則無法訪問。具體操作,請參見添加安全性群組規則

    image

  5. 在本地瀏覽器地址欄輸入http://<ECS公網IP>:9870,訪問NameNode的Web UI介面。

    該介面提供了有關HDFS檔案系統狀態、叢集健康情況、活動節點列表、NameNode日誌等資訊。

    顯示如下介面,則表示Hadoop分布式環境已搭建完成。

    重要

    需確保在ECS執行個體所在安全性群組的入方向中允許存取Hadoop NameNode所需9870連接埠,否則無法訪問。具體操作,請參見添加安全性群組規則

    image.png