本文件說明如何設定和配置單一節點 Hadoop 安裝,以便您可以使用 Hadoop MapReduce 和 Hadoop 分散式檔案系統 (HDFS) 快速執行簡單的作業。
重要:所有生產 Hadoop 群集都使用 Kerberos 來驗證呼叫者和保護 HDFS 資料存取,以及限制運算服務(YARN 等)的存取。
這些說明未涵蓋與任何 Kerberos 服務的整合,- 每個建立生產群集的人員都應將連接到其組織的 Kerberos 基礎架構視為部署的關鍵部分。
請參閱 安全性,了解如何保護群集的詳細資訊。
Linux 所需的軟體包括
必須安裝 Java™。建議的 Java 版本說明在 HadoopJavaVersions 中。
必須安裝 ssh,並且 sshd 必須執行,才能使用管理遠端 Hadoop 程式精靈的 Hadoop 腳本,如果要使用選用的啟動和停止腳本。此外,建議安裝 pdsh,以獲得更好的 ssh 資源管理。
如果您的群集沒有必要的軟體,您將需要安裝它。
例如在 Ubuntu Linux 上
$ sudo apt-get install ssh $ sudo apt-get install pdsh
若要取得 Hadoop 發行版,請從其中一個 Apache 下載鏡像 下載最近的穩定版本。
解壓縮下載的 Hadoop 發行版。在發行版中,編輯檔案 etc/hadoop/hadoop-env.sh
以定義一些參數,如下所示
# set to the root of your Java installation export JAVA_HOME=/usr/java/latest
嘗試以下命令
$ bin/hadoop
這將顯示 hadoop 腳本的使用說明文件。
現在,您已準備好以三種支援模式之一啟動 Hadoop 群集
預設情況下,Hadoop 設定為以非分散式模式執行,作為單一 Java 程序。這對於除錯很有用。
以下範例將解壓縮的 conf 目錄複製為輸入,然後尋找並顯示給定正規表示式的每個匹配項。輸出寫入給定的輸出目錄。
$ mkdir input $ cp etc/hadoop/*.xml input $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep input output 'dfs[a-z.]+' $ cat output/*
Hadoop 也可以在單一節點上以偽分散式模式執行,其中每個 Hadoop 程式精靈在一個獨立的 Java 程序中執行。
使用以下
etc/hadoop/core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://127.0.0.1:9000</value> </property> </configuration>
etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
現在檢查是否可以在沒有密碼的情況下 ssh 到 localhost
$ ssh localhost
如果您無法在沒有密碼的情況下 ssh 到 localhost,請執行下列命令
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys
下列說明是在本地執行 MapReduce 任務。如果您要在 YARN 上執行任務,請參閱 單一節點上的 YARN。
格式化檔案系統
$ bin/hdfs namenode -format
啟動 NameNode 守護程式和 DataNode 守護程式
$ sbin/start-dfs.sh
hadoop 守護程式記錄輸出寫入 $HADOOP_LOG_DIR
目錄(預設為 $HADOOP_HOME/logs
)。
瀏覽 NameNode 的網頁介面;預設情況下,它可以在下列位置使用
https://127.0.0.1:9870/
建立執行 MapReduce 任務所需的 HDFS 目錄
$ bin/hdfs dfs -mkdir -p /user/<username>
將輸入檔案複製到分散式檔案系統
$ bin/hdfs dfs -mkdir input $ bin/hdfs dfs -put etc/hadoop/*.xml input
執行一些提供的範例
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep input output 'dfs[a-z.]+'
檢查輸出檔案:從分散式檔案系統將輸出檔案複製到本地檔案系統並檢查它們
$ bin/hdfs dfs -get output output $ cat output/*
或
在分散式檔案系統上檢視輸出檔案
$ bin/hdfs dfs -cat output/*
完成後,使用下列方式停止守護程式
$ sbin/stop-dfs.sh
您可以透過設定幾個參數並額外執行 ResourceManager 守護程式和 NodeManager 守護程式,在偽分散式模式下在 YARN 上執行 MapReduce 任務。
下列說明假設 上述說明 的 1. ~ 4. 步驟已經執行。
如下設定參數
etc/hadoop/mapred-site.xml
:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.application.classpath</name> <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value> </property> </configuration>
etc/hadoop/yarn-site.xml
:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value> </property> </configuration>
啟動 ResourceManager 守護程式和 NodeManager 守護程式
$ sbin/start-yarn.sh
瀏覽 ResourceManager 的網頁介面;預設情況下,它可以在下列位置使用
https://127.0.0.1:8088/
執行 MapReduce 任務。
完成後,使用下列方式停止守護程式
$ sbin/stop-yarn.sh
有關設定完全分散式、非平凡叢集的資訊,請參閱 叢集設定。