1. 分布式集群規划
node01 | node02 | node03 | |
---|---|---|---|
HDFS | NameNode DateNode |
DateNode | SecondaryNameNode DataNode |
YARN | NodeManager | NodeManager ResourceManager |
NodeManager |
2. 網絡IP規划
克隆3台虛擬機,IP分別為: (自己隨便設置,以下為示例)
192.168.37.151
192.168.37.152
192.168.37.153
提醒: 以下所有配置均在3台虛擬機之間同步
修改hosts映射,方便后續虛擬機集群配置,以及集群間文件傳遞
編輯hosts vi /etc/hosts
,添加配置:
192.168.37.151 node01
192.168.37.152 node02
192.168.37.153 node03
重啟系統 reboot
重啟網絡 service network restart
修改windows系統的hosts文件,添加同樣的配置,就可以通過node01、node02、node03來訪問虛擬機
3. 修改hadoop配置
3.1 core-site.xml
<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
<!-- 指定 hadoop 運行時產生文件的存儲目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/module/hadoop-2.7.2/data/tmp</value>
</property>
3.2 hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node03:50090</value>
</property>
3.3 mapred-site.xml
<!-- 指定 mr 運行在 yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.4 yarn-site.xml
<!-- reducer 獲取數據的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 YARN 的 ResourceManager 的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node02</value>
</property>
3.5 slaves
node01
node02
node03
3.6 設置JAVA_HOME
修改下面3個文件的JAVA_HOME
4. 同步hadoop集群文件
使用scp或者rsync來同步集群文件
- scp: 遠程拷貝, 全量拷貝
- rsync: 遠程同步,性能優於scp.比較差異,只傳輸差異部分
4.1 SSH免密登錄
集群之間傳遞文件需要輸入密碼,不方便.可以配置SSH免登
生成秘鑰 ssh-keygen -t rsa
查看生成的密鑰 ll ~/.ssh
[root@localhost hadoop]# ll ~/.ssh
total 8
-rw-------. 1 root root 1675 Jan 6 22:04 id_rsa
-rw-r--r--. 1 root root 408 Jan 6 22:04 id_rsa.pub
寫入文件 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
復制秘鑰到另一台虛擬機的~/.ssh/authorized_keys文件中, 沒有創建一個.
scp使用示例:
[root@localhost soft]scp a.test root@node02:/usr/soft
The authenticity of host 'node02 (192.168.37.130)' can't be established.
ECDSA key fingerprint is SHA256:5Qe7dlOrhDVyiGfGUEY5rWyAJJaPt+AKB9ZWq5uxglQ.
ECDSA key fingerprint is MD5:1a:11:77:81:e9:7f:3a:5c:d8:f2:4a:58:b1:55:29:9e.
# 第一次需要確認
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop02,192.168.37.130' (ECDSA) to the list of known hosts.
a.test 100% 0 0.0KB/s 00:00
4.2 rsync安裝
安裝rsync yum install rsync -y
編寫集群同步腳本 xsync.sh
#!/bin/bash
#1 獲取輸入參數個數,如果沒有參數,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 獲取文件名稱
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 獲取上級目錄到絕對路徑
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 獲取當前用戶名稱
user=`whoami`
#5 循環
for((host=2; host<4; host++)); do
echo --------------- node0$host ----------------
rsync -rvl $pdir/$fname $user@node0$host:$pdir
done
添加執行權限 chmod 777 xsync.sh
4.3 遠程文件分發
通過scp或者xsync腳本,同步hadoop文件夾、hosts文件到其他2台虛擬機,配置好密鑰登陸
5. 啟動hadoop
5.1 格式化 namenode
啟動前,先格式化namenode節點node01
hadoop namenode -format
如果之前格式化過,先刪除data和logs目錄,再格式化
5.2 啟動hdfs
在node01節點啟動namenode
sbin/start-dfs.sh
查看進程jps
[root@node01 sbin]# jps
2368 DataNode
2275 NameNode
8067 Jps
[root@node02 soft]# jps
6135 Jps
1900 DataNode
[root@hadoop03 ~]# jps
1658 DataNode
5535 Jps
查看文件列表, 現在是空的
5.3 上傳下載文件
linux查看文件列表
hdfs dfs -ls /
上傳文件
hdfs dfs -put ./README.txt /
查看文件內容
hdfs dfs -cat /README.txt
刷新頁面
6. 啟動yarn
在node02 節點啟動ResourceManager
sbin/start-yarn.sh
[root@node01 hadoop-2.7.2]# jps
2368 DataNode
2275 NameNode
2628 NodeManager
8107 Jps
[root@node02 ~]# jps
2112 NodeManager
2017 ResourceManager
6148 Jps
1900 DataNode
[root@node03 ~]# jps
1827 NodeManager
1748 SecondaryNameNode
1658 DataNode
5563 Jps
7. 同步集群時間
每台虛擬機時間是不一致的,會造成hadoop集群操作異常,下面同步集群時間
7.1 安裝ntp
每台機器都安裝
yum install ntp -y
7.2 配置ntp
vi /etc/ntp.conf
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap #注釋放開
# 注釋以下內容
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#添加以下內容
server 127.127.1.0
fudge 127.127.1.0 stratum 10
vi/etc/sysconfig/ntpd
#添加
SYNC_HWCLOCK=yes
重啟服務
[root@node01 ~]# service ntpd status
ntpd is stopped
[root@node01 ~]# service ntpd start
Starting ntpd: [ OK ]
[root@node01 ~]# chkconfig ntpd on
[root@node01 ~]# date
Thu Mar 14 06:06:11 CST 2019
7.3 其他服務器
配置10分鍾同步一次node01時間
crontab -e
*/10 * * * * /usr/sbin/ntpdate node01
8. 執行MapReduce任務
yarn jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /README.txt /out/00
9.hdfs 常用命令
格式: bin/hdfs dfs -命令 文件
- -mkdir 創建文件夾
- -put 上傳文件
- -get 下載文件
- -rmr 刪除文件
- -cat 查看文件
- -copyFromLocal 復制文件
- -getmerge 合並下載
- -mkdir -p 創建多級目錄