這裏搭建一個 3 節點的 Hadoop 集羣,其中三臺主機均部署 DataNode
和 NodeManager
服務,但只有 hadoop001 上部署 NameNode
和 ResourceManager
服務。java
Hadoop 的運行依賴 JDK,須要預先安裝。其安裝步驟單獨整理至:node
在每臺主機上使用 ssh-keygen
命令生成公鑰私鑰對:git
ssh-keygen
將 hadoop001
的公鑰寫到本機和遠程機器的 ~/ .ssh/authorized_key
文件中:github
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop001 ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop002 ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop003
ssh hadoop002 ssh hadoop003
下載 Hadoop。這裏我下載的是 CDH 版本 Hadoop,下載地址爲:http://archive.cloudera.com/cdh5/cdh/5/shell
# tar -zvxf hadoop-2.6.0-cdh5.15.2.tar.gz
編輯 profile
文件:vim
# vim /etc/profile
增長以下配置:服務器
export HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.15.2 export PATH=${HADOOP_HOME}/bin:$PATH
執行 source
命令,使得配置當即生效:app
# source /etc/profile
進入 ${HADOOP_HOME}/etc/hadoop
目錄下,修改配置文件。各個配置文件內容以下:ssh
# 指定JDK的安裝位置 export JAVA_HOME=/usr/java/jdk1.8.0_201/
<configuration> <property> <!--指定 namenode 的 hdfs 協議文件系統的通訊地址--> <name>fs.defaultFS</name> <value>hdfs://hadoop001:8020</value> </property> <property> <!--指定 hadoop 集羣存儲臨時文件的目錄--> <name>hadoop.tmp.dir</name> <value>/home/hadoop/tmp</value> </property> </configuration>
<property> <!--namenode 節點數據(即元數據)的存放位置,能夠指定多個目錄實現容錯,多個目錄用逗號分隔--> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/namenode/data</value> </property> <property> <!--datanode 節點數據(即數據塊)的存放位置--> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/datanode/data</value> </property>
<configuration> <property> <!--配置 NodeManager 上運行的附屬服務。須要配置成 mapreduce_shuffle 後才能夠在 Yarn 上運行 MapReduce 程序。--> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <!--resourcemanager 的主機名--> <name>yarn.resourcemanager.hostname</name> <value>hadoop001</value> </property> </configuration>
<configuration> <property> <!--指定 mapreduce 做業運行在 yarn 上--> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
配置全部從屬節點的主機名或 IP 地址,每行一個。全部從屬節點上的 DataNode
服務和 NodeManager
服務都會被啓動。oop
hadoop001 hadoop002 hadoop003
將 Hadoop 安裝包分發到其餘兩臺服務器,分發後建議在這兩臺服務器上也配置一下 Hadoop 的環境變量。
# 將安裝包分發到hadoop002 scp -r /usr/app/hadoop-2.6.0-cdh5.15.2/ hadoop002:/usr/app/ # 將安裝包分發到hadoop003 scp -r /usr/app/hadoop-2.6.0-cdh5.15.2/ hadoop003:/usr/app/
在 Hadoop001
上執行 namenode 初始化命令:
hdfs namenode -format
進入到 Hadoop001
的 ${HADOOP_HOME}/sbin
目錄下,啓動 Hadoop。此時 hadoop002
和 hadoop003
上的相關服務也會被啓動:
# 啓動dfs服務 start-dfs.sh # 啓動yarn服務 start-yarn.sh
在每臺服務器上使用 jps
命令查看服務進程,或直接進入 Web-UI 界面進行查看,端口爲 50070
。能夠看到此時有三個可用的 Datanode
:
點擊 Live Nodes
進入,能夠看到每一個 DataNode
的詳細狀況:
接着能夠查看 Yarn 的狀況,端口號爲 8088
:
提交做業到集羣的方式和單機環境徹底一致,這裏以提交 Hadoop 內置的計算 Pi 的示例程序爲例,在任何一個節點上執行均可以,命令以下:
hadoop jar /usr/app/hadoop-2.6.0-cdh5.15.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.15.2.jar pi 3 3
更多大數據系列文章能夠參見 GitHub 開源項目: 大數據入門指南