目錄
項目分佈式架構
Namenode | Hadoop002 |
SecondaryNamenode | Hadoop003 |
ResourceManager | Hadoop002 |
DataNode | 位於各個節點(1-8) |
NodeManager | 位於各個節點(1-8) |
前期準備工作
1.選購阿里雲服務器
首先就是選購阿里雲服務器,我選擇的是Ubuntu 18.04系統
在選購時在阿里雲的每臺機器指定用戶名、主機名、密碼,一般用戶名相同,密碼相同。
主機名hostname爲xxx1-xxx8比較好記。
找個空白的txt記錄下所有節點的內網IP地址和外網ip地址
我選擇的是Hadoop 2.6.0 和JDK1.8 事先把linux安裝包下好
正式配置工作
(以下介紹的爲每個節點都必備的工作)
2.啓動遠程連接
3.關閉防火牆
sudo ufw disable //關閉防火牆
4.創建操作用戶、修改權限
useradd -m hadoop //創建Hadoop用戶用於操作
passwd hadoop //爲創建的Hadoop用戶指定密碼
修改Hadoop的權限:將Hadoop加進sudoers列表
%hadoop ALL=(ALL:ALL) ALL
sudo vi /etc/passwd 修改Hadoop的顯示情況(原來僅顯示$ 沒有bash)最後將/sh變爲/bash
su hadoop切換到hadoop
5.修改主機IP配置
sudo vi /etc/hosts 建立主機名和ip地址的對應(在之後綴加) (填寫阿里雲私有ip地址)
這樣就使用主機名可以ping其他機器了
6.配置SSH
su hadoop//切換回Hadoop 用戶
mkdir .ssh// hadoop目錄下新建.ssh 文件夾
ssh-keygen -t rsa //創建公鑰 連按三次確認即可
cd .ssh 進入.ssh文件夾
cat id_rsa.pub>>authorized_keys //將id_rsa.pub併入 authorized_keys之後
查看 authorized_keys 已經出現了hadoop006的公鑰
接下來 ssh localhost已經成功,輸入一次yes即可
給.ssh 設置權限
配置去其他節點的免密登錄 ssh將自己的密鑰發送給其他節點
ssh-copy-id 主機名
7.上傳文件到服務器
上傳jdk、hadoop文件到阿里雲,注意使用端口號22和 公網ip,最後跟服務器的路徑 ,該路徑必須存在!
使用以下scp命令發送
scp -P 22 本路徑文件名 用戶名@IP地址:/路徑
中途需要你輸入Hadoop 的登錄密碼
發送成功!
8.安裝hadoop、Java
現在需要解壓兩個文件
tar -zxvf hadoop-2.6.0-x64.tar.gz
tar -zxvf jdk-8u11-linux-x64.tar.gz
解壓完成 出現兩個文件夾
創建軟鏈接 hadoop和jdk指向這兩個文件夾
ln -s hadoop-2.6.0 hadoop
ln -s jdk1.8.0_11 jdk
記住Java的路徑 去配置環境變量bashrc
最後添加以下內容 第一行的jdk1.8.0_1最好改爲jdk
保存並退出後 source ~/.bashrc
Java和hadoop就環境安裝好了
以下工作可以在一臺節點做好,打包發送
9.配置Hadoop
hadoop-2.6.0 下面的etc/hadoop/ 修改hadoop-env.sh
在export JAVA_HOME 之後將自己的Java地址寫上即可
再修改core-site.xml,<configuration></configuration>內加上以下內容 根據自己的主機和路徑改
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop002:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0/tmp</value>
</property>
再修改hdfs-site.xml,<configuration></configuration>內加上以下內容 根據自己的主機和路徑改
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop003:50090</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop002:50070</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/app/hadoop-2.6.0/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/app/hadoop-2.6.0/tmp/dfs/data</value>
</property>
再複製一份mapred.site.xml.template 命名爲mapred.site.xml 並配置它
cp mapred.site.xml.template mapred.site.xml
vi mapred.site.xml
配置mapred.site.xml ,<configuration></configuration>內加上以下內容 根據自己的主機和路徑改
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop008:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop008:19888</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx8000m</value>
</property>
配置slaves ,將需要的slave機的hostname全添加後去,master機也可以作爲slave
hadoop001
hadoop002
hadoop003
hadoop004
hadoop005
hadoop006
hadoop007
hadoop008
配置yarn-site.xml,<configuration></configuration>內加上以下內容 根據自己的主機和路徑改
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop002</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>hadoop classpath=/home/hadoop/app/hadoop-2.6.0/etc/hadoop:/home/hadoop/app/hadoop-2.6.0/share/hadoop/common/lib/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/common/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/hdfs:/home/hadoop/app/hadoop-2.6.0/share/hadoop/hdfs/lib/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/hdfs/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/mapreduce/lib/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/mapreduce/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/yarn:/home/hadoop/app/hadoop-2.6.0/share/hadoop/yarn/lib/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/yarn/*
</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>16</value>
<source>yarn-default.xml</source>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
<source>yarn-default.xml</source>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>4096</value>
<source>yarn-default.xml</source>
</property>
現在啓動sbin/start-all.sh,正常運行
注意事項
注意jps後至少出現3+2+1=6個process纔可以 正常運行任務
namenode、datanode、seconarynamenode //hdfs mapreduce的三個進程
nodemanager、resourcemanager // yarn的兩個任務管理進程
jps //Java Virtual Machine Process Status Tool 可以列出本機所有java進程的pid
到這裏,完全分佈式集羣就配置完成了
要驗證的話可以在你自己的設備瀏覽器中輸入http://47.108.74.71:8088/ 查看任務、結點情況。
這個是在node爲3時運行任務時進行的截圖
或者在你自己的設備瀏覽器中http://47.108.74.71:50070/ 查看namenode的情況(包含全部節點、hdfs所佔空間情況)
我這個是在node爲2時進行的截圖