1. 配置為1個namenode(master主機),2個datanode(slave1主機+slave2主機)的hadoop叢集模式,
在VMWare中構建3臺執行Ubuntu的機器作為伺服器;
關閉作業系統防火牆:ubuntu下預設是關閉的,可以通過命令ufw status檢查;
master主機配置如下:
vim /etc/hostname 編輯此檔案,設定主機名為master
vim /etc/hosts 編輯此檔案,新增如下主機內容資訊:
192.168.107.128 master
192.168.189.129 slave1
192.168.189.130 slave2
同理配置slave1,
vim /etc/hostname 編輯此檔案,設定主機名為slave1
vim /etc/hosts 編輯此檔案,新增如下主機內容資訊:
192.168.107.128 master
192.168.189.129 slave1
192.168.189.130 slave2
同理配置slave2主機
vim /etc/hostname 編輯此檔案,設定主機名為slave2
vim /etc/hosts 編輯此檔案,新增如下主機內容資訊:
192.168.107.128 master
192.168.189.129 slave1
192.168.189.130 slave2
2. 下載安裝jdk1.8.0_91,並設定好環境變數;
如下命令在master機器上配置:
vim .bashrc 編輯此檔案,新增如下內容:
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JAVA_BIN=$JAVA_HOME/bin
export JAVA_LIB=$JAVA_HOME/lib
export
CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar
export PATH=$JAVA_BIN:$PATH
退出root賬戶,重新登陸,使環境變數生效。
master,slave1,slave2三臺伺服器配置一樣。
3. 安裝配置ssh, 使得master主機能夠免密碼ssh登入到所有slave主機,因為叢集裡面的主機需要在後臺通訊。
(1)安裝:
SSH分客戶端openssh-client和openssh-server,如果你只是想登陸別的機器的SSH只需要安裝openssh-client(ubuntu有預設 安裝客戶端),如果要使本機開放SSH服務就需要安裝openssh-server。
(2) 配置免密碼登陸:
在master主機上登陸root使用者, 輸入命令:ssh-keygen -t
rsa
然後根據提示一直按enter,就會按預設的選項生成的金鑰對(私鑰id_rsa和公鑰id_rsa.pub)並儲存在/root/.ssh資料夾中;
將master伺服器上的公鑰拷貝到slave1上,輸入命令:ssh-copy-id root@slave1(root為slave1上的賬戶)
將master伺服器上的公鑰拷貝到slave2上,輸入命令:ssh-copy-id root@slave2(root為slave2上的賬戶)
可以測試免密碼登陸是否成功,輸入命令:ssh slave1或ssh slave2來測試,若不用密碼錶是配置成功
4. 下載編譯好的hadoop二進位制檔案在master主機上
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.0.0/hadoop-3.0.0.tar.gz
解壓:tar -zxvf
hadoop-3.0.0-src.tar.gz 至 /usr/local/hadoop-3.0.0
5. 在master主機上設定相關環境變數,將hadoop的bin目錄下的可執行檔案加入到系統環境
vim .bashrc 編輯此檔案,新增如下內容:
export
HADOOP_HOME=/usr/local/hadoop-3.0.0
export
PATH=$PATH:$HADOOP_HOME/bin
使root使用者重新登陸後,此環境變數生效
同理配置slave1和slave2兩臺主機,重新用root賬戶登陸後使環境變數生效
6. 配置hadoop環境變數
vim /usr/local/hadoop-3.0.0/etc/hadoop/hadoop-env.sh
編輯hadoop的全域性配置檔案,設定JAVA_HOME環境變數:
export JAVA_HOME=/usr/local/jdk1.8.0_91
設定哪個使用者可以執行namenode和datanode命令
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
設定哪個使用者可以啟動resourcemanager和弄得manager的命令
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
執行source
hadoop-env.sh使環境變數生效
同理配置slave1和slave2兩臺主機
7. 建立相關目錄 ,依次在所有主機上執行
root@master:/usr/local/hadoop-3.0.0# mkdir tmp
root@master:/usr/local/hadoop-3.0.0# mkdir hdfs
root@master:/usr/local/hadoop-3.0.0# cd hdfs/
root@master:/usr/local/hadoop-3.0.0/hdfs# mkdir name
root@master:/usr/local/hadoop-3.0.0/hdfs# mkdir tmp
root@master:/usr/local/hadoop-3.0.0/hdfs# mkdir data
8. 配置核心配置檔案core-site.xml
在master主機上配置hdfs地址
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-3.0.0/tmp</value>
<description>A base for other
temporary directories</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> #master為主機名
<description>The name of the default
file system</description>
</property>
</configuration>
上面/usr/local/hadoop-3.0.0/tmp為建立的臨時資料夾;master為主機名
9. 編輯hdfs-site.xml檔案,配置副本的個數及資料的存放路徑
<configuration>
<property>
<name>dfs.replication</name> --資料塊的副本數量
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name> --後設資料存放路徑
<value>/usr/local/hadoop-3.0.0/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name> --資料節點存放路徑
<value>/usr/local/hadoop-3.0.0/hdfs/data</value>
</property>
</configuration>
10. 配置mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
11. 配置yarn-site.xml檔案
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
12. 配置workers 檔案,列出所有workers的主機名
vim workers
slave1
slave2
hdfs分散式檔案系統下的datanode程式和YARN下面的nodemanager程式會在這些workers主機上啟動
注意:hadoop2.x配置的是slaves檔案
13. 遠端複製hadoop3.0.0檔案下所有檔案到slave1和slave2的主機上
scp -r hadoop-3.0.0 root@slave1:/usr/local/
scp -r hadoop-3.0.0 root@slave2:/usr/local/
14. 啟動hdfs叢集
在master主機上執行以下命令,格式化hdfs檔案系統
$HADOOP_HOME/bin/hdfs namenode -format
在master主機上執行以下命令,初始化namenode節點
$HADOOP_HOME/bin/hdfs --daemon start
namenode
分別在所有slave節點上執行以下命令,初始化datanode節點
$HADOOP_HOME/bin/hdfs --daemon start
datanode
如果前面的ssh配置成功,也可以直接
$HADOOP_HOME/sbin/start-dfs.sh 啟動所有程式
(確保ssh master免密碼登陸能成功,一開始我可以免密碼登陸ssh slave1和ssh slave2,不能免密碼登陸ssh master,後面再master主機目錄下,切換到~/.ssh目錄,執行cat id_rsa.pub >>
authorized_keys就可以了)
15. 啟動YARN
在master主機上啟動resourcemanage程式
$HADOOP_HOME/bin/yarn
--daemon start resourcemanager
在所有slave節點上啟動nodemanager程式
$HADOOP_HOME/bin/yarn
--daemon start nodemanager
如果前面的ssh配置成功,也可以直接
$HADOOP_HOME/sbin/start-yarn.sh 啟動所有程式
16. 通過網頁訪問hdfs叢集的狀態
預設埠時9870,可以通過hdfs-default.xml配置檔案裡面的 dfs.namenode.http-address配置
hdfs叢集狀態
17. 通過網頁訪問YARN叢集的狀態
預設埠是8088,可通過yarn-site.xml檔案裡面的yarn.resourcemanager.webapp.address配置
YARN管理下的hadoop叢集狀態