若是本身用的操做系統就是linux,我自己是deepin系統,裝了兩臺虛擬機,結果,用戶名沒有配置,致使啓動不了,由於hadoop的master節點啓動的時候,默認slave的用戶名爲master機器的用戶名。因此,要保證三臺機器,用戶名是一致的!!html
windows下的調試MapReduce程序會有點不方面,須要裝winutils。node
建議在一臺上搭建完整(包括環境、配置),再克隆,或者scp複製。linux
若是想連zookeeper和kafka都一塊兒的話,能夠也直接配置了。不裝的話,以後用scp傳,也挺方面的。shell
克隆完修改hostname!vim
總體過程還有點粗糙,有些遇到的細節,也忘記記錄了。歡迎指教,若是有問題,請通知,我會及時改正。windows
瀏覽器
傳文件到虛擬機:我使用scp傳的,很快。windows下的用戶建議xshell,sftp。安全
虛擬機的網絡配置就默認的NAT,CentOS最小安裝網絡
關閉防火牆ssh
$ systemctl status firewalld # 查看防火牆狀態 $ systemctl stop firewalld # 臨時中止firewall $ systemctl disable firewalld # 禁止firewall開機啓動
關閉SELinux
安全加強型 Linux(Security-Enhanced Linux)簡稱 SELinux,它是一個 Linux 內核模塊,也是 Linux 的一個安全子系統。
$ vim /etc/selinux/config # 將SELINUX=enforcing改成SELINUX=disabled
安裝ntp時間同步服務
yum install -y ntp # 設置開機自啓 systemctl enable ntpd.service # 啓動 systemctl enable ntpd systemctl status ntpd # 查看是否啓動
有可能沒法啓動,緣由是:與chronyd衝突:
systemctl disable chronyd :關掉,在啓動ntp,便可
修改主機名、配置靜態ip
(克隆以後,這些要稍做修改,主機名要改,ip要改一下便可)
第一步:修改 /etc/sysconfig/network-scripts/ifcfg-xxx文件
主要修改下面幾個參數:
BOOTPROTO="static" ONBOOT="yes" IPADDR="172.16.125.128" NETMASK="255.255.255.0" GATEWAY="172.16.125.2"
第二部:修改文件 /etc/sysconfig/network的內容
內容同上
# Created by anaconda GATEWAY=172.16.125.2 DNS=172.16.125.2
第三步:重啓網絡
service network restart
配置ssh
master可以免密登陸到slave節點
$ ssh-keygen -t rsa
打開~/.ssh 下面有三個文件
-rw-r--r--. 1 root root 392 9月 26 21:05 authorized_keys # 已認證的keys -rw-------. 1 root root 1679 9月 26 20:57 id_rsa # 私鑰 -rw-r--r--. 1 root root 393 9月 26 20:57 id_rsa.pub # 公鑰
在master上將三臺機器的公鑰放到authorized_keys裏。命令:
$ sudo cat id_rsa.pub >> authorized_keys
將master上的authorized_keys放到其餘linux的~/.ssh目錄下
$ sudo scp authorized_keys hadoop@10.10.11.192:~/.ssh
修改authorized_keys權限,命令:
$ chmod 644 authorized_keys
測試是否成功
ssh host2 輸入用戶名密碼,而後退出,再次ssh host2不用密碼,直接進入系統。這就表示成功了。
若是在登陸ssh的時候出現:
The authenticity of host 'hadoop2 (192.168.238.130)' can't be established
則須要修改/etc/ssh/ssh_config文件中的配置,添加以下兩行配置:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
最後:安裝配置jdk、hadoop
core-stie.xml
<configuration> <property> <name>fs.defaultFS</name><!--默認文件系統位置--> <value>hdfs://master:9000/</value> </property> <property> <name>hadoop.tmp.dir</name><!--hadoop的工做目錄,namenode、datanode的數據--> <value>/home/whr/workbench/hadoop/data/</value> </property> </configuration>
hdfs.site.xml
<configuration> <property> <name>dfs.replication</name><!--副本數量--> <value>2</value> </property> <property><!--secondary的位置,子節點的其中一個配置--> <name>dfs.namenode.secondary.http-address</name> <value>slave1:50090</value> </property> </configuration>
mapreduce.site.xml
<configuration> <property><!--指定mapreduce程序用yarn集羣運行,才能實現分佈式--> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
yarn.site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
配置slaves文件
slave1
slave2
配置masters文件(若是有的話,我用的CDH版本,沒有此文件)
master
vmware克隆沒什麼說的
克隆完成,先修改 /etc/hostname文件下的主機名!
添加三臺機器的ip地址映射:/etc/hosts
$ hadoop namenode -format # 最後出現,即成功,也能夠看最後狀態碼爲0 Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted.
啓動:到sbin目錄下(能夠先把sbin目錄配置到環境變量中;就不須要切換目錄了)
start-dfs.sh
start-yarn.sh
jps命令
所有啓動完成以後,查看結果:(在master上ssh登陸slave)
能夠看到master的NameNode、兩個DataNode、一個SecondaryNameNode都已經啓動完畢
yarn下的ResourceManager、兩個slave中的NodeManager也都啓動完成
4. 這樣就能夠經過瀏覽器訪問了50070端口了
能夠跑一下mapreduce樣例程序:
$ hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.15.2.jar pi 5 5
參考配置文件