安裝Hadoop環(huán)境之前需要做一些準(zhǔn)備工作被辑,比如:安裝Linux、JDK已球、關(guān)閉防火墻臣镣、配置主機(jī)名、配置免密碼登錄智亮、了解Hadoop目錄結(jié)構(gòu)等忆某。搭建Hadoop環(huán)境有三種模式:本地模式、偽分布模式和全分布模式阔蛉。
一弃舒、準(zhǔn)備工作
1.安裝Linux、JDK状原、關(guān)閉防火墻聋呢、配置主機(jī)名
安裝Linux參考這篇文章:<a target="_blank" title="在VMware安裝RedHat Linux 7">https://www.chenchuan.net/doc/1539.html</a>
安裝JDK參考這篇文章:<a target="_blank" title="在RedHat Linux 7安裝JDK">https://www.chenchuan.net/doc/1541.html</a>
關(guān)閉防火墻:
- systemctl status firewalld.service
- systemctl stop firewalld.service ---> 如果重啟,會(huì)重啟防火墻
- systemctl disable firewalld.service ---> 永久關(guān)閉防火墻
輸入systemctl status firewalld.service查看防火墻狀態(tài)
這里顯示inactive說明防火墻關(guān)閉成功
配置主機(jī)名和IP的對(duì)應(yīng)關(guān)系:
編輯配置文件vi /etc/hosts添加192.168.0.111 bigdata111
輸入more /etc/hosts命令查看配置
2.Hadoop的目錄結(jié)構(gòu)
首先下載Hadoop安裝包颠区,Hadoop安裝包可以從官網(wǎng)下載削锰,官網(wǎng)下載地址:<a title="Hadoop官網(wǎng)下載" target="_blank">http://hadoop.apache.org/releases.html</a>,本站提供一個(gè)hadoop-2.7.3.tar.gz下載瓦呼,下載地址:更新中喂窟。。央串。
然后將下載下來的安裝包上傳到Linux的tools目錄磨澡,使用tar -zxvf hadoop-2.7.3.tar.gz -C ~/training/解壓
Hadoop的目錄結(jié)構(gòu)如下:
3.設(shè)置Hadoop環(huán)境變量
解壓好Hadoop后需設(shè)置環(huán)境變量才可以使用,使用命令vi ~/.bash_profile進(jìn)入環(huán)境變量設(shè)置
HADOOP_HOME=/root/training/hadoop-2.7.3
export HADOOP_HOME
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH
使用source ~/.bash_profile命令讓Hadoop環(huán)境變量生效质和,start后連續(xù)按兩次tab鍵稳摄,出現(xiàn)如下界面表示Hadoop環(huán)境變量設(shè)置成功
二、本地模式
1.特點(diǎn)
沒有HDFS饲宿、只能測試MapReduce程序厦酬,因?yàn)楸镜啬J經(jīng)]有HDFS,所以MapReduce處理的是本地Linux的文件數(shù)據(jù)
2.本地模式配置參數(shù)
在hadoop-env.sh中配置JDK的根目錄,輸入vi hadoop-env.sh命令進(jìn)入編輯export JAVA_HOME=/root/training/jdk1.8.0_144,如果是haddop-2.7.3默認(rèn)在第25行瘫想。
3.測試MapReduce程序
創(chuàng)建目錄:mkdir ~/input
在~/input目錄中創(chuàng)建一個(gè)data.txt文件仗阅,輸入文本
I love Beijing
I love China
Beijing is the capital of China
運(yùn)行:
首先進(jìn)入cd ~/training/hadoop-2.7.3/share/hadoop/mapreduce/目錄
然后輸入hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount ~/input/data.txt /output運(yùn)行,這個(gè)/output輸出目錄不能事先存在
進(jìn)入cd ~/output/目錄查看目錄下的part-r-00000文件国夜,如果出現(xiàn)如下結(jié)果表示MapReduce程序測試成功
三减噪、偽分布模式
1.特點(diǎn)
是在單機(jī)上,模擬一個(gè)分布式的環(huán)境,具備Hadoop的主要功能筹裕,安裝好偽分布模式后由HDFS和Yarn兩部分組成醋闭,HDFS:namenode+datanode+secondarynamenode,Yarn: resourcemanager + nodemanager`
2.偽分布模式配置參數(shù)
3.配置
hdfs-site.xml
<!--
表示數(shù)據(jù)塊的冗余度,默認(rèn):3
原則:一般數(shù)據(jù)塊的冗余度跟數(shù)據(jù)節(jié)點(diǎn)(DataNode)的個(gè)數(shù)一致朝卒;最大不超過3
-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--是否開啟HDFS的權(quán)限檢查证逻,默認(rèn)true-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
core-site.xml
<!--配置NameNode地址,9000是RPC通信端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata111:9000</value>
</property>
<!--
HDFS數(shù)據(jù)保存在Linux的哪個(gè)目錄,默認(rèn)值是Linux的tmp目錄
/root/training/hadoop-2.7.3/tmp 這個(gè)目錄要先建立好
-->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/training/hadoop-2.7.3/tmp</value>
</property>
mapred-site.xml:默認(rèn)沒有這個(gè)文件抗斤,可以復(fù)制同目錄下的mapred-site.xml.template囚企,命令:cp mapred-site.xml.template mapred-site.xml
<!--MR運(yùn)行的框架-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml
<!--Yarn的主節(jié)點(diǎn)RM的位置-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata111</value>
</property>
<!--MapReduce運(yùn)行方式:shuffle洗牌-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
4.格式化HDFS(NameNode)
使用hdfs namenode -format命令格式化HDFS(NameNode)
輸出如下日志說明格式化成功:Storage directory /root/training/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.
5.啟動(dòng)與停止
啟動(dòng):start-all.sh
停止:stop-all.sh
啟動(dòng)和停止的時(shí)候都會(huì)提示讓輸入四次密碼
啟動(dòng)成功后通過jps查看到這五部分安裝到一臺(tái)主機(jī)上的
6.訪問
通過Web界面訪問
- HDFS: http://192.168.0.111:50070
- Yarn: http://192.168.0.111:8088
若訪問出現(xiàn)如下界面表示Hadoop偽分布模式配置成功
四、配置免密碼登錄
1.原理
基本原理:采用不對(duì)稱加密的算法豪治,如果Server A要登錄到Server B上洞拨,由Server A產(chǎn)生一個(gè)密鑰對(duì),其中包含公鑰和私鑰负拟,把Server A產(chǎn)生的公鑰給Server B烦衣。當(dāng)Server A登錄到Server B的時(shí)候由Server B隨機(jī)產(chǎn)生一個(gè)字符串,使用Server A給的公鑰進(jìn)行加密生成一個(gè)加密字符串掩浙,然后把這個(gè)加密字符串發(fā)送給Server A,當(dāng)Server A收到Server B發(fā)來的加密字符串的時(shí)候使用自己的私鑰進(jìn)行解密得到Server B加密之前的字符串發(fā)回給Server B花吟。Server B收到Server A發(fā)來的解密字符串進(jìn)行對(duì)比,如果一樣就直接登錄厨姚,否則讓輸入密碼衅澈。
原理圖:
2.配置
比如有一個(gè)主機(jī)(myhost01)要登錄到bigdata111上要配置免密碼登錄,
- 在myhost01上使用ssh-keygen -t rsa生成密鑰對(duì)谬墙,
- 使用命令ssh-copy-id -i .ssh/id_rsa.pub root@bigdata111把myhost01上產(chǎn)生的公鑰拷貝到bigdata111
這樣就配置完成了,在myhost01上使用命令ssh bigdata111連接
發(fā)現(xiàn)不用密碼就可以連接拭抬,這樣上面?zhèn)畏植寄J絾?dòng)和停止都需要輸入密碼部默,現(xiàn)在配置了免密碼登錄就不需要輸入密碼了傅蹂。
從上圖可以看出不需要密碼就可以啟動(dòng)Hadoop了份蝴。
五、全分布模式
1.特點(diǎn)
真正的分布式環(huán)境案糙,用于生產(chǎn)匣椰,至少需要三臺(tái)主機(jī)
2.規(guī)劃及準(zhǔn)備工作
搭建Hadoop全分布模式需要三臺(tái)主機(jī)禽笑,這里用bigdata112/bigdata113/bigdata114這三臺(tái)蟀伸,bigdata112做主節(jié)點(diǎn),bigdata113和bigdata114做從節(jié)點(diǎn)
規(guī)劃示意圖
搭建Hadoop全分布模式跟為分布模式一樣需要關(guān)閉防火墻衰猛、安裝JDK啡省、配置主機(jī)名和配置免密碼登錄卦睹,三臺(tái)主機(jī)時(shí)間同步兢交。關(guān)閉防火墻和安裝JDK跟第一點(diǎn)的準(zhǔn)備工作一樣,不同的是這里配置主機(jī)名和免密碼登錄需要寫上每一臺(tái)主機(jī)的IP和私鑰
配置主機(jī)名
在每臺(tái)主機(jī)輸入vi /etx/hosts命令添加三臺(tái)主機(jī)ip及名稱
192.168.0.112 bigdata112
192.168.0.113 bigdata113
192.168.0.114 bigdata114
配置免密碼登錄
三臺(tái)主機(jī)配置免密碼登錄需要兩兩之間的免密碼登錄,所以每臺(tái)主機(jī)都要拷貝公鑰,每臺(tái)主機(jī)都要使用ssh-keygen -t rsa產(chǎn)生自己的公鑰和私鑰阿迈。每臺(tái)機(jī)器都要把自己的公鑰拷貝給這三臺(tái)每一臺(tái)主機(jī)
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata112
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata113
ssh-copy-id -i .ssh/id_rsa.pub root@bigdata114
三臺(tái)主機(jī)時(shí)間同步
做全分布模式需要三臺(tái)主機(jī)時(shí)間同步刊棕,不然執(zhí)行MapReduce可能會(huì)出錯(cuò)识樱。要保證三臺(tái)主機(jī)時(shí)間同步方法有很多,比如:搭建一臺(tái)時(shí)間服務(wù)器驰凛、跟互聯(lián)網(wǎng)時(shí)間同步胚宦、用工具執(zhí)行同時(shí)修改時(shí)間等您旁。
3.安裝
在主節(jié)點(diǎn)上(bigdata112)安裝驼鞭,然后復(fù)制到bigdata113和bigdata114
解壓設(shè)置環(huán)境變量
使用命令tar -zxvf hadoop-2.7.3.tar.gz -C /training/解壓Hadoop安裝包两曼,在/.bash_profile中設(shè)置192.168.0.112/113/114環(huán)境變量
HADOOP_HOME=/root/training/hadoop-2.7.3
export HADOOP_HOME
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH
使用source ~/.bash_profile命令讓Hadoop環(huán)境變量生效
修改配置文件
全分布模式需要修改如下配置
hadoop-env.sh
在hadoop-env.sh中配置JDK的根目錄,輸入vi hadoop-env.sh命令進(jìn)入編輯export JAVA_HOME=/root/training/jdk1.8.0_144,如果是haddop-2.7.3默認(rèn)在第25行访诱。
hdfs-site.xml
<!--表示數(shù)據(jù)塊的冗余度垫挨,默認(rèn):3-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
core-site.xml
<!--配置NameNode地址,9000是RPC通信端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata112:9000</value>
</property>
<!--HDFS數(shù)據(jù)保存在Linux的哪個(gè)目錄,默認(rèn)值是Linux的tmp目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/training/hadoop-2.7.3/tmp</value>
</property>
mapred-site.xml
默認(rèn)沒有mapred-site.xml需要通過cp mapred-site.xml.template mapred-site.xml命令復(fù)制一個(gè)
<!--MR運(yùn)行的框架-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml
<!--Yarn的主節(jié)點(diǎn)RM的位置-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata112</value>
</property>
<!--MapReduce運(yùn)行方式:shuffle洗牌-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
slaves
bigdata113
bigdata114
格式化NameNode
在使用之前需要先格式化NameNode触菜,使用命令hdfs namenode -format格式化
復(fù)制到從節(jié)點(diǎn)上
把主節(jié)點(diǎn)上配置好的hadoop復(fù)制到從節(jié)點(diǎn)上
scp -r hadoop-2.7.3/ root@bigdata113:/root/training
scp -r hadoop-2.7.3/ root@bigdata114:/root/training
啟動(dòng)
在主節(jié)點(diǎn)上啟動(dòng)start-all.sh
驗(yàn)證
啟動(dòng)成功后在瀏覽器中輸入
- http://192.168.0.112:50070
- http://192.168.0.112:8088
如果都能訪問說明環(huán)境搭建成功九榔。