Hadoop教程:安裝與環境設定
Hadoop支援Windows, Mac, Linux, 但推薦是用Linux環境學習Hadoop。因此,我們必須安裝一個Linux作業系統來設定Hadoop環境。如果您的作業系統不是Linux,那麼您可以在其中安裝一個Virtualbox軟體,並在Virtualbox中包含Linux。
安裝前配置
在將Hadoop安裝到Linux環境之前,我們需要使用ssh(Secure Shell)來設定Linux。按照下面給出的步驟設定Linux環境。
建立使用者
首先,建議為Hadoop建立一個單獨的使用者,以便將Hadoop檔案系統與Unix檔案系統隔離開來。按照以下步驟建立使用者:
- 使用“su”命令開啟根目錄。
- 使用“useradd username”命令從根帳戶建立一個使用者。
- 現在您可以使用“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
Hadoop必須安裝Java。首先,您應該使用“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。
Step 1
下載java (JDK <最新版本> - X64.tar.gz),請訪問以下連結 ofollow,noindex">http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads1880260.html 。
然後jdk-7u71-linux-x64.tar.gz將被下載到您的系統中。
Step 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_71jdk-7u71-linux-x64.gz
Step 3
要讓所有使用者都可以使用java,必須將其移動到“/usr/local/”位置。開啟root,並鍵入以下命令。
$ su password: # mv jdk1.7.0_71 /usr/local/ # exit
Step 4
要設定PATH和JAVA_HOME變數,請向~/.bashrc新增以下命令。
export JAVA_HOME=/usr/local/jdk1.7.0_71 export PATH=$PATH:$JAVA_HOME/bin
現在令所有更改生效。
$ source ~/.bashrc
Step 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版本命令,使用之前提到的檢視Java版本命令。
下載Hadoop
使用以下命令從Apache software foundation下載並提取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是否安裝成功:
$ 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 -example -2.2.0.jar檔案支援的MapReduce功能程式。
$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar
Step 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 root101 Feb 21 10:14 NOTICE.txt -rw-r--r-- 1 root root1366 Feb 21 10:14 README.txt
這些檔案是從Hadoop安裝主目錄複製的。對於您的實驗,您可以擁有不同的大檔案集。
Step 2
步驟2將進行所需的處理,並將輸出儲存在output/part-r00000檔案中,您可以使用以下命令進行檢查:
$cat output/*
它將列出輸入目錄中所有檔案中可用的所有單詞及其總數。
"AS4 "Contribution" 1 "Contributor" 1 "Derivative 1 "Legal 1 "License"1 "License");1 "Licensor"1 "NOTICE”1 "Not1 "Object"1 "Source”1 "Work”1 "You"1 "Your")1 "[]"1 "control"1 "printed1 "submitted"1 (50%)1 (BIS),1 (C)1 (Don't)1 (ECCN)1 (INCLUDING2 (INCLUDING,2 .............
以偽分散式模式安裝Hadoop
按照下面給出的步驟以偽分散式模式安裝Hadoop 2.4.1。
Step 1: 環境配置
您可以通過向~/.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
Step 2: Hadoop配置
您可以在“$HADOOP_HOME/etc/hadoop”位置找到所有Hadoop配置檔案。需要根據Hadoop基礎設施對這些配置檔案進行更改。
$ cd $HADOOP_HOME/etc/hadoop
為了用java開發Hadoop程式,必須在 Hadoop -env.sh 檔案中替換 JAVA_HOME 值
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://localhost: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
這個檔案用於將yarn配置到Hadoop中。開啟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的安裝。
Step 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 ************************************************************/
Step 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]
Step 3: 驗證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
Step 4: 在瀏覽器上訪問Hadoop
訪問Hadoop的預設埠號是50070。使用以下url在瀏覽器上獲取Hadoop服務。

hadoop_on_browser.jpg
Step 5: 驗證叢集中的所有應用程式
訪問叢集所有應用程式的預設埠號是8088。使用以下url訪問此服務。

hadoop_application_cluster.jpg