1、複製虛擬機,搞了5臺。
1:namenode
2:secondardNameNode,resourcemanager
3,4,5:DataNode
2、修改了網卡配置,連接上SecureCRT
---------root----用戶----------
3、date查看了時間
4、開機啓動了 ntpdate
chkconfig --list
chkconfig --level 12345 ntpdate on
5、ntpdate 同步時間
service ntpdate restart
6、查看JAVA_HOME
echo $JAVA_HOME
-rw-r--r--. 2 root root 158 Jan 12 2010 hosts
-rw-r--r--. 1 root root 1796 Oct 2 2013 profile
8、每臺配置本機域名
[root@zengmg etc]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop1
9、每臺配置hosts文件
多窗口發送命令
vi /etc/hosts
192.168.18.131 hadoop1
192.168.18.132 hadoop2
192.168.18.133 hadoop3
192.168.18.134 hadoop4
192.168.18.135 hadoop5
//要編寫一個shell腳本,如果集羣裏有幾十臺怎麼辦?
10、關閉防火牆
chkconfig iptables off
service iptables stop
11、創建 hadoop 用戶,密碼
adduser hadoop
passwd hadoop
12、給hadoop用戶配置root組
vi /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
在這裏添加
hadoop ALL=(ALL) ALL
---------------hadoop----用戶-----------------------------
1、ssh免密碼登錄
hadoop1是NameNode。無需各臺機器互相ssh免密碼。只要hadoop1能免密訪問其他機器
hadoop1機器上:
ssh-keygen -t rsa
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
ssh-copy-id hadoop4
ssh-copy-id hadoop5
hadoop2機器上:
ssh-keygen -t rsa
ssh-copy-id hadoop2
ssh-copy-id hadoop3
ssh-copy-id hadoop4
ssh-copy-id hadoop5
這個ssh免密登錄是針對hadoop用戶。root用戶沒有配置,不能免密登錄對方。ssh免密是用戶有效
1、上傳JDK和hadoop
2、在hadoop的home目錄下建文件夾 application。在/(根目錄下)沒有權限新建,只有root能建立。
[hadoop@hadoop1 /]$ mkdir application
mkdir: cannot create directory `application': Permission denied
3、解壓hadoop,jdk的壓縮包到 application 文件夾
tar -zxvf 壓縮包 -C application
4、配置jdk,hadoop的環境變量
[hadoop@hadoop1 etc]$ sudo vi /etc/profile
export JAVA_HOME=/home/hadoop/application/jdk1.8.0_73
export HADOOP_HOME=/home/hadoop/application/hadoop-2.7.3
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin
5、使配置的變量生效
source /etc/profile
6、配置hadoop配置文件
1)、hadoop-env.sh shell文件配置javahome
# The java implementation to use.
export JAVA_HOME=/home/hadoop/application/jdk1.8.0_73
爲什麼要配置?
不知什麼原因,沒有讀到
[hadoop@BD01 sbin]$ start-dfs.sh
Starting namenodes on [BD01]
BD01: Error: JAVA_HOME is not set and could not be found.
BD05: Error: JAVA_HOME is not set and could not be found.
BD04: Error: JAVA_HOME is not set and could not be found.
BD03: Error: JAVA_HOME is not set and could not be found.
2)、core-site.xml 文件配置 NameNode訪問地址和namenode數據存放路徑
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop_data</value>
</property>
------下面的配置是hive beeline的訪問配置--
hadoop的core-site.xml增加配置
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>hadoop</value>
</property>
//如果是 <value>*</value> 就是所有用戶
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
//這裏配置了所有ip都允許代理訪問。如果不允許,則配置IP地址
3)、hdfs-site.xml 文件配置 數據副本個數,可以不配置的。因爲默認是3
此文件還配置 SecondaryNameNode
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:50090</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>hadoop2:50091</value>
</property>
4)、 map-site.xml 指定mr運行在yarn平臺上,屬於resourcemanager的配置
mv mapred-site.xml.template mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5)、yarn-site.xml 指定YARN的老大(ResourceManager)的地址,reducer獲取數據的方式
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop2</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop2:8088</value>
</property>
這個端口可以修改
問題:配置成與主節點namenode不同的機子,resourcemanager運行不起來,什麼原因?
google下,說是Namenode和ResourceManger如果不是同一臺機器,不能在NameNode上啓動 yarn,應該在ResouceManager所在的機器上啓動yarn。現在問題解決了,多謝提醒
懂了:原來,hdfs,yarn,mr是三個獨立的組件。namenode是hdfs的頭,resourcemanager是yarn的頭。兩個不同的頭,在namenode上啓動resourcemanager自然是起不來的。
所以,如果Namenode和ResourceManger如果不是同一臺機器,那要啓動hdfs,再啓動yarn。不能用start-all一步到位。
還是有問題?如果resourcemanager所在節點沒有配置slaves,nodemanager會在本地啓動。
6)、配置slaves
注意:slaves裏的配置是start-*.sh啓動腳本要讀取集羣的配置文件。如果不配置,就會運行單機版本的。
默認是localhost
hadoop3,4,5是DataNode。也是yarn的NodeManager
hadoop3
hadoop4
hadoop5
----------------------
注意:此時namenode節點已經可以初始化。可以單獨啓動namenode,DataNode每啓動一臺,想namenode註冊一臺。NameNode初始化後,可以不用 start-all.sh【學習下里面的寫法,如何遍歷】或者下面的命令。
可以根據需要,到DataNode節點上去用命令啓動。
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
7、scp application文件到其他節點
scp -r application hadoop2:/home/hadoop
.........
8、scp /etc/profile 到其他節點
sudo scp /etc/profile hadoop2:/etc/profile
..........
9、source /etc/profile 每個節點
source /etc/profile
10、格式化namenode(是對namenode進行初始化)
hdfs namenode -format
Storage directory /home/hadoop/hadoop_data/dfs/name has been successfully formatted.
11、啓動hadoop
start-dfs.sh
12、啓動YARN
在yarn.resourcemanager.hostname配置的hadoop2上啓動
start-yarn.sh
13、驗證是否成功
jps
----------------------------------------
[hadoop@hadoop1 ~]$ jps
2016 NameNode
2266 Jps
[hadoop@hadoop2 ~]$ jps
2116 ResourceManager
2379 Jps
1963 SecondaryNameNode
[hadoop@hadoop3 ~]$ jps
1968 DataNode
2244 Jps
2123 NodeManager
[hadoop@hadoop4 ~]$ jps
1939 DataNode
2216 Jps
2095 NodeManager
[hadoop@hadoop5 ~]$ jps
1939 DataNode
2216 Jps
2095 NodeManager
網頁訪問:
http://192.168.18.131:50070 (HDFS管理界面--hadoop1)
http://192.168.18.132:8088/ (MR管理界面--hadoop2)