1.下載軟件
a. 下載VirtualBox http://download.virtualbox.org/virtualbox/5.1.18/VirtualBox-5.1.18-114002-Win.exe
b. 下載CentOS http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
c. 下載XShell與XFtp 請?jiān)诎俣茸约核阉髋c安裝
d. 下載jdk http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.rpm
e. 下載hadoop2.7.3 -> http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
2.安裝VirtualBox
下載后請自行安裝,安裝完需要自行安裝linux,此文為centos7.可自行百度教程饮戳。
網(wǎng)絡(luò)配置請參考我之前的文章《Virtualbox配置centos7網(wǎng)絡(luò)》
在此簡單的列舉主要步驟如下:
a. 在虛擬機(jī)中選用host-only網(wǎng)絡(luò)
b. vi /etc/sysconfig/network
NETWORKING=yes
c. vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 TYPE=Ethernet IPADDR=192.168.56.200 NETMASK=255.255.255.0
d. 修改主機(jī)名hostnamectl set-hostname master (主機(jī)名千萬不能有下劃線!)
e. 重啟網(wǎng)絡(luò)service network restart
f. 互相ping入挣,看是否測試成功歌焦,若不成功,注意防火墻的影響血崭。關(guān)閉windows或虛擬機(jī)的防火墻突梦。
systemctl stop firewalld
systemctl disable firewalld
3.安裝JDK
rpm -ivh ./xxxxx.jdk诫舅,驗(yàn)證rpm -qa | grep jdk,在命令行中敲java命令宫患,確認(rèn)jdk已經(jīng)安裝完成
配置環(huán)境變量:
JAVA_HOME=/usr/java/jdk1.8.0_91
JRE_HOME=/usr/java/jdk1.8.0_91/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
使環(huán)境變量生效:
source /etc/profile
4.安裝hadoop
cd /usr/local
tar –xvf ./hadoop-2.7.3.tar.gz
把目錄修改為hadoop mv hadoop-2.7.3 hadoop
修改hadoop-env.sh
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
修改export JAVA_HOME 語句為 export JAVA_HOME=/usr/java/default
把/usr/local/hadoop/bin和/usr/local/hadoop/sbin設(shè)到PATH中
vi /etc/profile
追加 export PATH=$PATH:/usr/hadoop/bin:/usr/hadoop/sbin
source /etc/profile
測試hadoop命令是否可以直接執(zhí)行刊懈,任意目錄下敲hadoop
5.關(guān)閉虛擬機(jī),復(fù)制三份
6.開機(jī)后娃闲,自行配置各自的網(wǎng)絡(luò)配置虚汛,參照之前步驟。
主要是要修改:/etc/hosts,注意:四個(gè)節(jié)點(diǎn)的ip以及hostname都加上
7.分布式集群配置
7.1 配置core-site.xml
在所有的節(jié)點(diǎn)上都應(yīng)該修改/etc/hadoop/core-site.xml.注意:需要修改tmp目錄皇帮,不然默認(rèn)是linux的tmp目錄卷哩,這樣會出現(xiàn)意想不到的錯(cuò)誤,因?yàn)閘inux重啟后属拾,會刪除/tmp目錄下的內(nèi)容将谊。
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/current/tmp</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>4320</value>
</property>
注意:必須在各個(gè)機(jī)器上一定要保持此配置的一致性。這里配置的是master的地址渐白,與對外通訊的端口尊浓,slaves需要知道m(xù)aster對外提供通訊的地址與端口,所以各臺機(jī)器需要保持一致纯衍,否則會在web管理頁面發(fā)現(xiàn)live nodes是0.正常應(yīng)該是slaves的數(shù)量栋齿。
7.2配置hdfs-site.xml
在所有節(jié)點(diǎn)上修改/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/current/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/current/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>staff</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
7.3格式化HDFS
執(zhí)行以下命令即可:
hdfs namenode -format
8.啟動(dòng)集群
在master上啟動(dòng)hadoop-daemon.sh start namenode
在slave上啟動(dòng)hadoop-daemon.sh start datanode
用hdfs dfsadmin -report觀察集群配置情況,如圖所示,含有三個(gè)從節(jié)點(diǎn)
查看端口號:netstat -ntlp
通過http://192.168.56.100:50070/web界面觀察集群運(yùn)行情況
用hadoop-daemon.sh stop ...手工關(guān)閉集群
9.集中管理
9.1對集群進(jìn)行集中管理瓦堵,需要修改以下配置文件:
修改master上/etc/hadoop/slaves文件基协,每一個(gè)slave占一行
slave1
slave2
slave3
9.2使用start-dfs.sh啟動(dòng)集群,并觀察結(jié)果
以上需要每個(gè)節(jié)點(diǎn)的密碼都需要重新輸入一下
啟動(dòng)成功:
9.3使用stop-dfs.sh停止集群
停止集群也需要每次輸入密碼
10.配置SSH免密登錄
在上一步驟中菇用,每次都需要輸入密碼澜驮,非常麻煩,故需要配置一下SSH的免密登錄惋鸥。
執(zhí)行如下步驟:
cd
ls -la
cd .ssh
ssh-keygen -t rsa (四個(gè)回車)
會用rsa算法生成私鑰id_rsa和公鑰id_rsa.pub
利用ssh-copy-id slaveX命令把生成的公鑰copy到其他的節(jié)點(diǎn)上泉唁。
此時(shí)在yxxy-node2節(jié)點(diǎn)就可以有以下文件:
以此類推,其他兩個(gè)從節(jié)點(diǎn)也是這樣執(zhí)行即可揩慕。
再次ssh slave1
此時(shí)應(yīng)該不再需要密碼
重新使用start-dfs.sh啟動(dòng)集群
此時(shí)執(zhí)行啟動(dòng)命令,則還是需要輸入主節(jié)點(diǎn)的密碼扮休,故也需要把公鑰拷貝一份到自己的主節(jié)點(diǎn)上
停止集群stop-dfs.sh
11.web管理
修改windows中的C:\Windows\System32\drivers\etc\hosts文件迎卤,可以通過名字訪問集群web界面。
12.基本操作
12.1使用hdfs dfs 或者h(yuǎn)adoop fs命令對文件進(jìn)行增刪改查的操作
hadoop fs -ls /
hadoop fs -put file /
hadoop fs -mkdir /dirname
hadoop fs -text /filename
hadoop fs -rm /filename
12.2 動(dòng)態(tài)擴(kuò)展
設(shè)定dfs.namenode.heartbeat.recheck-interval為10000玷坠,然后停掉其中一臺slave蜗搔,觀察自動(dòng)復(fù)制情況。
啟動(dòng)停掉的slave節(jié)點(diǎn)八堡,通過網(wǎng)頁觀察datanode的動(dòng)態(tài)添加
12.3 橫向擴(kuò)展
添加新的節(jié)點(diǎn)樟凄,體會hadoop的橫向擴(kuò)展,步驟如下:
啟動(dòng)slave4兄渺,關(guān)閉防火墻缝龄,修改hostname
修改etc/hosts,加入對自己以及其他機(jī)器的解析挂谍,重啟網(wǎng)絡(luò)
在master中設(shè)定對于slave4的解析
啟動(dòng)slave4的datanode叔壤,通過網(wǎng)頁進(jìn)行觀察
hdfs dfsadmin –shutdownDatanode slave4:50020
13.遇到問題
在啟動(dòng)集群的時(shí)候市栗,主節(jié)點(diǎn)(namenode)正常啟動(dòng)迹鹅,datanode啟動(dòng)2個(gè),一個(gè)未啟動(dòng)闻牡,查看日志顯示如下異常信息:
經(jīng)過網(wǎng)上查詢原因說是/etc/hosts中的第一第二行不能刪除妄田。把他加上即可俺亮,如下圖所示: