一:虛擬機
1.下載虛擬機https://www.vmware.com/cn/products/workstation-player/workstation-player-evaluation.html
2.下載centos7鏡像ios文件:下載地址http://isoredirect.centos.org/centos/7/isos/x86_64
3.安裝好虛擬機後如下圖創建新的虛擬機:
創建新虛擬機>>選擇稍後安裝操作系統>>選擇Linux //centos7>>設置名稱…下一步完成
然後點擊虛擬機設置(如下圖二)使用iOS映像文件,找到並選擇下載好的文件,確定,然後重啓虛擬機,按照步驟安裝即可,root用戶密碼自行設置,安裝完成後如下圖三,然後重啓虛擬機即安裝完成;
二:搭建前準備
因爲我們是要搭建Hadoop集羣,所以我們這裏建三個機,由於這個版本的虛擬機沒有克隆功能,所以如何進行虛擬機克隆呢?我查了一下啊,通過複製修改已經建好系統了的虛擬機的相應文件即可:具體這個網址:VMware Workstation player 克隆多個CentOS實踐
如上圖一,我已經建好了centos7 centos7-1 centos7-2三臺機器;
1.查看IP,並固定IP(將IP修改爲靜態的)
通過ls命令可以查看/etc/sysconfig/network-scripts/ 目錄
通過vi /etc/sysconfig/network-scripts/ ifcfg-ens33
修改網卡信息,如果沒有學過Linux的可以先去看看常用用的Linux命令,要注意的是不同版本的Linux系統命令有小部分不同;
編輯完成後,保存,然後重啓network(service network restart
)就行了,同理另外兩臺機器也是一樣的,IPaddr自己設置;本人的三個虛擬機IP爲:
192.168.184.184
192.168.184.185
192.168.184.186
2.配置java環境
2.1下載安裝jdk
我們知道Hadoop是通過Java語言來編程的,所以要配置Java環境,學過java的應該知道,Java環境即jdk
安裝jdk,這一步很重要,需要注意的是jdk版本問題,本人用的是jdk8,這裏附上下載網址:
https://www.oracle.com/java/technologies/javase-jdk8-downloads.html
下載完成後需要把安裝包傳到虛擬機客戶端中即可,傳輸需要藉助軟件,可以用大家都知道的xftp工具
這裏要注意的是端口問題,遠程連接用的是22號端口,所以需要先把Linux系統的22號端口打開次啊可以連接上;打開方法:輸入命令iptables -I INPUT -p tcp --dport 22 -j ACCEPT
,然後重啓服務,service network restart
;如下圖,我把它放在root文件下:
下載鏈接(因爲是登錄賬號才能下載,此頁面會過期)
https://download.oracle.com/otn/java/jdk/8u241-b07/1f5b5a70bf22433b84d0e960903adac8/jdk-8u241-linux-x64.tar.gz?AuthParam=1583407894_c6dd6332089b134a77afbc40df6f5413
也可通過命令直接向Linux系統下載jdk:
yum -y install wget
wget https://download.oracle.com/otn/java/jdk/8u241-b07/1f5b5a70bf22433b84d0e960903adac8/jdk-8u241-linux-x64.tar.gz?AuthParam=1583407894_c6dd6332089b134a77afbc40df6f5413
2.2解壓jdk
傳輸到root目錄下,解壓jdk:tar -zvxf jdk-8u241-linux-x64.tar.gz
2.3配置jdk環境變量:
輸入vi /etc/profile
(或vim /etc/profile
需要安裝vim)添加配置如下(*記住一點 一定 要在文件最後添加!*我本人因爲在其他地方添加了幾次。。。一直不行。。。。入了幾次坑)
按照上述步驟對每臺機器進行配置!
3.配置ssh免密登錄
because:在集羣中,Hadoop控制腳本依賴SSH來執行鍼對整個集羣的操作。例如,某個腳本能夠終止並重啓集羣中的所有守護進程。所以,需要安裝SSH,但是,SSH遠程登陸的時候,需要密碼驗證,集羣中數千臺計算機,數千臺計算機都需要手工輸入密碼,這是不太現實的,所以,就需要配置SSH無密碼登錄
3.1 檢查是否安裝了ssh:輸入命令which ssh
簡單直接,沒有的話就安裝yum install -y openssl openssh-server
3.2 在客戶端節點創建密鑰文件:輸入 ls ~/.ssh,查看是否有密鑰存在。沒有,執行下面
創建密鑰,輸入以下指令: ssh-keygen -t rsa
,一直默認Enter下去;輸入ls ~/.ssh
,查看是否多了兩個文件(id_rsa.pub和id_rsa)。
依次在各個節點創建密鑰文件
3.3 將客戶端節點自己的公鑰寫入到自己的authorized_keys中,(這裏要特別注意,最好先進入~/.ssh/ 進入的命令:cd ~/.ssh
)
cat ~/.ssh/id_rsa.pub >> authorized_keys
或者cp ~/.ssh/id_rsa.pub authorized_keys
然後通過vi ~/.ssh/authorized_keys
查看公鑰是否寫入到該文件
然後修改.ssh和authorized_keys的權限,輸入如下命令
sudo chmod 644 ~/.ssh/authorized_keys
sudo chmod 700 ~/.ssh
然後重啓ssh,centos7的重啓命令是systemctl restart sshd
(查看sshd服務狀態:systemctl status sshd.service
啓動sshd服務:systemctl start sshd.service
重啓 sshd 服務:systemctl restart sshd.service
設置服務開啓自啓:systemctl enable sshd.service)
注意:這裏的authorized_keys文件一定要在/.ssh/下,不然就不行,注意注意注意!!!本人就是在這裏入坑了,浪費了一下午時間…
3.4修改客戶端節點的名稱,並設置ip
這個步驟是爲了方便輸入和去分辨三臺客戶端;
hostnamectl set-hostname 【你取的名字】 這樣會修改三種主機名
重啓後你的hostname就變了
我這裏是將一個改爲wx1
另外兩個爲wx2和wx3
輸入vim /etc/hosts
修改如下,這樣在這三臺主機間才能通過hostname來識別彼此 ,不需要輸入長IP了
然後檢驗一下:ssh wx1
4.關閉防火牆
因爲集羣都是內網搭建的,對外還有一個服務器的,那個服務器有防火牆,由它來訪問內網集羣,如果內網內開啓防火牆,內網集羣通訊會出現很多問題。
關閉防火牆: systemctl stop firewalld.service
禁用防火牆;systemctl disable firewalld.service
查看防火牆狀態:firewall-cmd --state
三、安裝Hadoop
1.下載Hadoop包,
我這裏用的是Hadoop2.9.2(第一次使用的2.10.0的,失敗了幾次,就換了)
下載地址:https://hadoop.apache.org/releases.html
2.解壓Hadoop
2.1下載好了後,還是通過xftp傳輸到虛擬機,因爲前面我的jdk也在root目錄下,爲了區分開,我把Hadoop放在home目錄下,然後一樣tar -zxvf hadoop-2.9.0.tar.gz
解壓tar包
2.2配置Hadoop環境變量,跟前面jdk一樣,我們輸入vi /etc/profile
(或vim /etc/profile
)添加配置如下
然後輸入source /etc/profile
運用,輸入hadoop version
檢驗是否成功
3.配置Hadoop相關文件
這裏需要配置七個文件:core-site.xml , hdfs-site.xml , mepred-site.xml, yarn-site.xml,hadoop.env.sh、yarn-env.sh,slaves需要注意的是,因爲下面的內容是我的配置,我的虛擬機節點名稱爲wx1,這個需要修改一下;然後就是路徑問題,由於解壓或其他問題肯導致Hadoop文件夾名稱改變,所以一定要注意路徑問題;
1.core-site.xml:
vi /home/hadoop-2.9.2/etc/hadoop/core-site.xml
在<configuration> </configuration>
節點中增加如下內容:
<property>
<name>fs.default.name</name>
<value>hdfs://wx1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop-2.9.2/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
2.hdfs-site.xml
vi /home/hadoop-2.9.2/etc/hadoop/hdfs-site.xml
在<configuration> </configuration>
節點中增加如下內容:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/hadoop-2.9.2/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/hadoop-2.9.2/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>wx1:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
3.mapred-site.xml
vi /home/hadoop-2.9.2/etc/hadoop/mapred-site.xml
在<configuration> </configuration>
節點中增加如下內容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>wx1:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>wx1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>wx1:19888</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://wx1:9001</value>
</property>
4.yarn-site.xml
vi /home/hadoop-2.9.2/etc/hadoop/yarn-site.xml
在<configuration> </configuration>
節點中增加如下內容:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>wx1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>wx1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>wx1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>wx1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>wx1:8088</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>wx1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
5.hadoop-env.sh和yarn-env.sh
配置/home/hadoop-2.9.2/etc/hadoop目錄下hadoop-env.sh、yarn-env.sh的JAVA_HOME,jdk環境變量
vi /home/hadoop/hadoop-2.9.0/etc/hadoop/hadoop-env.sh
vi /home/hadoop/hadoop-2.9.0/etc/hadoop/yarn-env.sh
在文件中找到JAVA_HOME,取消JAVA_HOME的註釋,設置爲 export JAVA_HOME=/root/jdk1.8.0_241
8,slaves
配置/home/hadoop/hadoop-2.9.2/etc/hadoop目錄下的slaves,刪除默認的localhost,添加2個從節點:
前面提到的我的三個客戶端節點名稱爲wx1,wx2,wx3。 wx1爲主節點
vi /home/hadoop-2.9.2/etc/hadoop/slaves
wx2
wx3
4.複製Hadoop至從節點
將wx1服務器上配置好的Hadoop複製到各個節點對應位置上,通過scp傳送:
scp -r /home/hadoop wx2:/home/
scp -r /home/hadoop wx3:/home/
因爲Hadoop比較大,這裏可能需要幾分鐘時間
5.啓動Hadoop
在wx1主節點啓動hadoop服務,各個從節點會自動啓動,cd /home/hadoop-2.9.2
進入/homep/hadoop-2.9.0/目錄,hadoop的啓動和停止都在wx1上進行;
1.初始化,輸入命令:hdfs namenode -format
2.啓動命令:start-all.sh
啓動順序:NameNode,DateNode,SecondaryNameNode,JobTracker,TaskTracker
3.輸入jps命令查看相關信息,master上截圖如下:
4.slave節點上輸入jps查看:
5.停止命令:stop-all.sh
關閉順序性:JobTracker,TaskTracker,NameNode,DateNode,SecondaryNameNode
6.訪問頁面
訪問Hadoop頁面,注意這兩個頁面是在Hadoop啓動狀態下訪問的,然後就是防火牆要關閉,前面步驟中提到過,輸入http://192.168.184.184:50070,看到如下界面:
輸入http://192.168.184.184:8088,看到如下界面:
到了這一步。如果以上頁面都能實現以及jps查看的各個節點都存活,那麼基本上完成了hadoop集羣的搭建了!開心^ - ^
剛接觸大數據的一名大學生;
如有不足之處,還望大佬指出;
如有不懂之處,歡迎評論詢問;