Hadoop - 環境搭建



Hadoop 支援 GNU/Linux 平臺及其衍生版本。因此,必須安裝 Linux 作業系統才能設定 Hadoop 環境。如果您使用的作業系統不是 Linux,可以在其中安裝 Virtualbox 軟體,並在 Virtualbox 中執行 Linux。

安裝前設定

在將 Hadoop 安裝到 Linux 環境之前,需要使用 **ssh**(安全外殼)設定 Linux。請按照以下步驟設定 Linux 環境。

建立使用者

首先,建議為 Hadoop 建立一個單獨的使用者,以將 Hadoop 檔案系統與 Unix 檔案系統隔離開。請按照以下步驟建立使用者:

  • 使用命令“su”開啟 root 許可權。

  • 使用命令“useradd 使用者名稱”從 root 帳戶建立使用者。

  • 現在,您可以使用命令“su 使用者名稱”開啟現有的使用者帳戶。

開啟 Linux 終端並鍵入以下命令以建立使用者。

$ su 
   password: 
# useradd hadoop 
# passwd hadoop 
   New passwd: 
   Retype new passwd 

SSH 設定和金鑰生成

SSH 設定是執行叢集上不同操作(例如啟動、停止、分散式守護程式 shell 操作)所必需的。為了對 Hadoop 的不同使用者進行身份驗證,需要為 Hadoop 使用者提供公鑰/私鑰對,並將其與不同的使用者共享。

以下命令用於使用 SSH 生成金鑰對。將 id_rsa.pub 中的公鑰複製到 authorized_keys,並分別向所有者提供 authorized_keys 檔案的讀寫許可權。

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

安裝 Java

Java 是 Hadoop 的主要先決條件。首先,您應該使用命令“java -version”驗證系統中是否存在 java。java 版本命令的語法如下所示。

$ java -version 

如果一切正常,將顯示以下輸出。

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)  

如果您的系統中未安裝 java,請按照以下步驟安裝 java。

步驟 1

訪問以下連結下載 java(JDK <最新版本> - X64.tar.gz): www.oracle.com

然後將 **jdk-7u71-linux-x64.tar.gz** 下載到您的系統中。

步驟 2

通常您會在“下載”資料夾中找到下載的 java 檔案。驗證它並使用以下命令解壓 **jdk-7u71-linux-x64.gz** 檔案。

$ cd Downloads/ 
$ ls 
jdk-7u71-linux-x64.gz 

$ tar zxf jdk-7u71-linux-x64.gz 
$ ls 
jdk1.7.0_71   jdk-7u71-linux-x64.gz 

步驟 3

要使所有使用者都能使用 java,您必須將其移動到“/usr/local/”位置。開啟 root 許可權,然後鍵入以下命令。

$ su 
password: 
# mv jdk1.7.0_71 /usr/local/ 
# exit 

步驟 4

要設定 **PATH** 和 **JAVA_HOME** 變數,請將以下命令新增到 **~/.bashrc** 檔案中。

export JAVA_HOME=/usr/local/jdk1.7.0_71 
export PATH=$PATH:$JAVA_HOME/bin 

現在將所有更改應用到當前執行的系統中。

$ source ~/.bashrc

步驟 5

使用以下命令配置 java 備選方案:

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2
# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2

# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar

現在按照上述說明從終端驗證 java -version 命令。

下載 Hadoop

使用以下命令從 Apache 軟體基金會下載並解壓 Hadoop 2.4.1。

$ su 
password: 
# cd /usr/local 
# wget http://apache.claz.org/hadoop/common/hadoop-2.4.1/ 
hadoop-2.4.1.tar.gz 
# tar xzf hadoop-2.4.1.tar.gz 
# mv hadoop-2.4.1/* to hadoop/ 
# exit 

Hadoop 操作模式

下載 Hadoop 後,您可以以三種受支援的模式之一操作 Hadoop 叢集:

  • **本地/獨立模式** - 在您的系統中下載 Hadoop 後,預設情況下它以獨立模式配置,並且可以作為單個 java 程序執行。

  • **偽分散式模式** - 這是在單臺機器上的分散式模擬。每個 Hadoop 守護程式(例如 hdfs、yarn、MapReduce 等)都將作為單獨的 java 程序執行。此模式對開發很有用。

  • **完全分散式模式** - 此模式完全分佈,至少需要兩臺或多臺機器作為叢集。我們將在接下來的章節中詳細介紹此模式。

在獨立模式下安裝 Hadoop

這裡我們將討論在獨立模式下安裝 **Hadoop 2.4.1**。

沒有執行的守護程式,所有內容都在單個 JVM 中執行。獨立模式適用於在開發過程中執行 MapReduce 程式,因為它易於測試和除錯。

設定 Hadoop

您可以透過將以下命令新增到 **~/.bashrc** 檔案中來設定 Hadoop 環境變數。

export HADOOP_HOME=/usr/local/hadoop 

在繼續之前,您需要確保 Hadoop 執行良好。只需發出以下命令:

$ hadoop version 

如果您的設定一切正常,則應該看到以下結果:

Hadoop 2.4.1 
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768 
Compiled by hortonmu on 2013-10-07T06:28Z 
Compiled with protoc 2.5.0
From source with checksum 79e53ce7994d1628b240f09af91e1af4 

這意味著您的 Hadoop 獨立模式設定執行良好。預設情況下,Hadoop 配置為在單臺機器上以非分散式模式執行。

示例

讓我們檢查一個簡單的 Hadoop 示例。Hadoop 安裝提供以下示例 MapReduce jar 檔案,該檔案提供 MapReduce 的基本功能,並可用於計算,例如 Pi 值、給定檔案列表中的單詞計數等。

$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar 

讓我們建立一個輸入目錄,我們將向其中推送一些檔案,我們的要求是計算這些檔案中的總單詞數。為了計算總單詞數,我們不需要編寫自己的 MapReduce,因為 .jar 檔案包含單詞計數的實現。您可以使用相同的 .jar 檔案嘗試其他示例;只需發出以下命令即可檢查 hadoop-mapreduce-examples-2.2.0.jar 檔案支援的 MapReduce 功能程式。

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar 

步驟 1

在輸入目錄中建立臨時內容檔案。您可以根據需要在任何位置建立此輸入目錄。

$ mkdir input 
$ cp $HADOOP_HOME/*.txt input 
$ ls -l input 

這將在您的輸入目錄中生成以下檔案:

total 24 
-rw-r--r-- 1 root root 15164 Feb 21 10:14 LICENSE.txt 
-rw-r--r-- 1 root root   101 Feb 21 10:14 NOTICE.txt
-rw-r--r-- 1 root root  1366 Feb 21 10:14 README.txt 

這些檔案已從 Hadoop 安裝主目錄複製。為了您的實驗,您可以擁有不同且更大的檔案集。

步驟 2

讓我們啟動 Hadoop 程序以計算輸入目錄中所有檔案中單詞的總數,如下所示:

$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar  wordcount input output 

步驟 3

步驟 2 將執行必要的處理並將輸出儲存在 output/part-r00000 檔案中,您可以使用以下命令進行檢查:

$cat output/* 

它將列出輸入目錄中所有檔案中所有單詞及其總數。

"AS      4 
"Contribution" 1 
"Contributor" 1 
"Derivative 1
"Legal 1
"License"      1
"License");     1 
"Licensor"      1
"NOTICE”        1 
"Not      1 
"Object"        1 
"Source”        1 
"Work”    1 
"You"     1 
"Your")   1 
"[]"      1 
"control"       1 
"printed        1 
"submitted"     1 
(50%)     1 
(BIS),    1 
(C)       1 
(Don't)   1 
(ECCN)    1 
(INCLUDING      2 
(INCLUDING,     2 
.............

在偽分散式模式下安裝 Hadoop

請按照以下步驟在偽分散式模式下安裝 Hadoop 2.4.1。

步驟 1 - 設定 Hadoop

您可以透過將以下命令新增到 **~/.bashrc** 檔案中來設定 Hadoop 環境變數。

export HADOOP_HOME=/usr/local/hadoop 
export HADOOP_MAPRED_HOME=$HADOOP_HOME 
export HADOOP_COMMON_HOME=$HADOOP_HOME 

export HADOOP_HDFS_HOME=$HADOOP_HOME 
export YARN_HOME=$HADOOP_HOME 
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 
export HADOOP_INSTALL=$HADOOP_HOME 

現在將所有更改應用到當前執行的系統中。

$ source ~/.bashrc 

步驟 2 - Hadoop 配置

您可以在“$HADOOP_HOME/etc/hadoop”位置找到所有 Hadoop 配置檔案。需要根據您的 Hadoop 基礎設施更改這些配置檔案。

$ cd $HADOOP_HOME/etc/hadoop

為了使用 java 開發 Hadoop 程式,您必須透過將 **JAVA_HOME** 值替換為您系統中 java 的位置來重置 **hadoop-env.sh** 檔案中的 java 環境變數。

export JAVA_HOME=/usr/local/jdk1.7.0_71

以下是您必須編輯以配置 Hadoop 的檔案列表。

core-site.xml

**core-site.xml** 檔案包含諸如 Hadoop 例項使用的埠號、為檔案系統分配的記憶體、儲存資料的記憶體限制以及讀/寫緩衝區大小等資訊。

開啟 core-site.xml 並將以下屬性新增到 <configuration>、</configuration> 標記之間。

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://:9000</value> 
   </property>
</configuration>

hdfs-site.xml

**hdfs-site.xml** 檔案包含諸如複製資料的值、namenode 路徑以及本地檔案系統的 datanode 路徑等資訊。這意味著您要儲存 Hadoop 基礎設施的位置。

讓我們假設以下資料。

dfs.replication (data replication value) = 1 

(In the below given path /hadoop/ is the user name. 
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.) 
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode 

(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.) 
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode 

開啟此檔案並將以下屬性新增到此檔案中的 <configuration> </configuration> 標記之間。

<configuration>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
   </property>
    
   <property>
      <name>dfs.name.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value>
   </property>
    
   <property>
      <name>dfs.data.dir</name> 
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value> 
   </property>
</configuration>

**注意** - 在上述檔案中,所有屬性值都是使用者定義的,您可以根據您的 Hadoop 基礎設施進行更改。

yarn-site.xml

此檔案用於在 Hadoop 中配置 yarn。開啟 yarn-site.xml 檔案並將以下屬性新增到此檔案中的 <configuration>、</configuration> 標記之間。

<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value> 
   </property>
</configuration>

mapred-site.xml

此檔案用於指定我們正在使用哪個 MapReduce 框架。預設情況下,Hadoop 包含 yarn-site.xml 的模板。首先,需要使用以下命令將檔案從 **mapred-site.xml.template** 複製到 **mapred-site.xml** 檔案。

$ cp mapred-site.xml.template mapred-site.xml 

開啟 **mapred-site.xml** 檔案並將以下屬性新增到此檔案中的 <configuration>、</configuration> 標記之間。

<configuration>
   <property> 
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

驗證 Hadoop 安裝

以下步驟用於驗證 Hadoop 安裝。

步驟 1 - Name Node 設定

使用命令“hdfs namenode -format”設定 namenode,如下所示。

$ cd ~ 
$ hdfs namenode -format 

預期結果如下。

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG:   host = localhost/192.168.1.11 
STARTUP_MSG:   args = [-format] 
STARTUP_MSG:   version = 2.4.1 
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory 
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted. 
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to 
retain 1 images with txid >= 0 
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0 
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************ 
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11 
************************************************************/

步驟 2 - 驗證 Hadoop dfs

以下命令用於啟動 dfs。執行此命令將啟動您的 Hadoop 檔案系統。

$ start-dfs.sh 

預期輸出如下:

10/24/14 21:37:56 
Starting namenodes on [localhost] 
localhost: starting namenode, logging to /home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-namenode-localhost.out 
localhost: starting datanode, logging to /home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-datanode-localhost.out 
Starting secondary namenodes [0.0.0.0]

步驟 3 - 驗證 Yarn 指令碼

以下命令用於啟動 yarn 指令碼。執行此命令將啟動您的 yarn 守護程式。

$ start-yarn.sh 

預期輸出如下:

starting yarn daemons 
starting resourcemanager, logging to /home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out 
localhost: starting nodemanager, logging to /home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out 

步驟 4 - 在瀏覽器中訪問 Hadoop

訪問 Hadoop 的預設埠號為 50070。使用以下 url 在瀏覽器中獲取 Hadoop 服務。

https://:50070/

Accessing Hadoop on Browser

步驟 5 - 驗證叢集的所有應用程式

訪問叢集所有應用程式的預設埠號為 8088。使用以下 url 訪問此服務。

https://:8088/

Hadoop Application Cluster
廣告
© . All rights reserved.