淺析Hadoop完全分布式集群搭建問題
一、Hadoop是什么
- Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎架構。
- 主要解決,海量數(shù)據(jù)的存儲和海量數(shù)據(jù)的分析計算問題。
- Hadoop并不只是單單一個技術,而是一個生態(tài)圈,里面包括Spark、Flume、HBase、Kafka、Sqoop、Hive、Oozie、Azkaban、Zookeeper。
二、Hadoop組成
1、Hadoop1.x
????????①:MapReduce(計算+資源調度)
②:HDFS(數(shù)據(jù)存儲)
③:Common(輔助工具)
2、Hadoop2.x
????????①:MapReduce(計算)
②:Yarn(資源調度)
③:HDFS(數(shù)據(jù)存儲)
④:Common(輔助工具)
三、Hadoop集群搭建所需工具(鏈接如下,自行下載)
- JDK1.8
- Hadoop2.7
四、Hadoop集群配置前期準備
1.克隆虛擬機(克隆三臺,首先配置第一臺,剩下兩臺由于篇幅有限,不再復述,步驟和第一臺一樣)
修改主機名,我設置為hadoop102
hostnamectl set-hostname 你要設置的主機名
關閉防火墻
systemctl stop firewalld.service # 關閉防火墻
systemctl disable firewalld.service # 禁止開機自啟
配置虛擬機網(wǎng)絡,可以連通外網(wǎng)和主機
①:修改虛擬機網(wǎng)絡為NAT模式
②:打開虛擬網(wǎng)絡編輯器,將我框起來的ip地址和子網(wǎng)掩碼記下來,繼續(xù)點擊NAT配設置,同樣記下來框起來的,后面要用。
③:從這里開始進入root模式,首先使用如下命令進入網(wǎng)絡配置,然后按照我的圖修改您的配置,請和我保持一致,沒有的東西就自己寫上,然后按照我的配置。
vim /etc/sysconfig/network-scripts/ifcfg-ens32 #電腦不同最后面的ens32可能不一樣,但是就找差不多的就行
④:重啟網(wǎng)絡(配置到這里可以ping一下百度之類的,但是還沒全部完成,完全按照我的做,應該沒問題,我們還需要配置虛擬機之間的連通,所以另外兩臺虛擬機請按照上面的操作配置。)
systemctl start network.service
? ? ⑤:配置和另外兩臺的連通(我三臺分別叫hadoop102、hadoop103、hadoop104)
vim /etc/hosts
⑥:測試連接,我們分別ping百度、主機、和另外兩臺虛擬機,如果如下圖,則證明配置成功。
五、Hadoop運行環(huán)境搭建
????①:在/opt下面新建module和software,分別用來存放安裝包和程序
②:使用連接工具將上面我提供的安裝包放入software,然后開始安裝jdk,首先卸載之前的jdk,命令如下
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
? ? ③:然后解壓jdk到module中
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
? ? ④:然后配置jdk環(huán)境變量,首先獲取jdk路徑(在解壓后的目錄運行pwd命令,如下,將這個目錄保存下來)
[root@hadoop102 jdk1.8.0_144]$ pwd /opt/module/jdk1.8.0_144
????⑤:打開/etc/profile文件
vim /etc/profile
? ? ⑥:在profile文件末尾添加JDK路徑,保存后退出
#JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_144 export PATH=$PATH:$JAVA_HOME/bin
? ? ⑦:安裝hadoop,前面的步驟一樣,將安裝包解壓到module中,然后使用pwd獲取路徑保存,然后打開/etc/profile文件,在profile文件末尾添加JDK路徑,保存后退出。
##HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
? ? ⑧:讓修改后的文件生效
source/etc/profile
? ? ⑨:如下圖所示,即生效
至此,一臺機器的前期準備工作已完成,另外兩臺完全按照一樣的步驟操作,按照我的一步一步來,肯定沒問題,該踩的坑我都踩過了hh~
六、Hadoop完全分布式集群環(huán)境正式搭建
1、編寫集群分發(fā)腳本xsync
????①:在/home/atguigu目錄下創(chuàng)建bin目錄,并在bin目錄下創(chuàng)建xsync文件
mkdir bin cd bin/ touch xsync vi xsync
? ? ②:文件內容如下
#!/bin/bash #1 獲取輸入?yún)?shù)個數(shù),如果沒有參數(shù),直接退出 pcount=$# if((pcount==0)); then echo no args; exit; fi #2 獲取文件名稱 p1=$1 fname=`basename $p1` echo fname=$fname #3 獲取上級目錄到絕對路徑 pdir=`cd -P $(dirname $p1); pwd` echo pdir=$pdir #4 獲取當前用戶名稱 user=`whoami` #5 循環(huán) for((host=103; host<105; host++)); do echo ------------------- hadoop$host -------------- rsync -rvl $pdir/$fname $user@hadoop$host:$pdir done
? ? ③:修改腳本 xsync 具有執(zhí)行權限
chmod 777 xsync
? ? ④:調用腳本形式:xsync 文件名稱
xsync /home/ironmanjay/bin
注:如果將xsync放到/home/atguigu/bin目錄下仍然不能實現(xiàn)全局使用,可以將xsync移動到/usr/local/bin目錄下。
2、集群配置
????這里我們首先配置hadoop102一個主機,配置好之后我們把配置文件使用上面的功能分發(fā)下去,這樣就實現(xiàn)了集群的配置。
①:配置core-site.xml,在文件中編寫如下配置(在hadoop目錄下)
vim core-site.xml
<!-- 指定HDFS中NameNode的地址--> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:9000</value> </property>
<!-- 指定Hadoop運行時產生文件的存儲目錄–>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
????②:配置hadoop-env.sh
[root@hadoop102 hadoop]$ vim hadoop-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_144
? ? ③:配置hdfs-site.xml,在該文件中編寫如下配置
vim hdfs-site.xml
<property> <name>dfs.replication</name> <value>3</value> </property>
<!-- 指定Hadoop輔助名稱節(jié)點主機配置 –>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
????④:配置yarn-env.sh
[root@hadoop102 hadoop]$ vim yarn-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_144
? ? ⑤:配置yarn-site.xml,在該文件中增加如下配置
vim yarn-site.xml
<!-- Reducer獲取數(shù)據(jù)的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
<!-- 指定YARN的ResourceManager的地址–>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
????⑥:配置mapred-env.sh
[root@hadoop102 hadoop]$ vim mapred-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_144
? ? ⑦:配置mapred-site.xml,在該文件中增加如下配置
[root@hadoop102 hadoop]$ cp mapred-site.xml.template mapred-site.xml [root@hadoop102 hadoop]$ vim mapred-site.xml
<!-- 指定MR運行在Yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
? ? ⑧:在集群上分發(fā)配置好的Hadoop配置文件
xsync /opt/module/hadoop-2.7.2/
? ? ⑨:查看文件分發(fā)情況
cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
3、SSH無密登錄配置
????①:生成公鑰和私鑰,然后敲(三個回車),就會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)
[root@hadoop102 .ssh]$ ssh-keygen -t rsa
? ? ②:將公鑰拷貝到要免密登錄的目標機器上
ssh-copy-id hadoop102 ssh-copy-id hadoop103 ssh-copy-id hadoop104
注:還需要在hadoop102上采用root賬號,配置一下無密登錄到hadoop102、hadoop103、hadoop104;
還需要在hadoop103上采用atguigu賬號配置一下無密登錄到hadoop102、hadoop103、hadoop104服務器上。
4、群起集群
????①:配置slaves,向文件中增加如下內容,注意,嚴格按照我的格式,不允許有空格,文件中不允許有空行
cd /opt/module/hadoop-2.7.2/etc/hadoop/slaves vim slaves hadoop102 hadoop103 hadoop104
? ②:同步所有節(jié)點配置文件
xsync slaves
? ? ③:如果集群是第一次啟動,需要格式化NameNode(注意格式化之前,一定要先停止上次啟動的所有namenode和datanode進程,然后再刪除data和log數(shù)據(jù))
[root@hadoop102 hadoop-2.7.2]$ bin/hdfs namenode -format
? ? ④:(hadoop102) 啟動HDFS,終端輸入jps出現(xiàn)下圖即成功啟動HDFS
[root@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh
⑤:(hadoop103) 啟動YARN,終端輸入jps出現(xiàn)下圖即成功啟動YARN
[root@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh
注意:NameNode和ResourceManger如果不是同一臺機器,不能在NameNode上啟動 YARN,應該在ResouceManager所在的機器上啟動YARN。
⑥:Web端查看SecondaryNameNode
瀏覽器中輸入:http://hadoop102:50090/status.html
查看OverView信息,如下圖所示,即配置成功
5、集群啟動/停止方式總結
????①:各個服務組件逐一啟動/停止
# 分別啟動/停止HDFS組件 hadoop-daemon.sh start / stop namenode / datanode /secondarynamenode # 啟動/停止YARN yarn-daemon.sh start / stop resourcemanager / nodemanager
? ? ②:各個模塊分開啟動/停止(配置ssh是前提)常用
# 整體啟動/停止HDFS start-dfs.sh / stop-dfs.sh # 整體啟動/停止YARN start-yarn.sh / stop-yarn.sh
6、集群時間同步(必須root用戶)
????①:檢查ntp是否安裝,如下圖即安裝
rpm -qa|grep ntp
②:修改ntp配置文件,修改內容如下
vim /etc/ntp.conf
a)修改1(授權192.168.1.0-192.168.1.255網(wǎng)段上的所有機器可以從這臺機器上查詢和同步時間)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap為 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
b)修改2(集群在局域網(wǎng)中,不使用其他互聯(lián)網(wǎng)上的時間)
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst為
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
c)添加3(當該節(jié)點丟失網(wǎng)絡連接,依然可以采用本地時間作為時間服務器為集群中的其他節(jié)點提供時間同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
????③:修改/etc/sysconfig/ntpd 文件,增加內容如下(讓硬件時間與系統(tǒng)時間一起同步)
vim /etc/sysconfig/ntpd SYNC_HWCLOCK=yes
? ? ④:重新啟動ntpd服務
service ntpd restart
? ? ⑤:設置ntpd服務開機啟動
chkconfig ntpd on
到此這篇關于淺析Hadoop完全分布式集群搭建問題的文章就介紹到這了,更多相關Hadoop集群搭建內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
關于MybatisPlus配置雙數(shù)據(jù)庫驅動連接數(shù)據(jù)庫問題
這篇文章主要介紹了MybatisPlus配置雙數(shù)據(jù)庫驅動連接數(shù)據(jù)庫的具體實現(xiàn),具體的業(yè)務邏輯,在service層的類或者方法上面添加@DataSource注解來指定該業(yè)務需要用到的數(shù)據(jù)源,需要的朋友可以參考下2022-01-01Java微信公眾平臺開發(fā)(14) 微信web開發(fā)者工具使用
這篇文章主要為大家詳細介紹了Java微信公眾平臺開發(fā)第十四步,微信web開發(fā)者工具的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04springboot -sse -flux 服務器推送消息的方法
這篇文章主要介紹了springboot -sse -flux 服務器推送消息的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-11-11