大家可能在網上一搜尋大資料,巴拉巴拉一大堆的理論性的東西撲面而來,都是這樣過來的,當時一臉懵逼,所以在此就不給大家再介紹理論性的知識了,直接帶大家搭建分散式的開發環境。
hadoop的分散式架構 (一主二從)
主機名 | ip地址 | namenode | datanode |
---|---|---|---|
master | 192.168.6.133 | 是 | 否 |
slave1 | 192.168.6.131 | 否 | 是 |
slave2 | 192.168.6.132 | 否 | 是 |
第一步
虛擬機器,java環境準備
需要有一臺centerOS7虛擬機器,同時已經搭建好了jdk的環境,如有疑問可移駕 hadoop之旅1-centerOS7: 搭建java環境
第二步
軟體準備
準備好hadoop的開發包
- apache官網下載
- apache歷史版本庫下載
- 我給大家分享的百度雲連結下載 版本:hadoop-2.7.3
- 我使用filezilla軟體將解壓包放入linux系統,大家也可以通過wget命令直接下載到linux系統中
第三步
解壓hadoop,重新命名
- 在下載的hadoop壓縮包的目錄下解壓hadoop壓縮包
[root@localhost mmcc]# tar -zxvf hadoop-2.7.3.tar.gz
....
//重新命名目錄名稱(可選)
[root@localhost mmcc]# mv hadoop-2.7.3/ hadoop2.7.3
複製程式碼
- 檢視hadoop的根路徑
[root@localhost mmcc]# cd hadoop2.7.3/
[root@localhost hadoop2.7.3]# pwd
/home/mmcc/hadoop2.7.3 //配置環境變數時會用到
複製程式碼
第四步
配置環境變數
- 在
/etc/profile
最下面,hadoop之旅1-centerOS7: 搭建java環境章節配置的PATH
,CLASSPATH
上面增加環境變數配置
HADOOP_HOME=/home/mmcc/hadoop2.7.3
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH:.
複製程式碼
- 使環境變數生效
[root@localhost jdk1.8]# source /etc/profile
複製程式碼
- 配置hadoop的java環境,編輯hadoop根目錄下
/etc/hadoop/
下的hadoop.env.sh
指令碼檔案
vi /hadoop-2.7.3/etc/hadoop/hadoop.env.sh
export JAVA_HOME=/home/mmcc/jdk1.8 //配置java的環境目錄
複製程式碼
- 配置hadoop的啟動環境,編輯hadoop根目錄下
/etc/hadoop/
下的core-site.xml
檔案。
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> (master處為當前主機ip或主機名)
</property>
複製程式碼
此處的master後面會教大家
第五步
分散式環境搭建
- 此處為了方便,直接通過虛擬機器克隆的方式,將映象克隆多份,這樣在此之前搭建的所有環境都是同步存在的
- 使用該命令給每個節點的設定對應的主機名
[root@localhost mmcc]# hostnamectl set-hostname master/slave1/slave2
複製程式碼
- 檢測網路
[root@localhost mmcc]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.6.133 netmask 255.255.255.0 broadcast 192.168.6.255
inet6 fe80::3d1d:5127:6666:c62d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:f4:ef:5d txqueuelen 1000 (Ethernet)
RX packets 317168 bytes 315273916 (300.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 149675 bytes 14400069 (13.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 12826 bytes 3163428 (3.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12826 bytes 3163428 (3.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
複製程式碼
如果查詢不到ip地址,需要配置網路
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33 (我的虛擬機器版本,別的版本可能不一樣)
ONBOOT="yes" 表開啟網路。
複製程式碼
- 設定網路別名,即IP對應的別名 如:
hdfs://master:9000
[root@localhost network-scripts]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.6.133 master
192.168.6.131 slave1
192.168.6.132 slave2
複製程式碼
重啟網路
service network restart 重啟網路
複製程式碼
然後大家可以試著ping master/slave1/slave2
如果ping通說明配置成功
- 格式化hdfs,在每臺節點上執行以下命令
hdfs namenode -format
複製程式碼
啟動之前進行格式化,如果沒有error和Exception 表示格式化成功
6. master主機配置hadoop叢集節點
cd /home/mmcc/hadoop2.7.3/etc/hadoop
[root@localhost hadoop]# vi slaves
//增加以下內容
slave1
slave2
複製程式碼
7. 關閉每個節點防火牆,啟動hdfs服務,
[root@localhost mmcc]# systemctl stop firewalld
[root@localhost mmcc]# hadoop-daemon.sh start namenode //主節點master
[root@localhost mmcc]# hadoop-daemon.sh start datanode //從節點slave1,slave2
複製程式碼
然後可以在網頁上輸入主節點的地址master:50070
或ip地址:50070
檢視當前的狀態及其節點狀態哦。到此一個分散式的hadoop環境已經成功啟動。
下一節會教大家如何進行免密登入,一鍵啟動叢集,及一些簡單的hdfs檔案儲存命令,
大家在配置過程中如果有什麼問題可以檢視log日誌進行問題排查。歡迎加我微信一起學習一起進步哈