- Hadoop 教程
- Hadoop - 首頁
- Hadoop - 大資料概述
- Hadoop - 大資料解決方案
- Hadoop - 簡介
- Hadoop - 環境設定
- Hadoop - HDFS 概述
- Hadoop - HDFS 操作
- Hadoop - 命令參考
- Hadoop - MapReduce
- Hadoop - Streaming
- Hadoop - 多節點叢集
- Hadoop 有用資源
- Hadoop - 常見問題解答
- Hadoop - 快速指南
- Hadoop - 有用資源
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/
步驟 5 - 驗證叢集的所有應用程式
訪問叢集所有應用程式的預設埠號為 8088。使用以下 url 訪問此服務。
https://:8088/