環(huán)境說(shuō)明:3臺(tái)華為云服務(wù)器
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
注意:以下提供的配置,其中有個(gè)別備注,要根據(jù)情況修改!
1.修改服務(wù)器的hosts文件
vi /etc/hosts
在文件中添加:各個(gè)服務(wù)器IP地址+主機(jī)名
注意:云服務(wù)器中只有一塊內(nèi)網(wǎng)網(wǎng)卡,外網(wǎng)地址不是直接配置在云服務(wù)器中,程序無(wú)法綁定公網(wǎng)IP地址。因此服務(wù)器本身要改為 —— 內(nèi)網(wǎng)IP+主機(jī)名。不然在可能會(huì)在NameNode啟動(dòng)時(shí)報(bào)錯(cuò):Cannot assign requested address
備注:也可選擇修改各個(gè)服務(wù)器的主機(jī)名,方便查看,看情況決定
vi /etc/hostname
2.創(chuàng)建用戶和組
為了安全,還是很有必要的
創(chuàng)建hadoop用戶組
sudo addgroup hadoop
創(chuàng)建hadoop用戶
sudo adduser -ingroup hadoop hadoop
給hadoop用戶添加權(quán)限
vim /etc/sudoers
hadoop ALL=(ALL:ALL) ALL
對(duì)于用戶的權(quán)限,后期調(diào)整補(bǔ)充(還沒(méi)詳細(xì)了解,暫時(shí)給ALL)
備注:創(chuàng)建新的用戶使用hadoop主要是考慮到安全因素,一般配置的時(shí)候都是在root下配置的,使用的時(shí)候創(chuàng)建新用戶使用hadoop。也可以用root啟動(dòng)和使用hadoop,但是root權(quán)限太大,可能因?yàn)槟硞€(gè)誤操作導(dǎo)致災(zāi)難性的后果,所以需要?jiǎng)?chuàng)建新的用戶。
檢驗(yàn)各個(gè)服務(wù)器之間能否連通
ping + 各個(gè)服務(wù)器主機(jī)名
3.為服務(wù)器安裝jdk并配置環(huán)境變量
我的做法是:先下好想要的JDK包,然后scp傳到服務(wù)器(速度會(huì)比較快,安裝hadoop的時(shí)候也是選擇了這么做)
JDK下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
scp 本地JDK存放路徑 服務(wù)器用戶名@IP地址:存放路徑
建議:存放路徑為/usr/java(需要新建java目錄)
若是提示傳入/usr ,可先傳入臨時(shí)目錄,然后在使用命令mv移動(dòng)
登錄到服務(wù)器
安裝JDK
tar -zxvf jdk.....(安裝包名稱)
配置JDK環(huán)境變量
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_171
export JRE_HOME=/usr/java/jdk1.8.0_171/jre
export CLASSPATH=JAVA_HOME/lib export PATH=:PATH:JAVA_HOME/bin:JRE_HOME/bin
使配置生效
source /etc/profile
查看配置是否成功

4.配置服務(wù)器間的SSH免密碼登錄
各個(gè)服務(wù)器生成密鑰(公: .pub/私),公鑰要傳到其他服務(wù)器
cd ~/.ssh
ls
ssh-keygen -t rsa -P ""
回車(chē)后,會(huì)提示三次輸入信息,我們直接回車(chē)即可
可對(duì)id_dsa.pub,復(fù)制一份并改名,方便識(shí)別
cp id_dsa.pub id_dsa_序號(hào).pub
各個(gè)服務(wù)器都生成密鑰后,把公鑰傳給NameNode。
scp id_dsa.pub 服務(wù)器用戶名@IP:~/.ssh
將所有服務(wù)器生成的公鑰(id_rsa.pub)都追加到NameNode 的authorized_keys中
cat id_rsa_序號(hào).pub >> authorized_keys
把a(bǔ)uthorized_keys傳回其他節(jié)點(diǎn),并寫(xiě)出節(jié)點(diǎn)的authorized_keys中
cp authorized_keys authorized_keys_total
scp authorized_keys_total 服務(wù)器用戶名@IP:~/.ssh
cat authorized_keys_total >> authorized_keys
至此,配置完成。
輸入命令ssh 主機(jī)名 ,根據(jù)提示輸入“yes”
輸入命令exit注銷(xiāo)(Logout)
再次輸入命令ssh 主機(jī)名 即可直接登錄
5.NameNode安裝Hadoop
下載好Hadoop安裝包,傳至服務(wù)器
下載地址:http://hadoop.apache.org/releases.html
scp 本地存放路徑 服務(wù)器用戶名@IP地址:存放路徑
建議:存放路徑為/usr/hadoop(新建hadoop目錄)
若是提示傳入/usr ,可先傳入臨時(shí)目錄,然后在使用命令mv移動(dòng)
安裝
tar -zxvf Hadoop.....(安裝包名稱)
新建目錄(重要)
在/usr/hadoop路徑下:
mkdir dfs
mkdir dfs/name
mkdir dfs/data
mkdir tmp
/usr/hadoop/hadoop-2.7.3(我安裝的版本)路徑下:
mkdir logs
mkdir pids
配置環(huán)境 (master中文件配置建議使用0.0.0.0地址)
文件都在/usr/hadoop/hadoop-2.7.3/etc/hadoop 路徑下
配置文件:hadoop-env.sh
export JAVA_HOME= JAVA路徑

配置文件:yarn-env.sh
export JAVA_HOME= JAVA路徑

配置文件:slaves

配置文件:core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs:// nameNode主機(jī)名:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/tmp(tmp路徑)</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
配置文件:hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/hadoop/dfs/name(dfs/name路徑)</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/hadoop/dfs/data(dfs/data路徑)</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
配置文件:mapred-site.xml
先創(chuàng)建然后編輯
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>nameNode主機(jī)名:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>nameNode主機(jī)名:19888</value>
</property>
</configuration>
配置文件:yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>nameNode主機(jī)名:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>nameNode主機(jī)名:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>nameNode主機(jī)名:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>nameNode主機(jī)名:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>nameNode主機(jī)名:8088</value>
</property>
</configuration>
至此環(huán)境配置完成!
將/usr/hadoop目錄傳輸?shù)狡渌鹍ataNode的 /usr/hadoop目錄中
scp -r hadoop 服務(wù)器用戶名@IP:/usr/hadoop
在此,我選擇先把/usr/hadoop目錄傳到本地,然后再?gòu)谋镜貍鞯狡渌鹍ataNode,感覺(jué)速度快了很多!如果傳輸時(shí)報(bào)錯(cuò)說(shuō) :權(quán)限拒絕,可以先把文件傳送到非/usr目錄下,然后再把目錄再移動(dòng)到/usr/
若是想直接從nameNode傳到其他節(jié)點(diǎn),要注意設(shè)置激活,不然一段時(shí)間后會(huì)掉線,停止傳輸

配置環(huán)境變量,并啟動(dòng)hadoop,檢查是否安裝成功
配置環(huán)境變量
vim /etc/profile
export JAVA_HOME= java路徑
export JRE_HOME=/usr/java/jre
export CLASSPATH=JAVA_HOME/lib export PATH=:PATH:JAVA_HOME/bin:JRE_HOME/bin
注意:使文件生效
source /etc/profile
啟動(dòng)Hadoop
cd /usr/hadoop/hadoop-2.7.3
bin/hdfs namenode -format :格式化nameNode
sbin/start-all.sh :啟動(dòng)Hadoop集群
stop-all.sh :停止Hadoop集群
備注:格式化nameNode成功的提示如下,要注意是否出現(xiàn)錯(cuò)誤!若出現(xiàn)錯(cuò)誤,不要啟動(dòng)集群,先根據(jù)提示解決文件。然后把新建目錄(重要)那一步中新建的目錄下的文件都刪掉(注意!)后,再重新格式化。

檢查是否安裝成功
啟動(dòng)后分別在服務(wù)器中輸入jps查看進(jìn)程,若成功則顯示:
nameNode:

dataNode:
dataNode.png

至此,基于華為云搭建Hadoop集群完成,可以愉快的開(kāi)始玩耍了!
如果對(duì)你有幫助,給我點(diǎn)個(gè)贊哦~(莫問(wèn)前程,但行好事)