1. 配置爲1個namenode(master主機),2個datanode(slave1主機+slave2主機)的hadoop集羣模式,node
在VMWare中構建3臺運行Ubuntu的機器做爲服務器;react
關閉操做系統防火牆:ubuntu下默認是關閉的,能夠經過命令ufw status檢查;web
master主機配置以下:apache
vim /etc/hostname 編輯此文件,設置主機名爲masterubuntu
vim /etc/hosts 編輯此文件,添加以下主機內容信息:vim
192.168.107.128 masterbash
192.168.189.129 slave1服務器
192.168.189.130 slave2app
同理配置slave1,ssh
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集羣狀態