環境:html
CentOS7+SunJDK1.8@VMware12。java
NameNode虛擬機節點主機名:master,IP規劃:192.168.23.101,職責:Name node,Secondary name node,Resource manager。node
DataNode虛擬機節點主機名:slave1,IP規劃:192.168.23.102,職責:Data node,Node manager。web
每一個虛擬機分配資源:CPU單顆,內存2GB,硬盤20GB。centos
過程概要:瀏覽器
過程詳細:ruby
以master節點爲例:網絡
修改/etc/hosts爲(注意:要把集羣全部節點的ip跟主機名映射全加進來):app
修改:/etc/sysconfig/network-scripts/ifcfg-eno16777736爲(經測試,此種方法可能會被系統再次動態增長一個IP地址,變成雙IP。所以不如圖形界面的方法可靠):ssh
或者在CentOS7的圖形界面下,點擊網絡圖標,IP改成手動,設置IP地址、掩碼、網關、DNS(推薦)
上述爲master節點。slave節點相似修改。確保雙方IP能互相ping通。
命令:su root (切換到root用戶)
命令:chmod u+w /etc/sudoers (給sudoers增長寫權限)
命令:vi /etc/sudoers (修改sudoers文件)
執行命令後會進入sudoers文件的查看模式,該模式下按「i」進入文件修改模式,
而後在root ALL=(ALL) ALL下方增長hadoop ALL=(ALL)NOPASSWD:ALL 按 「esc」鍵推出修改模式,大寫模式下,按兩次「z」保存退出。
命令:chmod u-w /etc/sudoers (撤銷sudoers文件的寫權限)。
改後的/etc/sudoers文件內容以下:
把hadoop-2.6.4.tar.gz拷貝到/usr/下,解壓:tar zxvf hadoop-2.6.4.tar.gz ,並用chmod、chgrp命令將其所屬用戶、用戶組都改成hadoop(重要!不然hadoop沒法在其中新建臨時目錄和日誌)。效果以下:
Master機器上生成密碼對。命令:ssh-keygen –t rsa (生成其無密碼密鑰對,一路回車鍵,生成的密鑰對:id_rsa和id_rsa.pub,默認存儲在"/home/hadoop/.ssh"目錄)
命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (把id_rsa.pub追加到受權的key裏面去)
命令:chmod 600 ~/.ssh/authorized_keys(修改文件"authorized_keys"權限,這步驟很重要,不少莫名其妙的錯誤有可能就是權限的問題)
命令:sudo vi /etc/ssh/sshd_config (修改SSH配置文件"/etc/ssh/sshd_config"),修改以下內容:
RSAAuthentication yes # 啓用 RSA 認證 PubkeyAuthentication yes # 啓用公鑰私鑰配對認證方式 AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)
命令:service sshd restart(從新啓動服務)
命令:ssh localhost (測試是否成功)
下面是把公鑰複製到全部的slave節點上去:
命令:scp ~/.ssh/id_rsa.pub hadoop@192.168.239.129:~/(記得改爲本身的ip,這個是個人slave1的ip,就是把master節點的公鑰發送到了slave1的根目錄下了)
systemctl stop firewalld.service #中止
systemctl disable firewalld.service #禁用
以前的版本:
service iptables stop #中止
chkconfig iptables off #禁用
在 /etc/profile
裏添加
export HADOOP_HOME=/usr/hadoop-2.6.4/ export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
在 hadoop 解壓路徑下面,/etc/hadoop/hadoop-env.sh 增長下面兩行
export JAVA_HOME=/usr/java/jdk1.8.0_101 export HADOOP_PREFIX=/usr/hadoop-2.6.4
在 hadoop 解壓路徑下面,/etc/hadoop/core-site.xml增長下面內容:
<configuration>
<property> <name>fs.defaultFS</name> <value>hdfs://master:9000/</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop-2.6.4/tmp</value> </property> </configuration>
在 hadoop 解壓路徑下面,/etc/hadoop/hdfs-site.xml 增長下面內容:
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
這裏設置成2,表示數據有2個副本(數值不大於DataNode數)。
在 hadoop 解壓路徑下面,/etc/hadoop/mapred-site.xml 增長下面內容:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
在 hadoop 解壓路徑下面,/etc/hadoop/yarn-env.sh 增長下面,增長JAVA_HOME 配置:
export JAVA_HOME=/usr/java/jdk1.8.0_101
在 hadoop 解壓路徑下面,/etc/hadoop/yarn-site.xml 增長下面內容:
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <description>The address of the applications manager interface in the RM.</description> <name>Yarn.resourcemanager.address</name> <value>master:18040</value> </property> <property> <description>The address of the scheduler interface.</description> <name>Yarn.resourcemanager.scheduler.address</name> <value>master:18030</value> </property> <property> <description>The address of the RM web application.</description> <name>Yarn.resourcemanager.webapp.address</name> <value>master:18088</value> </property> <property> <description>The address of the resource tracker interface.</description> <name>Yarn.resourcemanager.resource-tracker.address</name> <value>master:8025</value> </property> </configuration>
這裏添加的一些端口號,方便從遠程經過瀏覽器查看集羣狀況,推薦按照這樣添加。
在 hadoop 解壓路徑下面,/etc/hadoop/slaves 增長下面內容:
master slave1
按照上面流程,把 slaver1上的環境變量添加好,而後直接:
scp -r /hadoop2.6.4 hadoop@slave1:/usr/
複製到 slave1下面。
啓動 hadoop 集羣:
格式化文件系統:
hdfs namenode -format
啓動 NameNode 和 DateNode:
/usr/hadoop-2.6.4/sbin , 運行:
start-dfs.sh
使用 jps 命令查看 master 上的Java進程,個人進程以下:
jps 命令也能夠查看 slave1上的 Java 進程。應該能夠看到DataNode啓動。如:
[hadoop@slave1 hadoop]# jps 6130 DataNode 1264 Jps
查看 NameNode 和 NameNode 信息:
master的瀏覽器輸入:
localhost:50070/dfshealth.html#tab-datanode
能夠看到DataNode啓動成功。
運行 start-yarn.sh , jps查看進程以下:
切換到 slave1,jps查看進程:
[hadoop@slave1 hadoop]# jps 27130 DataNode 12379 Jps 28916 NodeManager
Hadoop 集羣就已經啓動了。
----------------------------------------------------------------------------------------------------------------------------------------
最後,參考文章:
配置sudoer權限、建立免密碼登陸:http://blog.sina.com.cn/s/blog_95b63fc90102vrvy.html
修改hadoop配置文件、進程查看:http://blog.csdn.net/sa14023053/article/details/51952534