CentOS7搭建Hadoop集羣的詳細操作流程
一、準備工作
- 若還沒安裝虛擬機可參考:VMVMware14虛擬機安裝程
- 沒安裝CentOS的可參考:Linux CentOS安裝教程
- Haddop的下載可以到https://mirrors.cnnic.cn/apache/hadoop/common/這個網址下載,下載的時候版本是選擇Hadoop2.x.版本。格式文件選擇hadoop-2.x.y.tar.gz ,因爲是已編譯歐了的,而另一個包含 src 的則是 Hadoop 源代碼,需要進行編譯纔可使用。
若有hadoop-2.x.y.tar.gz.mds 這個文件建議也可下載,因爲該文件包含了檢驗值可用於檢查hadoop-2.x.y.tar.gz 的完整性,否則若文件發生了損壞或下載不完整,Hadoop 將無法正常運行。想驗證文件完整性,可在自行百度搜索,
PS:如果瀏覽器下載過慢,可複製下載鏈接到迅雷打開下載。
二、開始搭建虛擬機
前面準備工作完成後即可開始搭建虛擬機,進行hadoop集羣操作。
- 下面爲三臺虛擬機的hostname和IP地址
hostname | Ip地址 |
---|---|
Master | 192.168.100.10 |
Slave1 | 192.168.100.11 |
Slave2 | 192.168.100.12 |
以CentOS7爲主機,命名爲Master,複製兩臺虛擬機
找到虛擬機的目錄,直接複製兩臺虛擬機,命名爲Slave1,Slave2,並相應打開文件刪除
下面的文件
接着打開虛擬機->我的計算機->掃描虛擬機->選擇掃描位置瀏覽到剛纔複製的文件->確定完成後對虛擬機重新命名開啓即可。
網絡配置
1.VMware 網絡配置(使虛擬機上的各個節點能夠互聯,用同一個網段)
- VMnet8(NAT模式)----子網IP設置爲:192.168.100.0----NAT設置:網關改爲192.168.100.2—確定----去掉使用DHCP選項
- 開始菜單->運行->services.msc或從控制面板中找到“服務”一項打開如下圖所示,找到以vmware開頭的服務,確保都啓用
- 打開控制面板->系統和安全->網絡和 Internet->網絡和共享中心->更改適配器設置,啓用VMnet8
,再查看屬性,雙擊Intter協議版本4看IP地址與子網掩碼是否配好,若沒則進行相應配置。(注意IP地址與子網掩碼是於上面虛擬機配置相對應的)
2.CentOS網絡配置
Master節點上修改網卡配置
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#ens33爲自己本機上的網卡名
進入後先改
BOOTPROTO=static
ONBOOT=yes
後加
IPADDR=192.168.100.10 #IP地址
NETMASK=255.255.255.0 #子網掩碼
GATEWAY=192.168.100.2 #網關地址
DNS1=8.8.8.8 #DNS服務器地址
Slave1、2節點上修改網卡配置,基本和Master上的配置一樣,但Slaved1的IP地址改爲192.168.100.11,Slaved2的IP地址改爲192.168.100.12
點i進入編輯
退出編輯-> esc鍵 :x
重啓網卡
在Master節點和Slave1、2節點上重啓網卡
systemctl restart network
關閉掉Master和Slave1、2上的防火牆
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啓動
修改主機名
CentOS7修改主機名:
hostnamectl set-hostname +主機名
hostnamectl set-hostname Master
hostname #查看一下
ls
如果是CentOS6修改主機名則用
vi /etc/sysconfig/network
Master上改主機名
vi /etc/sysconfig/network
修改HOSTNAME=Master
Slave1改主機名
vi /etc/sysconfig/network
添加HOSTNAME=Slave1
Slave2改主機名
vi /etc/sysconfig/network
添加HOSTNAME=Slave2
hosts修改域名:(三個節點上都配一遍)
vi /etc/hosts
修改內容爲
192.168.100.10 Master Master.cn
192.168.100.11 Slave1 Slave1.cn
192.168.100.12 Slave2 Slave2.cn
#ip地址 hostname 域名 ,設置完之後可以用域名進行訪問
重新啓動一下
reboot
測試能不能跑通,實現節點間互聯
查看網絡配置是否成功
ifconfig #顯示的網絡信息是否和我們配置的契合
Master上
ping baidu.com
ping 192.168.100.10
ping Slave1
ping Slave2
Slave1上
ping baidu.com
ping 192.168.100.11
ping Master
ping Slave2
Slave2同上進行相互ping
以上如果ping不通則說明你還有bug要修
yum 源配置
1.安裝wget
yum install -y wget
2.備份/etc/yum.repos.d/CentOS-Base.repo文件
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.back
3.下載阿里雲的Centos-7.repo文件
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
4.重新加載yum
yum clean all
yum makecache
若已經有默認的yum源可進行更換爲國內的阿里雲yum源,讓下載安裝及更新速度更快一些,替換很簡單,簡單記錄一下步驟。
1、備份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
或
mv /etc/yum/repos.d/CentOS-Base.repo{,.date -I}
2.下載新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3、添加EPEL
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
4、清理緩存並生成新的緩存
yum clean all
yum makecache
jdk的安裝
Master上首先可用rz命令進行上傳jdk文件,若rz沒有,用 yum install lrzsz 進行下載,下載成功後在home目錄下rz進行上傳jdk文件,再ls查看一下文件即可查看jdk上傳成功
接着用
scp jdk-8u73-linux-x64.tar.gz Slave1.cn:/home
上傳到Slave1
Slave1上
ls #一下即可看到文件已上傳成功
mkdir -p /export/servers #在home目錄下創建一個目錄
tar -zxvf jdk-8u73-linux-x64.tar.gz -C /export/servers/ #解壓到對應目錄
cd /export/servers #進入目錄ls查看到文件已解壓安裝成功
ln -s jdk1.8.0_73 jdk #對jdk1.8.0_73 創建快捷方式爲jdk
ls
pwd #看一下當前目錄
cd jdk
vi /etc/profile #在jdk目錄下配置一下java的環境變量
添加
#java path configuration
export JAVA_HOME=/export/servers/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#注意中間的空格爲tab鍵
:wq 保存退出
source /etc/profile #讓配置生效
java -version #看java是否安裝配置成功
chkconfig iptables off #如果之前忘記關防火牆,可用此命令進行防火牆永久關閉
(Master、Slave2的jdk配置同上)
配置免密碼登錄
在Master上
cd ~
ssh-keygen -t rsa #一直按回車
ssh localhost t#這時候連接到本機是不需要密碼了
ssh-copy-id Slave1.cn
ssh-copy-id Slave2.cn #拷貝到Slave1、2上
在Master上測試是否能無密碼ssh登錄到Slave1、2
ssh Slave1
ssh Slave2
這時已經不需要密碼登錄了
Hadoop的安裝
Mater上
cd /home
cd /export
mkdir software #進入export下創建一個目錄放hadoop,然後ls可查看一下
cd software/
rz #上傳hadoop文件到software目錄下
ls #查看hadopp是否上傳成功
scp hadoop-2.6.1.tar.gz Slave1.cn:/export/software/ #先在Slave1創建好software再執行此命令,將hadoop包傳到Slave1
Slave1上
cd /export
mkdir software #創建一個目錄放hadoop
cd software/
ls
tar -zxvf hadoop-2.6.1.tar.gz -C /export/servers #解壓到servers目錄
cd /export
cd servers/
ls #進入servers目錄查看解壓是否成功
ln -s hadoop-2.6.1 hadoop #對hadoop-2.6.1 創建快捷方式爲hadoop
ls
vim /etc/profile #配置hadoop的環境變量
添加
#hadoop configuration
export HADOOP_HOME=/export/servers/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
#注意中間的空格爲tab鍵
退出
source /etc/profile #讓其配置生效
hadoop version #查看是否成功
(Master、Slave2的hadoop配置同上)
Master上修改配置文件進行集羣
mkdir data #進入export新建一個目錄放data,然後ls一下
cd data
mkdir -p hadoop/tmp #在data下新建一個放hadoop數據,然後ls一下
進入servers目錄下的hadoop
cd etc
cd hadoop/ #進入到etc的hadoop的配置文件
vim hadoop-env.sh #進入修改一下JAVA_HOME的安裝目錄
vim mapred-env.sh #同樣進入修改一下JAVA_HOME的安裝目錄
vim core-site.xml #配置 core-site.xml
#在<configuration>和</configuration>中間添加
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.100.10:9000</value>
</property>
#其中/export/data/hadoop/tmp是之前是建的放hadoop數據的地方
hdfs://192.168.100.10:9000 前面爲主機Master的IP地址,後面爲端口號,可以默認爲9000
vim yarn-site.xml #配置yarn-sit.xml
#在<configuration>和</configuration>中間添加
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.100.10</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
#其中192.168.100.10是爲主機Master的IP地址
vim hdfs-site.xml #配置hdfs-site.xml
#在<configuration>和</configuration>中間添加
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>192.168.100.10:50090</value>
</property>
#其中192.168.100.10是爲主機的IP地址,3爲機器的節點數
cp mapred-site.xml.template mapred-site.xml #複製一份 mapred-site.xml
vim mapred-site.xml #配置mapred-site.xml
#在<configuration>和</configuration>中間添加
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
vim slaves #配置slaves
修改
localhost—>Slave1.cn Slave2.cn
#lave1.cn Slave2.cn爲你要集羣的機器
master配置完分發到其他機器上,可以把master上的hadoop配置文件進行打包壓縮複製到slaves節點上,或者直接在slaves節點上各配置一遍,其中配置內容跟master的配置一模一樣(包括IP地址和端口號)
#以上配置文件已完成
hdfs namenode -format #啓動前先格式化文件系統,之後無須格式化
開啓集羣
start-dfs.sh #啓動dfs
start-yarn.sh #啓動yarn
mr-jobhistory-daemon.sh start historyserver #啓動腳本
jps #可以查看各個節點所啓動的進程
正確的話,在 Master 節點上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 進程;
在Slave1、2節點上可以看到DataNode 和 NodeManager進程;
以上集羣已搭建成功
關閉集羣也是在Master上關閉,按順序執行命令
stop-yarn.sh
stop-dfs.sh
mr-jobhistory-daemon.sh stop historyserver
注意:CentOS系統默認開啓了防火牆,在開啓 Hadoop 集羣之前,需要關閉集羣中每個節點的防火牆。有防火牆會導致 ping 得通但 telnet 端口不通,從而導致 DataNode 啓動了,但 Live datanodes 爲 0的情況。我們前面的操作中已經關閉防火牆了,如果防火牆沒關閉的請關閉再開啓集羣。
同時有事沒事不要隨便初始化NameNode,初始過一遍就歐了。