天天看點

如何在Ubuntu 18.04上以獨立模式安裝Hadoop

介紹

Hadoop是一個基于Java的程式設計架構,支援在廉價機器叢集上處理和存儲極大資料集。它是大資料競争領域的第一個主要開源項目,由Apache Software Foundation贊助。

Hadoop由四個主要層組成:

  • Hadoop Common是支援其他Hadoop子產品的實用程式和庫的集合。
  • HDFS代表Hadoop分布式檔案系統,負責将資料儲存到磁盤。
  • YARN是Yet Another Resource Negotiator的縮寫,是HDFS的“作業系統”。
  • MapReduce是Hadoop叢集的原始處理模型。它在叢集或映射中配置設定工作,然後将節點的結果組織并減少為對查詢的響應。許多其他處理模型可用于3.x版本的Hadoop。

Hadoop叢集的設定相對複雜,是以該項目包含一個獨立模式,适用于學習Hadoop,執行簡單操作和調試。

在本教程中,我們将以獨立模式安裝Hadoop,并運作其中包含的示例示例MapReduce程式之一來驗證安裝。

準備

要學習本教程,您需要:

  • 具有sudo權限的非root使用者的Ubuntu 18.04伺服器。沒有伺服器的同學可以在這裡購買,不過我個人更推薦您使用免費的騰訊雲開發者實驗室進行試驗,學會安裝後再購買伺服器。

完成此準備後,您就可以安裝Hadoop及其依賴項了。

第1步 - 安裝Java

首先,我們将更新我們的包清單:

sudo apt update           

複制

接下來,我們将在Ubuntu 18.04上安裝OpenJDK,這是預設的Java Development Kit:

sudo apt install default-jdk           

複制

安裝完成後,讓我們檢查一下版本。

java -version           

複制

openjdk 10.0.1 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode)           

複制

此輸出驗證是否已成功安裝OpenJDK。

第2步 - 安裝Hadoop

有了Java,我們将通路Apache Hadoop Releases頁面以查找最新的穩定版本。

導航到您要安裝的發行版的二進制檔案。在本指南中,我們将安裝Hadoop 3.0.3。

如何在Ubuntu 18.04上以獨立模式安裝Hadoop

在下一頁上,右鍵單擊并将連結複制到釋出二進制檔案。

如何在Ubuntu 18.04上以獨立模式安裝Hadoop

在伺服器上,我們将用

wget

來擷取它:

wget http://www-us.apache.org/dist/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz           

複制

注意: Apache網站将動态引導您通路最佳鏡像,是以您的URL可能與上面的URL不比對。

為了確定我們下載下傳的檔案沒有被更改,我們将使用SHA-256進行快速檢查。傳回版本頁面,然後右鍵單擊并将連結複制到您下載下傳的釋出二進制檔案的校驗和檔案:

如何在Ubuntu 18.04上以獨立模式安裝Hadoop

再次,我們将在我們的伺服器上使用

wget

下載下傳檔案:

wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz.mds           

複制

然後運作驗證:

shasum -a 256 hadoop-3.0.3.tar.gz           

複制

db96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a  hadoop-3.0.3.tar.gz           

複制

将此值與

.mds

檔案中的SHA-256值進行比較:

cat hadoop-3.0.3.tar.gz.mds           

複制

...
/build/source/target/artifacts/hadoop-3.0.3.tar.gz:
SHA256 = DB96E2C0 D0D5352D 8984892D FAC4E27C 0E682D98 A497B7E0 4EE97C3E 2019277A
...           

複制

您可以放心地忽略大小寫和空格的差別。我們針對從鏡像下載下傳的檔案運作的指令輸出應該與我們從apache.org下載下傳的檔案中的值相比對。

現在我們已經驗證檔案沒有被破壞或更改,我們将使用帶有

-x

标志的

tar

指令來提取,

-z

l來解壓縮,

-v

來獲得詳細輸出,而

-f

指定我們從檔案中提取。使用tab-completion或在下面的指令中替換正确的版本号:

tar -xzvf hadoop-3.0.3.tar.gz           

複制

最後,我們将提取的檔案移動到

/usr/local

本地安裝軟體的适當位置。如果需要,請更改版本号以比對您下載下傳的版本。

sudo mv hadoop-3.0.3 /usr/local/hadoop           

複制

有了這個軟體,我們就可以配置它的環境了。

第3步 - 配置Hadoop的Java Home

Hadoop要求您将路徑設定為Java,可以是環境變量,也可以是Hadoop配置檔案。

Java的路徑

/usr/bin/java

是一個與

/etc/alternatives/java

的符号連結,它是一個符号連結到預設的Java二進制檔案。我們将使用有

-f

标志的

readlink

以遞歸方式跟蹤路徑的每個部分中的每個符号連結。然後,我們将使用

sed

從輸出中調整

bin/java

為我們提供

JAVA_HOME

的正确的值。

查找預設Java路徑

readlink -f /usr/bin/java | sed "s:bin/java::"           

複制

/usr/lib/jvm/java-11-openjdk-amd64/           

複制

您可以複制此輸出以将Hadoop的Java主目錄設定為此特定版本,這可確定如果預設Java更改,此值不會更改。或者,您可以在檔案中動态使用

readlink

指令,以便Hadoop将自動使用設定為系統預設值的任何Java版本。

首先,打開

hadoop-env.sh

sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh           

複制

然後,選擇以下選項之一:

選項1:設定靜态值

. . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
 . . .            

複制

選項2:使用Readlink動态設定值

. . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
 . . .            

複制

注意:對于Hadoop,

hadoop-env.sh

中的

JAVA_HOME

值将覆寫環境中

/etc/profile

或使用者配置檔案中設定的任何值。

第4步 - 運作Hadoop

現在我們應該能夠運作Hadoop:

/usr/local/hadoop/bin/hadoop           

複制

Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
 or    hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
  where CLASSNAME is a user-provided Java class
​
  OPTIONS is none or any of:
​
--config dir                     Hadoop config directory
--debug                          turn on shell script debug mode
--help                           usage information
buildpaths                       attempt to add class files from build tree
hostnames list[,of,host,names]   hosts to use in slave mode
hosts filename                   list of hosts to use in slave mode
loglevel level                   set the log4j level for this command
workers                          turn on worker mode
​
  SUBCOMMAND is one of:
. . .           

複制

幫助意味着我們已成功配置Hadoop以獨立模式運作。我們将通過運作它附帶的示例MapReduce程式來確定它正常運作。為此,請在我們的主目錄中建立一個目錄

input

,并将Hadoop的配置檔案複制到其中,以将這些檔案用作我們的資料。

mkdir ~/input
cp /usr/local/hadoop/etc/hadoop/*.xml ~/input           

複制

接下來,我們可以使用以下指令來運作MapReduce

hadoop-mapreduce-examples

程式,這是一個包含多個選項的Java歸檔檔案。我們将調用它的

grep

程式,

hadoop-mapreduce-examples

中包括的許多示例之一,後跟輸入目錄

input

和輸出目錄

grep_example

。MapReduce grep程式将計算文字或正規表達式的比對。最後,我們将提供正規表達式

allowed[.]*

以在陳述句的内部或末尾查找單詞

allowed

的出現。表達式區分大小寫,是以如果在句子開頭大寫,我們就找不到該單詞:

/usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar grep ~/input ~/grep_example 'allowed[.]*'           

複制

任務完成後,它會提供已處理内容和遇到的錯誤的摘要,但這不包含實際結果。

. . .
        File System Counters
        FILE: Number of bytes read=1330690
        FILE: Number of bytes written=3128841
        FILE: Number of read operations=0
        FILE: Number of large read operations=0
        FILE: Number of write operations=0
    Map-Reduce Framework
        Map input records=2
        Map output records=2
        Map output bytes=33
        Map output materialized bytes=43
        Input split bytes=115
        Combine input records=0
        Combine output records=0
        Reduce input groups=2
        Reduce shuffle bytes=43
        Reduce input records=2
        Reduce output records=2
        Spilled Records=4
        Shuffled Maps =1
        Failed Shuffles=0
        Merged Map outputs=1
        GC time elapsed (ms)=3
        Total committed heap usage (bytes)=478150656
    Shuffle Errors
        BAD_ID=0
        CONNECTION=0
        IO_ERROR=0
        WRONG_LENGTH=0
        WRONG_MAP=0
        WRONG_REDUCE=0
    File Input Format Counters
        Bytes Read=147
    File Output Format Counters
        Bytes Written=34           

複制

注意:如果輸出目錄已經存在,程式将失敗,而不是看到摘要,輸出将類似于:

. . .
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:244)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:158)           

複制

結果存儲在輸出目錄中,可以通過

cat

在輸出目錄上運作來檢查:

cat ~/grep_example/*           

複制

19  allowed.
1   allowed           

複制

MapReduce任務發現19個單詞

allowed

出現後跟一個句點,一個出現不出現。運作示例程式已驗證我們的獨立安裝正常運作,并且系統上的非特權使用者可以運作Hadoop進行探索或調試。

結論

在本教程中,我們以獨立模式安裝了Hadoop,并通過運作它提供的示例程式對其進行了驗證。

想要了解更多關于以獨立模式安裝Hadoop的相關教程,請前往騰訊雲+社群學習更多知識。

參考文獻:《How to Install Hadoop in Stand-Alone Mode on Ubuntu 18.04》