目錄
4.1.獨立運行(Standalone Operation)
4.2.僞分佈式操作(Pseudo-Distributed Operation)
4.3.全分佈式運行(Fully-Distributed Operation)
1.目的
本文檔介紹瞭如何設置和配置單節點Hadoop安裝,以便您可以使用Hadoop MapReduce和Hadoop分佈式文件系統(HDFS)快速執行簡單的操作。
2.先決條件
2.1.支持平臺
- 支持GNU / Linux作爲開發和生產平臺。 Hadoop在具有2000個節點的GNU / Linux集羣上可以正常運行,已經得到證明。
- Windows也是受支持的平臺,但是以下步驟僅適用於Linux。 要在Windows上設置Hadoop,請參見 wiki page。
2.2.必備軟件
Linux所需的軟件包括:
- 必須安裝Java™。HadoopJavaVersions中描述了推薦的Java版本。
- 如果要使用可選的啓動和停止腳本,則必須安裝ssh且sshd必須正在運行以使用管理遠程Hadoop守護程序的Hadoop腳本。 另外,建議也安裝pdsh以便更好地進行ssh資源管理。
2.3.安裝軟件
如果您的羣集沒有必需的軟件,則需要安裝它。
例如在Ubuntu Linux上:
$ sudo apt-get install ssh
$ sudo apt-get install pdsh
3.下載
要獲得Hadoop發行版,請從其中一個 Apache Download Mirrors下載最新的穩定版本。
4.準備啓動Hadoop集羣
將下載的Hadoop發行版的壓縮包解壓縮。 在發行版中,編輯文件etc/hadoop/hadoop-env.sh以定義一些參數,如下所示:
# set to the root of your Java installation
export JAVA_HOME=/usr/java/latest
然後執行下面的命令:
$ bin/hadoop
這將顯示hadoop腳本的用法文檔。
現在,您可以以三種支持的模式之一啓動Hadoop集羣:
4.1.獨立運行(Standalone Operation)
默認情況下,Hadoop被配置爲在非分佈式模式下作爲單個Java進程運行。 這對於調試很有用。
下面的示例複製解壓縮的conf目錄以用作輸入,然後查找並顯示給定正則表達式的每個匹配項。 輸出被寫入給定的輸出目錄。
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
$ cat output/*
4.2.僞分佈式操作(Pseudo-Distributed Operation)
Hadoop還可在僞分佈式模式下在單節點上運行,其中每個Hadoop守護進程均在單獨的Java進程中運行; Hadoop還可在僞分佈式模式下在單節點上運行,其中每個Hadoop守護程序均在單個節點上運行單獨的Java進程。
4.2.1.配置
使用以下內容:
etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
4.2.2.設置無密碼SSH
現在檢查您是否可以在沒有密碼的情況下SSH到本地主機:
$ ssh localhost
如果沒有密碼就無法SSH到本地主機,請執行以下命令:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
4.2.3.執行
以下說明是在本地運行MapReduce作業。 如果要在YARN上執行作業,請參閱“ YARN on Single Node”。
1.格式化文件系統:
$ bin/hdfs namenode -format
2.啓動NameNode守護程序和DataNode守護程序:
$ sbin/start-dfs.sh
hadoop守護程序日誌輸出將寫入$HADOOP_LOG_DIR目錄(默認爲$HADOOP_HOME/logs)。
3.瀏覽Web界面以查找NameNode; 默認情況下,它在以下位置可用:
- NameNode - http://localhost:9870/
4.設置執行MapReduce作業所需的HDFS目錄:
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/<username>
5.將輸入文件複製到分佈式文件系統中:
$ bin/hdfs dfs -mkdir input
$ bin/hdfs dfs -put etc/hadoop/*.xml input
6.運行提供的一些示例:
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
7.檢查輸出文件:將輸出文件從分佈式文件系統複製到本地文件系統並檢查它們:
$ bin/hdfs dfs -get output output
$ cat output/*
或者
查看分佈式文件系統上的輸出文件:
$ bin/hdfs dfs -cat output/*
完成後,使用以下命令停止守護進程:
$ sbin/stop-dfs.sh
4.2.4.在單個節點上的YARN
您可以通過設置一些參數並另外運行ResourceManager守護程序和NodeManager守護程序,以僞分佈式模式在YARN上運行MapReduce作業。
以下指令假定上述指令的1.〜4.步驟已經執行。
1.配置參數如下:
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_MAPRED_HOME</value>
</property>
</configuration>
2.啓動ResourceManager守護程序和NodeManager守護程序:
$ sbin/start-yarn.sh
3.瀏覽Web界面以找到ResourceManager; 默認情況下,它在以下位置可用:
- ResourceManager - http://localhost:8088/
4.運行MapReduce作業。
5.完成後,使用以下命令停止守護進程:
$ sbin/stop-yarn.sh
4.3.全分佈式運行(Fully-Distributed Operation)
有關設置fully-distributed, non-trivial羣集的信息,請參閱集羣設置。