Hadoop完全分佈
完全分散式搭建
Hadoop下載地址:http://archive.apache.org/dist/hadoop/core/
這裡用的Hadoop版本是:hadoop-2.6.0.tar.gz
1. 虛擬網路編輯器
NAT模式:設定閘道器和IP
比如:
閘道器:192.168.1.2
子網:192.168.1.0 子網掩碼:255.255.255.0
2. 建立虛擬機器
2.1 建立新的虛擬機器
點選左上角檔案中的新建虛擬機器進行如下步驟:
2.2 選擇Linux的iso檔案
點選編輯虛擬機器設定
2.3 開始安裝虛擬機器
點選開始此虛擬機器
1.滑鼠點進去,用上下鍵選擇第一個回車。
2.語言選擇中文。
3.點選軟體選擇、安裝位置,點選網路和主機可以先把網路連線起。
4.然後點選開始安裝
5.設定root密碼後等待安裝完成,然後點選完成配置。
6.配置完成後點選重啟。
7.接受許可,然後點選完成配置
8.然後一直前進前進,到設定全名和密碼設定好後繼續前進,完成安裝
2.4 克隆另外兩臺虛擬機器
需先把master虛擬機器關機
然後點選下一步——》選虛擬機器中的當前狀態——》建立完整克隆——》設定名稱和位置——》完成
3. 配置三臺虛擬機器的網路
這些命令最好都進入root使用者執行
3.1 配置靜態IP
命令:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
新增
BOOTPROTO="static" //這句在檔案中已經存在,找到把他修改成static即可
IPADDR=192.168.1.110 //IP地址
GATEWAY=192.168.1.2 //閘道器
DNS1=192.168.1.2 //和閘道器保持一致即可
3.2 配置DNS
命令:
vi /etc/NetworkManager/NetworkManager.conf
新增一行內容:
dns=none
然後重啟網路管理:
systemctl restart NetworkManager.service
3.3 修改域名解析配置檔案
命令:
vi /etc/resolv.conf
新增內容:
nameserver 192.168.1.2 //閘道器
最後重啟網路:
service network restart
ping www.baidu.com可ping通即配置成功。
3.4 設定主機名
命令:
vi /etc/sysconfig/network
新增如下內容:
#Created by anaconda
NETWORKING=yes
HOSTNAME=master //新增
防止重啟又恢復回去:
vi /etc/hostname //修改為本機名字
例如:(設定時可把localhost刪除)
master
3.5 設定主機與ip對映
命令:
vi /etc/hosts
例如:
//ip地址 主機名
192.168.1.110 master
192.168.1.111 slave01
192.168.1.112 slave02
4. 防火牆關閉
三臺機器都需要
檢視防火牆狀態:
systemctl status firewalld.service
關閉防火牆:
systemctl stop firewalld.service
防止下次重啟防火牆自動啟動:
systemctl disable firewalld.service
5. 免金鑰登入配置
生成金鑰(三臺虛擬機器都需執行)
以master虛擬機器為例:
執行命令生成公鑰和私鑰:
ssh-keygen -t rsa //這條命令一直回車
傳送到每臺伺服器(每臺都執行,一行一行的執行)
ssh-copy-id master
ssh-copy-id slave01
ssh-copy-id slave02
如圖所示:
測試是否成功
ssh master
ssh slave01
ssh slave02
成功如圖所示
檢視生成的檔案
ls ~/.ssh
6. 配置jdk(配置一臺其他兩臺複製過去即可)
使用Xftp軟體把檔案上傳到虛擬機器中
可在/opt中建立兩個目錄,一個放上傳的檔案,一個存放解壓後的檔案(可根據實際情況修改上傳檔案的目錄和解壓後的檔案的目錄)
進入/opt目錄建立兩個目錄
cd /opt //進入/opt目錄
mkdir module //建立module目錄
mkdir software //建立software目錄
6.1 上傳檔案
用xftp上傳jdk-8u281-linux-x64.tar.gz檔案到/opt/software中
6.2 解除安裝系統自帶jdk
檢視系統是否安裝了jdk
rpm -qa | grep jdk
解除安裝自帶的jdk
rpm -qa | grep jdk | xargs -n1 rpm -e --nodeps
6.3 解壓檔案
進入/opt/software中解壓jdk到/opt/module目錄
cd /opt/software //進入/opt/software目錄
(tar -zxvf jdk包名 -C 指定的路徑)
tar -zxvf jdk-8u281-linux-x64.tar.gz -C /opt/module //把檔案加壓到/opt/module目錄中
6.4 設定環境變數
命令:
vi /root/.bash_profile
加入下面內容:
export JAVA_HOME=/opt/module/jdk1.8.0_281 //等號後面是jdk解壓後的路徑
export PATH=$PATH:$JAVA_HOME/bin
使設定立即生效:
source /root/.bash_profile
驗證是否成功:
java -version
7. Hadoop安裝(安裝一臺其他兩臺複製過去即可)
7.1 上傳檔案
用xftp上傳hadoop-2.6.0.tar.gz檔案到/opt/software中
7.2 解壓檔案
進入/opt/software中解壓Hadoop到/opt/module目錄
cd /opt/software //進入/opt/software目錄
(tar -zxvf Hadoop包名 -C 指定的路徑)
tar -zxvf hadoop-2.6.0.tar.gz -C /opt/module //把檔案加壓到/opt/module目錄中
7.3 修改Hadoop名字
進入解壓後的Hadoop目錄進行修改
cd /opt/module
mv hadoop-2.6.0 hadoop //修改hadoop-2.6.0為hadoop
7.4 設定環境變數
命令:
vi /root/.bash_profile
加入下面內容:
export HADOOP_HOME=/opt/module/hadoop //等號後面是hadoop解壓後的路徑
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
使設定立即生效
source /root/.bash_profile
驗證是否成功
hadoop version
這裡的環境變數配好後,可用scp複製到其他兩個節點
scp -r 存放的路徑 root@遠端登入名:複製到遠端登入名節點的路徑
slave01節點:
scp -r /root/.bash_profile root@slave01:/root/.bash_profile //複製到slave01節點上
slave02節點:
scp -r /root/.bash_profile root@slave02:/root/.bash_profile //複製到slave02節點上
7.5 複製jdk、Hadoop到其他兩個節點
命令:
scp -r 存放的路徑 root@遠端登入名:複製到遠端登入名節點的路徑
slave01節點:
scp -r /opt/module/ root@slave01:/opt/module //複製到slave01節點上
slave02節點:
scp -r /opt/module/ root@slave02:/opt/module //複製到slave02節點上
7.6 配置Hadoop
配置前進入hadoop中的/etc/hadoop
cd /opt/module/hadoop/etc/hadoop
7.6.1 修改hadoop-env.sh、yarn-env.sh、mapred-env.sh
找到JAVA_HOME修改他們的JAVA_HOME路徑
命令:
vi hadoop-env.sh //進入hadoop-env.sh進行修改
vi yarn-env.sh //進入yarn-env.sh進行修改
vi mapred-env.sh //進入mapred-env.sh進行修改
配置其中的 JAVA_HOME 路徑(路徑根據自己虛擬機器上的配置來定)
export JAVA_HOME=/opt/module/jdk1.8.0_281
7.6.2 配置core-site.xml
命令:
vi core-site.xml
在
<!-- 指定 HDFS 中 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定 Hadoop 執行時產生檔案的儲存目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop安裝路徑/data</value>
</property>
7.6.3 配置hdfs-site.xml
命令:
vi hdfs-site.xml
在
<property>
<!--指定 HDFS 副本數量-->
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定 Hadoop 輔助名稱節點主機配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
7.6.4 配置yarn-site.xml
命令:
vi 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>master</value>
</property>
7.6.5 配置mapred-site.xml
配置前先把mapred-site.xml.template名字改為mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
進入mapred-site.xml進行修改
vi mapred-site.xml
在
<!-- 指定 MR 執行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
7.6.6 配置 slavers(意為每次啟動那些叢集)
命令:
vi slaves
新增如下:
master
slave01
slave02
7.6.7 分發配置檔案
使用 rsync 命令,同步 {hadoop安裝路徑} / etc 下的配置檔案
rsync -av /Hadoop安裝路徑/etc/hadoop root@遠端登入名:/Hadoop安裝路徑/etc/hadoop
例如:
slave01節點:
rsync -av /opt/module/hadoop/etc/hadoop root@slave01:/opt/module/hadoop/etc
slave02節點:
rsync -av /opt/module/hadoop/etc/hadoop root@slave02:/opt/module/hadoop/etc
8 啟動叢集並測試
(1)第一次啟動要格式化
命令:
hdfs namenode -format
如果格式化報錯要刪除data和logs在進行修改之後在進行第二次格式化
(2)啟動叢集(需進入hadoop安裝目錄)
sbin/start-all.sh
(3)關閉叢集(需進入hadoop安裝目錄)
sbin/stop-all.sh
(4)驗證
jps
如圖所示:
(5)測試
Mapper測試能否跑通
建立資料夾:
hadoop fs -mkdir /input
上傳檔案到input資料夾:
hadoop fs -put 需要上傳的檔名 上傳到的檔案路徑
示例: hadoop fs -put job_list.json /input
輸出檔案:
hadoop jar MapReduceExer.jar 輸入路徑 輸出路徑(事先不能存在)
示例: hadoop jar MapReduceExer.jar /input/job_list.json /output
如圖所示:
瀏覽器檢視:
瀏覽器輸入:機器IP地址:50070-------例如:192.168.1.110:50070
如圖: