一、網路配置:
1.1 配置單機網路:
1.2 關閉防火墻:
1.3 SSH連接Centos7:
1.4 配置hosts檔案:
二、JDK配置:
三、Zookeeper集群配置:
四、Hadoop集群配置:
4.1 檔案建立
4.2 JAVA路徑設定
4.2.1 hadoop-env.sh配置
4.2.2 yarn-env.sh配置
4.3 Hadoop集群檔案配置
4.3.1 core-site.xml配置
4.3.2 hdfs-site.xml配置:
4.3.3 mapred-site.xml配置
4.4 Hadoop集群搭建
4.4.1 克隆節點
4.4.2 配置免密登錄
4.4.3 啟動Zookeeper
4.4.4 啟動Hadoop集群
一、網路配置:
1.1 配置單機網路:
配置虛擬機網路之前,我們需要打開cmd輸入ipconfig,得到:

IPv4 地址以及默認網關中顯示的是為物理機的ip地址,在ip地址中各類網路地址的子網都是不同的,
例如:172.16.x.x是指B類網路地址,而.x.x則是在整個172.16下的子網ip地址
因此,在編輯Centos7的網路地址的時候,需要找到自己的網路地址,可以通過子網掩碼進行確認幾類網路地址,之后通過VM-編輯-虛擬機網路編輯進行修改,即:

通過學習網路上其他大佬的文章,子網IP選擇和物理機的Network地址一致,Host地址不一致,可以為之后深入Centos學習節約一點時間,
進入Centos7界面之后,選擇root用戶登錄,之后進入終端,輸入ifconfig可以看到自己的網路地址:

如果是沒配置過網路的Centos7,則這是配置完網路之后應該出現的截圖,通過修改ifcfg-ens33檔案實作對Centos7網路配置:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
進入ens33檔案之后,需要配置的是
BOOTPROTO = “static”
ONBOOT=yes
IPADDR=Network地址+自己設定的host地址
host地址一般是從129開始,而搭建hadoop集群所需要的其他節點host設定,則是在master機器的host地址之上迭代+1,
GATEWAY=Network地址+2 例如172.16.1.2
NETMASK地址以及DNS地址可以選擇填寫或者不填,在下圖示例中是沒有填寫進去,
NETMASK=幾類地址的子網掩碼,例如255.255.255.0是C類地址的子網掩碼
DNS=8.8.8.8,這個屬于Google公司的dns碼

修改完ens33檔案之后,保存并重啟網路:
service network restart
再輸入ifconfig,則可以看到自己剛剛在上面所設定的ip地址,
1.2 關閉防火墻:
幾乎現在每一臺計算機系統都有配置自己的防火墻,而防火墻可以避免我們的計算機陷入不安全的環境當中,但是基于對Hadoop集群的學習以及是在VM虛擬機里面,因此我們可以選擇直接關閉防火墻的自啟動,避免每一次登錄Centos7都會發生防火墻隔離的問題,但如果是基于自己系統里面,我建議每一次使用前再關閉防火墻,
systemctl stop firewalld.service #停止防火墻
systemctl status firewalld.service #查看防火墻狀態
systemctl disable firewalld.service #關閉防火墻
在Centos7里面,stop、start、status、disable以及restart分別對應著操作中的停止、開始、狀態、禁止、重啟的操作邏輯,因此,在操作其他陳述句時,我們亦可以嘗試使用,
1.3 SSH連接Centos7:
這里闡述的是通過SSH軟體MobaXterm(官網有免費版本,學習用的小伙伴可以和我一樣使用免費版本降低學習成本)連接VM虛擬機中的Centos7的教程:
首先,我使用ssh軟體的目的是因為VM虛擬機進行本機切換是需要輸入CTRL+ALT跳出虛擬機操作界面,這使得我學習之路有點難受,因此,我選擇使用SSH軟體連接VM虛擬機中的Centos7,可以避免這個問題,同時,有些人無法從主機上傳檔案到虛擬機中(具體解決辦法可以查詢其他大佬的文章)或指定目錄,而SSH軟體幫助我們迅速的解決這一問題,
從官網下載MobaXterm軟體是純英文版本,而如何進行遠程連接呢?首先我們需要將修改虛擬機的IP地址(這一步,我們已經完成),之后選擇MobaXterm中的:

后輸入自己的Centos7中的IP地址,以及相關賬號的姓名之后:

點擊OK,并在命令列界面中輸入密碼,實作Centos7命令列界面使用(這程序中VM虛擬機中的Centos7需要保持啟動狀態),
1.4 配置hosts檔案:
這一步,是提前進行hosts檔案配置,我們也可以在克隆完成之后再進行,并通過SCP命令將hosts檔案進行同步,
首先,我們先進行主機名字的修改:
hostnamectl set-hostname master #每臺機器的主機名需要不同
hostnamectl set-hostname slave1 #推薦使用master、slave1、slave2
hostnamectl set-hostname slave2
.
.
.
并輸入bash進行重繪,然后打開HOSTS檔案進行配置:
vim /etc/hosts #輸入IP地址 主機名
#有多少臺節點就輸入多少IP地址和主機名
#需要區分IP地址
配置完成之后,需要保證每一臺節點的主機名和IP地址與HOSTS檔案中寫入的一致性
二、JDK配置:
配置Hadoop以及Zookeeper之前,我們還需要對Centos7中的JDK環境進行配置,雖然在Centos7中,我們已經有系統自帶的JDK環境:
java -version

但是,系統自帶的JDK可能會與我們使用的Hadoop與Zookeeper造成錯誤,因此我們需要對自帶的JDK進行洗掉,可以輸入下面這行代碼,查找到所有與JAVA有關的檔案,
rpm -qa | grep java
而洗掉自帶的JDK,我們只需要洗掉所有帶有OPENJDK檔案,例如:
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64
將所有OPENJDK檔案洗掉之后,我們輸入java -version命令可以得到:

這樣一來,我們的自帶JDK系統已經洗掉完畢,然后,進入JDK官網下載Linux版本的JDK,注意,不需要下載太高版本的JDK,否則會因為JDK自帶因素導致無法正常運行Hadoop和Zookeeper(親身體驗過安裝沒問題,啟動一直報錯的痛苦),推薦下載Java 8,
將下載完成的JDK檔案匯入Centos7中,如果是使用Vm虛擬機,需要注意當前用戶是ROOT或者是普通用戶,避免找不到檔案位置,而使用SSH連接軟體,需要注意上傳目錄是在哪里,
上傳之后,對JDK進行解壓,JDK檔案名代表著JDK-版本-作業系統-x64/32位,因此建議使用TAB鍵完成JDK檔案名的匹配,
tar -zxvf jdk-8u301-linux-x64.tar.gz
解壓之后,使用:
mv jdk1.8.0_301/ /usr/local/java
將JDK檔案移到/USR/LOCAL/下面,并重命名為JAVA,可以通過ls命令進行確認,需要注意的是本文全程使用的是ROOT用戶進行安裝,
解壓完JDK,我們需要對JAVA進行環境配置,類似于Windows的環境配置:
vim /etc/profile
打開編輯/ETC/PROFILE檔案之后,新建一行,并將JAVA所在位置等資訊進行寫入,即:
#java
export JAVA_HOME=/usr/local/java #JAVA所在實際檔案位置
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
完成之后,重啟PROFILE檔案(推薦):
source /etc/profile
我們可以通過JAVA -VERSION命令進行查看:

三、Zookeeper集群配置:
Zookeeper的安裝檔案是從官網中下載,注意的是Zookeeper的版本不要最新,也不要太過老(因為有些版本的STATUS會發生No Runing現象,本文以Zookeeper3.6.3為例),
將zookeeper匯入到Centos7,進行解壓、移動的操作:
tar -zxvf zookeeper-xxxx.tar.gz #tab補全
mv zookeeper-xxx /usr/local/zookeeper #tab補全
cd /usr/local/zookeeper
在zookeeper檔案路徑下,建立DATA檔案目錄和LOGS檔案目錄:
mkdir data;mkdir logs
并且,將ZOOKEEPER檔案目錄下的CONF檔案目錄下的zoo_sample.cfg檔案進行復制粘貼重命名操作:
cp zoo_sample.cfg zoo.cfg
進入到zoo.cfg檔案編輯中,修改以下圖所示:

代碼:
dataDir=/usr/local/zookeeper/data #data存放地方
dataLogDir=/usr/local/zookeeper/logs #log存放地方
clientPortAddress=192.168.x.x #本機IP,避免localhost現象,可以不加
server.0=192.168.x.x:2888:3888 #server0-2指的是節點,一般用的是1-250
server.1=192.168.x.y:2888:3888 #填入多臺Centos7的IP地址
server.2=192.168.x.z:2888:3888 #2888是內部通信地址,3888是選舉leader使用
保存后:
cd /usr/local/zookeeper/data #到data地址
mkdir myid #建立myid檔案,需要和server.匹配
echo 0 >> myid #通過echo將id寫入myid
如果要將Zookeeper檔案在任意目錄下呼叫,需要編輯PROFILE檔案:
vim /etc/profile
#zookeeper #輸入
export ZOOKEEPER_HOME=/usr/local/zookeeper #所在位置
export PATH=$PATH:$ZOOKEEPER_HOME/bin
因為我們配置的是ZOOKEEPER集群,因此啟動前需要保證所有節點都啟動,如果是按照本文順序先配置單機,再克隆出其他節點的話,現在啟動ZOOKEEPER會出現其他節點報錯的資訊:
/usr/local/zookeeper/bin/zkServer.sh start #在zookeeper/bin路徑下進行配置
啟動成功截圖(三臺節點同時在線)為:

后將 START 換成 STATUS/STOP則分別是上文中所提及的狀態以及停止服務,

同時,如果我們想一鍵啟動ZOOKEEPER則可以通過在ROOT目錄或其他路徑下建立一個.sh檔案進行操作,同時需要用CHMOD命令進行權限給予 chmod 775 檔案名.sh:
#! /bin/bash
case $1 in
"start"){
for i in 192.168.x.x 192.168.x.y 192.168.x.z #三臺機的主機名或IP地址
do
ssh $i "/usr/local/zookeeper/bin/zkServer.sh start" #同一個路徑下
done
};;
"stop"){
for i in 192.168.x.x 192.168.x.y 192.168.x.z
do
ssh $i "/usr/local/zookeeper/bin/zkServer.sh stop"
done
};;
"status"){
for i in 192.168.x.x 192.168.x.y 192.168.x.z
do
ssh $i "/usr/local/zookeeper/bin/zkServer.sh status"
done
};;
esac
四、Hadoop集群配置:
4.1 檔案建立
首先,我們需要從官網中下載Hadoop檔案到本機中,并上傳到Centos7,之后進行重復上文的動作,將Hadoop檔案解壓,并移動到/USR/LOCAL路徑下:
tar -zxvf hadoop-2.10.1.tar.gz #tab補齊即可
mv hadoop-2.10.1/ /usr/local/hadoop #會重命名為hadoop檔案
cd /usr/local/hadoop/ #到路徑下,如果找不到則是路徑寫錯了
同樣,如果我們要在任意目錄下啟動Hadoop集群,則需要將Hadoop路徑寫入到PROFILE路徑下面:
vim /etc/profile
#hadoop
export HADOOP_HOME=/usr/local/hadoop #Hadoop路徑
export PATH=$PATH:${HADOOP_HOME}/bin
編輯完成之后,通過重啟PROFILE檔案進行測驗:
source /etc/profile
had #當tab能自動補齊時,則編輯成功
現在,我們需要知道的是Hadoop集群是需要進行資料存盤,因此我們需要建立一個DATA檔案進行資料存盤,
mkdir -p /usr/local/data/temp
mkdir -p /usr/local/data/hdfs/name
mkdir -p /usr/local/data/hdfs/data
當我們將這些外部東西設定好了之后,我們需要進行內部“裝飾”,首先需要我們在Hadoop檔案夾下,然后進入到ETC/HADOOP目錄下:
cd etc/hadoop/
4.2 JAVA路徑設定
接下來,大家如果怕自己編輯檔案錯誤,可以通過CP命令將檔案復制一份重命名為其他,進行備份,然后,我們開始編輯,首先是將JAVA路徑配置進去,
4.2.1 hadoop-env.sh配置
編輯hadoop-env.sh檔案:
vim hadoop-env.sh
然后在檔案中查找找到JAVA_HOME,插入下面的代碼,并把之前的JAVA_HOME進行屏蔽:
export JAVA_HOME=/usr/local/java #java所在路徑
如圖:

4.2.2 yarn-env.sh配置
編輯 yarn-env.sh檔案:
vim yarn-env.sh
同樣的查找到檔案中的JAVA_HOME路徑,將之前的屏蔽掉后插入下面代碼:
export JAVA_HOME=/usr/local/java #java所在路徑
如圖:

4.3 Hadoop集群檔案配置
接下來進行Hadoop集群檔案的配置,還是那一句話,如果擔心配置錯誤的話,建議可以CP檔案進行備份,所有代碼都要輸入到<configuration></configuration>中
4.3.1 core-site.xml配置
編輯core-site.xml檔案:
vim core-site.xml
輸入以下代碼:
<property>
<name> fs.default.name </name>
<value>hdfs://master:9000</value> #masterIP地址
<description>指定HDFS的默認名稱</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> #masterIP地址
<description>HDFS的URI</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/data/tmp</value> #上文中建立的data檔案
<description>節點上本地的hadoop臨時檔案夾</description>
</property>
<!--流檔案的緩沖區單位KB-->
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<!--執行zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name> #zookeeper的IP需要與下面輸入一致
<value>master:2181,slave1:2181,slave2:2181</value>
</property>
4.3.2 hdfs-site.xml配置:
編輯hdfs-site.xml檔案:
vim hdfs-site.xml
輸入以下代碼:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/data/hdfs/name</value> #根據實際修改
<description>namenode上存盤hdfs名字空間元資料 </description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/data/hdfs/data</value> #根據實際修改
<description>datanode上資料塊的物理存盤位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
<description>副本個數,默認是3,應小于datanode機器數量</description>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop01:50090</value> #根據實際修改
<!-- hadoop01是master 的 主機名 -->
</property>
4.3.3 mapred-site.xml配置
由于mapred-site.xml被Hadoop檔案自動設定了.template,因此需要首先去掉.template才能使用,推薦以下操作:
cp mapred-site.xml.template mapred-site.xml
編輯mapred-site.xml
vim mapred-site.xml
輸入以下代碼:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>指定mapreduce使用yarn框架</description>
</property>
4.3.4 yarn-site.xml配置
編輯yarn-site.xml
vim yarn-site.xml
輸入以下代碼
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value> #推薦master
<description>指定resourcemanager所在的hostname</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
4.3.5 slaves檔案配置
到這一步,我們需要先編輯slaves檔案:
vim slaves
然后,把LOCALHOST給洗掉,更換成SLAVE1、SLAVE2
slave1 #或者是IP地址
slave2
4.4 Hadoop集群搭建
4.4.1 克隆節點
首先,我們關閉現在的Centos7
shutdown now
然后,右鍵虛擬機,選擇管理-克隆-完整克隆(注意不要把克隆機放在C盤,不然你會發現C盤又被占用了點空間),如圖:

克隆好兩臺Centos7后,我們可以發現現在只需要修改ENS33檔案中的IP地址、ZOOKEEPER檔案目錄下的DATA目錄下的MYID,以及主機名即可,具體操作如下:
修改ens33檔案:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改地方如圖:

同時,需要我們輸入的IP地址和HOSTS檔案的IP地址一致,否則無法啟動SSH免密登錄,查看的代碼:
cat /etc/hosts #需要修改則將cat和vim互換
Myid修改的代碼如下:
cd /usr/local/zookeeper/data #到data地址
echo 1 >> myid #通過echo將id寫入myid
注意的地方是,MYID的ID需要和server.x相匹配,同時也需要保證server.x的IP和HOSTS檔案的IP一致
主機名修改的代碼如下:
hostnamectl set-hostname slave1 #推薦使用master、slave1、slave2
hostnamectl set-hostname slave2
.
.
.
然后重啟:
reboot
測驗是否可以連接
ping 主機名 #也可以是主機的IP
然后,如圖:

4.4.2 配置免密登錄
現在我們需要實作的是A機免密訪問B機,同時B機也可以免密訪問A機,
ssh-keygen -t rsa #在master上,三次回車即可
將master公鑰拷貝在一個檔案里面
cat id_rsa.pub >> authorized_keys
然后把其他節點的密碼也輸入到同一個檔案,需要登錄其他節點上
ssh slave1 #slave1為節點名
ssh-copy-id -i master #master主機名或IP地址
回到master主機上,輸入:
chmod 600 authorized_keys
chmod 700 .ssh
然后通過SCP把authorized_keys傳到其他節點上:
scp /root/.ssh/authorized_keys slave1:/root/.ssh/
通過SSH其他節點,測驗是否成功
ssh 節點名 #注意第一次啟動需要密碼,接下里就不用
4.4.3 啟動Zookeeper
輸入JPS,保證自己節點機器上沒有運行ZOOKEEPER,如圖:

然后在集群節點下面輸入以下代碼,或者是用.sh檔案一鍵啟動,可以用STATUS或者是JPS查看:
/usr/local/zookeeper/bin/zkServer.sh start #在zookeeper/bin路徑下進行配置
4.4.4 啟動Hadoop集群
第一次啟動Hadoop集群,需要在master節點上格式化,代碼如下:
hdfs namenode -format
然后格式化后,輸入以下代碼,啟動Hadoop集群:
/usr/local/hadoop/sbin/start-all.sh start
如圖,可以通過JPS查看行程:

到目前為止,HADOOP集群和ZOOKEEPER集群配置完成,
如果大家覺得不錯的話可以給波支持,寫這一波文章,主要是為了提升自己對HADOOP的理解,接下里我還會繼續更新對HADOOP學習,沖!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/300444.html
標籤:其他
上一篇:Mq的冪等性問題分析和基本處理
