Hadoop大数据环境搭建保姆级教程(完整版)
文章目錄
- 1、準備工作
- 2、靜態IP地址配置
- 3、關閉防火墻
- 4、修改主機名稱
- 5、編輯hosts文件
- 6、虛擬機克隆
- 7、SSH免密登陸
- 8、搭建虛擬機上的Hadoop環境
- 9、配置jdk和Hadoop
- 10、scp、xsync集群分發腳本
- 11、修改核心配置文件
- 12、啟動集群
- 13、Hadoop環境檢測
前言:找了全網關于mac配置Hadoop大數據框架,很多都不不全面,有的還沒有效果,對于新手小白來說極其不友好,因此特地花費了幾天時間整理Hadoop環境搭建教程,保證一看就會,干貨內容很多,請耐心學習!
1、準備工作
請安裝以下幾個軟件
VMware
Centos 7
安裝鏈接:
VMware Fusion12安裝鏈接
Centos安裝鏈接
2、靜態IP地址配置
想為虛擬機配置固定ip,需要設置網關,但是mac版的vmware workstation沒有Virtual Network Editor,所以不能直接查看到,需要在終端執行如下命令( 不要漏掉VMware后的\ )
cd /Library/Preferences/VMware\ Fusion/vmnet8然后輸入ls,你會看到幾個文件
接著使用vim操作打開nat.conf文件就可以查看到vmnet8的網關地址,輸入命令為:
結果如下圖所示:
然后就找到vmnet8的的網關地址
ip = 172.16.55.2 netmask = 255.255.255.0然后使用 管理者權限登陸虛擬機,并且通過vim操作進入文件,操作命令為:
vi /etc/sysconfig/network-scripts/ifcfg-ens33會出現如下結果
下面我們需要修改幾個配置參數,從而達到使用靜態IP地址的目的,具體如下圖:
其中,
- 將BOOTPROTO=“dhcp” 改為BOOTPROTO="static"
- 將ONBOOT=“no” 改為ONBOOT="yes"
- 定義IPADDR的值:IPADDR的選取是不唯一的,需要在一定范圍內選取,在終端輸入:
出現如下結果:
也就是說,你設置的靜態IP地址必須在如圖方框的范圍內才有效,我這里選取的IPADDR=172.16.155.130,當然也可以是其他的數值(按:q退出vim)
- GATEWAY和NETMASK設置就是咱們之前獲取的vmnet8的的網關地址中的ip和netmask,
- 獲取DNS,則是在mac電腦中的系統偏好設置–>網絡–>高級–>DNS
注意:這里的DNS配置不是唯一的,你可以配置多個DNS,建議在配置一個百度的公共DNS,以便更換了的無線網絡也可以響應。
DNS2=180.76.76.76
OK,走到這里咱們就把靜態IP地址給設置好了,然后咱們來檢驗一下,是否配置成功
在虛擬機上輸入[ 必須要restart一下,才有效果]
然后輸入
ping www.baidu.com看看是否出現下面這個畫面
如果出現這個響應,說明已經靜態IP地址配置成功(按command+c停止響應)
3、關閉防火墻
關閉防火墻的目的是為了使得服務器與服務器之間可以互通,否則就無法進行通信了
操作命令:
出現removed…信息就代表關閉防火墻了,當然也可以再通過systemctl status firewalld命令,如果看到active狀態變為inactive(dead)就表示已經關閉了
4、修改主機名稱
在虛擬機上配置主機名,可以看到默認名稱為 localhost lib,這里只需要輸入命令:hostnamectl set-hostname hadoop100
其中**“hadoop100”**是我自己取的名稱,你們可以自己隨意取名
然后使用 “reboot”命令重啟虛擬機,使得修改命令生效
可以看到我這里的主機名已經修改成功了,然后再次登陸管理員賬號( “reboot”)即可
5、編輯hosts文件
在虛擬機上輸入命令:vi /etc/hosts
會看到
然后同樣用vi操作( 輸入“i”,進入編輯模式,然后插入IP地址和對應的名稱,按esc退出,最后輸入“:wq”保存結果即可),參考一下我的命名格式:
我這里暫時新建了5個虛擬機IP地址,如果想新建更多的虛擬機,方法是一樣的;然后,每一個IP地址只要不同就可以了,其中第一個IP是我們一開始已經確定好的,就不要修改了,剩下的IP建議 按順序依次往下添加,至于右邊的名稱可以自己修改。
6、虛擬機克隆
為了使上面的步驟有效起來,這里我們需要克隆3臺虛擬機,我分別命名為hadoop101、hadoop102、hadoop103。
注意: 克隆虛擬機一定要將虛擬機關閉
關閉虛擬機的命令【手動關閉也可以】
然后直接在虛擬機資源庫中對主機hadoop100, 右擊,點擊“創建完整克隆”,再重新命名一下即可,如圖所示
注:我這里已經提前創建好克隆機hadoop101、hadoop102、hadoop103了,因此會出現4臺服務器,正常按我的操作的話,這一步只能看到hadoop101。
由于克隆機與主機是完全一樣的,因此需要修改3個參數:ip地址、uuid和hostname,
依然是先root登陸,輸入密碼,然后輸入
只需要修改圖中圈中的部分即可
(1)IP地址修改
直接和咱們之前hosts文件中設置的一樣即可,因為我這里是hadoop102,所以需要將IPADDR修改為 IPADDR=172.16.55.132
(2)uuid修改
需要先推出vi編輯器,然后在虛擬機輸入命令uuidgen就會產生新的uuid,如圖所示
然后按照這個新生成的uuid,修改原來ifcfg-ens33文件下的uuid即可,最終的修改結果如圖所示
(3)修改hostname
具體過程和之前講解的一樣,輸入hostnamectl set-hostname hadoop102
最后記得reboot一下即可,然后重新登陸就會發現hostname變成了hadoop102了
遠程連接虛擬機(遠程服務器)
由于mac電腦自帶ssh命令,因此就不需要在下載Xshell軟件了,還是省了一些事情的。
下面演示一下如何在本地終端連接虛擬機,結果如圖。
如果出現這個界面就代表我們已經實現遠程操作虛擬機了,這樣的話咱們就擺脫在VMware上操作虛擬機,還是很方便的。
注意,第一次輸入這樣的命令可能不是這個界面,會多一步讓你輸入“yes/no”的步驟,咱們輸入“yes”即可。然后這里的IP地址就是咱們之前/etc/hosts文件的添加的IP地址,需要保持一致。
7、SSH免密登陸
第一步:生成密鑰
在三個虛擬機上均要執行下面的操作,這里以hadoop100為例,依次輸入命令ssh-keygen -b 1024 -t rsa,然后連續按三個Enter鍵即可。
之后需要在不同虛擬機進行免密登陸的話,就需要多次設置,分別為:
**
hadoop100 免密登陸hadoop101和hadoop102、hadoop103
hadoop101 免密登陸hadoop102、hadoop103
hadoop102 免密登陸hadoop101**
…
下面以hadoop100免密登陸hadoop101為例,其余同理
在hadoop100虛擬機上輸入命令
最后測試一下是否可以免密登陸,我這里是在hadoop100免密登陸hadoop101,命令如下ssh hadoop101,出現如下結果就代表登陸免密成功
8、搭建虛擬機上的Hadoop環境
準備工作
需要準備jdk以及對應的hadoop版本,我這里使用的是Hadoop3.x的版本,這里提供網址供你們自行下載:
jdk1.8下載
hadoop3.1.4下載
注意:下載的是壓縮包文件(tar.gz結尾)
第一步:在hadoop100上的opt文件夾下創建兩個module和software文件夾,如圖所示:
注意:我這里是在根目錄“/”下創建的,所以沒有在opt前添加“/”
第二步:利用文件傳輸工具()將剛才下載的好的兩個文件拖到software文件夾下,windows使用Xftp,mac我這里使用的是FileZilla下載好之后需要登陸你的虛擬機賬號,然后進行拖拽即可
9、配置jdk和Hadoop
(1)安裝jdk及配置其環境變量
在software目錄下輸入命令:
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
注意:如果你下載的jdk是其他版本的話,就需要重新改一下名字,其余命令均可不變
配置jdk環境變量
在根目錄/下進入jdk1.8.0_212文件夾中,然后進入profile.d文件夾中,創建my_env.sh文件,具體輸入命令:
然后在vi編輯中,寫入:
#JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin退出保存后,輸入命令source /etc/profile,就配置好jdk的環境變量啦
輸java -version,
如果出現上述結果就表示jdk環境就搭建好啦
(2)安裝hadoop及配置環境變量
在software目錄下,輸入命令解壓hadoop文件
tar -zxvf hadoop-3.1.4.tar.gz -C /opt/module/
注意:如果你下載的hadoop是其他版本的話,就需要重新改一下hadoop名字,其余命令均可不變
然后進入hadoop3.1.4(/opt/module/hadoop3.1.4)文件夾中,輸入命令進入vi編輯器中
在vi編輯器中輸入配置環境變量的命令:
#HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-3.1.4 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin保存退出,然后輸入命令source /etc/profile,就配置好hadoop環境變量啦,輸入hadoop命令,如果出現
就意味著配置好hadoop環境變量了
10、scp、xsync集群分發腳本
(1) scp命令(安全拷貝)
實現服務器與服務器之間的數據拷貝
這里以以復制hadoop100–>其他服務器上為例,在hadoop100服務器中進入module文件夾下,輸入命令
scp -r jdk1.8.0_212/ root@hadoop101:/opt/module/
表示將hadoop100上的jdk復制到hadoop101中的module里
scp -r /opt/module/* root@hadoop101:/opt/module/
表示將hadoop100上module文件夾中的所有內容的拷貝到hadoop101服務器中的module里
同理使用上述命令可以將hadoop100上module里的所有內容拷貝到其他服務器中,大家自己操作一下,這里就不做記錄啦。
(2)rsync 遠程同步工具
rsync用于備份和鏡像。具有速度快、避免復制相同內容和支持符號鏈接的優點
首先在hadoop101、hadoop102、hadoop103上均要安裝xsync
安裝命令:
安裝完成之后輸入echo $PATH看一下你的全局變量有哪些:
找到我圖中圈出來的全局變量,然后在/root/bin目錄下創建xysnc文件,操作如下:
進入vi編輯器后,將以下代碼粘貼到xsync文件中,
然后輸入chmod 777 xysnc 修改xysnc文件權限,可以發現xysnc顏色變成綠色的就代表這是可執行文件。
測試xsync腳本
只要不報錯,基本就是沒問題了,這個腳本接下來需要用到!
11、修改核心配置文件
注意:
- NameNode和SecondaryNameNode不要安裝在同一臺服務器
- ResourceManager也很消耗內存,不要和NameNode、SecondaryNameNode配置在同一臺機器上
本文按照以下表格分配的服務器位置安裝
| HDFS | NameNode DataNode | DataNode | DataNode SecondaryNameNode |
| YARN | NodeManager | ResourceManager NodeManager | NodeManager |
這里hadoop核心配置文件包括四個:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
這四個配置文件存放在 $HADOOP_HOME/etc/hadoop 這個路徑上,以hadoop101為例
(1) core-site.xml配置
使用vi編輯器打開core-site.xml
在配置文件里輸入:
(2) hdfs-site.xml配置
同樣的方法,使用vi編輯器進入hdfs-site.xml ,輸入:
(3) yarn-site.xml配置
同樣的方法,使用vi編輯器進入yarn-site.xml ,輸入:
(4) mapred-site.xml配置
同樣的方法,使用vi編輯器進入mapred-site.xml ,輸入:
注:這里一定要全部按照我標注的配置,不能漏掉任何一個,且配置過程中一定要檢查是否粘貼的出錯,如果你的hadoop版本和我的不一致也要按對應的修改!
12、啟動集群
(1)配置workers
在/opt/module/hadoop-3.1.4/etc/hadoop目錄下,輸入vi workers將里面的localhost換成如下:
注:hadoop101、hadoop102、hadoop103周圍均不可以有空格
然后分發一下修改好的workers文件,命令為xsync workers
(2)啟動集群
(i)如果集群是第一次啟動,需要在 hadoop101節點格式化 NameNode
[root@hadoop101 hadoop-3.1.4]# hdfs namenode -format(ii) 啟動 HDFS
[root@hadoop101 hadoop-3.1.4]# sbin/start-dfs.sh如果這里報錯
Starting namenodes on [hadoop101] ERROR: Attempting to operate on hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation. Starting datanodes ERROR: Attempting to operate on hdfs datanode as root ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.就需要配置一個叫hadoop-env.sh文件,
在/etc/hadoop/hadoop-env.sh 目錄下,輸入
將下面的命令添加到hadoop-env.sh里,位置無所謂,我是添加在文件末尾的
export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root這樣啟動[root@hadoop101 hadoop-3.1.4]# sbin/start-dfs.sh就不會報錯了!
然后輸入[root@hadoop101 hadoop-3.1.4]# jps檢測一下,如果出現DataNode和NameNode說明配置成功
(iii)在配置了 ResourceManager 的節點(hadoop102 )啟動 YARN
如果中間報錯Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)或者是缺少NodeManager說明該服務器沒有設置和其他服務器之間的免密登陸,需要重新設置一下。
[root@hadoop102 ~]# ssh-copy-id hadoop101 [root@hadoop102 ~]# ssh-copy-id hadoop102 [root@hadoop102 ~]# ssh-copy-id hadoop103最后輸入[root@hadoop101 hadoop-3.1.4]# jps檢查一下,如果出現DataNode、ResourceManager和NodeManager三個說明配置成功,缺少任何一個都代表配置有問題!
到這里整個集群就啟動完畢!
13、Hadoop環境檢測
檢測一下hadoop環境搭建是否有效,我們運行一個官方的實例:
Step1:創建在 hadoop-3.1.4 文件下面創建一個 wcinput 文件夾
Step2: 在 wcinput 文件下創建一個 word.txt 文件
[root@hadoop101 hadoop-3.1.4]# cd wcinputStep3: 編輯 word.txt 文件
[root@hadoop101 hadoop-3.1.4]# vi word.txt在文件中輸入如下內容,并保存退出
hadoop yarn hadoop mapreduce jancy jancyStep4: 回到 Hadoop 目錄/opt/module/hadoop-3.1.4
Step5: 執行程序
Step6: 查看結果
[root@hadoop101 hadoop-3.1.4]# cat wcoutput/part-r-00000結果如下:
hadoop 2 jancy 2 mapreduce 1 yarn 1這里我們也可以通過在本地web頁面上看到我們hadoop運行的結果
在網頁里輸入hadoop101:9870,如下:
如果輸入hadoop101:9870無法打開網頁,但是輸入172.16.55.131:9870可以打開,可以參照我寫的這片解決方案博客
這篇文章整理了很久,難免會在整理中出現紕漏,如果有什么疑問的地方,就請留言告知!
如果我的文章對您有幫助,就請一鍵三連支持一下吧~
總結
以上是生活随笔為你收集整理的Hadoop大数据环境搭建保姆级教程(完整版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中断子系统之Workqueue
- 下一篇: ubuntu下面挂载mtp设备的目录位置