目錄 正文 概念了解
主從結(jié)構(gòu):在一個(gè)集群中,會(huì)有部分節(jié)點(diǎn)充當(dāng)主服務(wù)器的角色,其他服務(wù)器都是從服務(wù)器的角色,當(dāng)前這種架構(gòu)模式叫做主從結(jié)構(gòu)。
主從結(jié)構(gòu)分類:
1、一主多從
2、多主多從
Hadoop中的HDFS和YARN都是主從結(jié)構(gòu),主從結(jié)構(gòu)中的主節(jié)點(diǎn)和從節(jié)點(diǎn)有多重概念方式:
1、主節(jié)點(diǎn) 從節(jié)點(diǎn)
2、master slave
3、管理者 工作者
4、leader follower
Hadoop集群中各個(gè)角色的名稱:
服務(wù) |
主節(jié)點(diǎn) |
從節(jié)點(diǎn) |
HDFS |
NameNode |
DataNode |
YARN |
ResourceManager |
NodeManager |
集群服務(wù)器規(guī)劃
使用4臺(tái)CentOS-6.7虛擬機(jī)進(jìn)行集群搭建

軟件安裝步驟概述1、全部節(jié)點(diǎn)配置ssh互信 ssh-keygen .ssh 目錄權(quán)限700 .ssh/authorized_keys文件權(quán)限必須是600 2、全部節(jié)點(diǎn)安裝配置JDK /usr/local/jdk. scp -r /usr/local/jak.*/ hadoop2:/usr/loacl/
1、獲取安裝包
2、解壓縮和安裝
3、修改配置文件
4、初始化,配置環(huán)境變量,啟動(dòng),驗(yàn)證
Hadoop安裝
1、規(guī)劃
規(guī)劃安裝用戶:hadoop
規(guī)劃安裝目錄:/home/hadoop/apps
規(guī)劃數(shù)據(jù)目錄:/home/hadoop/data
注:apps和data文件夾需要自己單獨(dú)創(chuàng)建
2、上傳解壓縮
注:使用hadoop用戶
[hadoop@hadoop1 apps]$ ls
hadoop-2.7.5-centos-6.7.tar.gz
[hadoop@hadoop1 apps]$ tar -zxvf hadoop-2.7.5-centos-6.7.tar.gz
3、修改配置文件
配置文件目錄:/home/hadoop/apps/hadoop-2.7.5/etc/hadoop

A. hadoop-env.sh
[hadoop@hadoop1 hadoop]$ vi hadoop-env.sh
修改JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_73

B. core-site.xml
[hadoop@hadoop1 hadoop]$ vi core-site.xml
fs.defaultFS : 這個(gè)屬性用來指定namenode的hdfs協(xié)議的文件系統(tǒng)通信地址,可以指定一個(gè)主機(jī)+端口,也可以指定為一個(gè)namenode服務(wù)(這個(gè)服務(wù)內(nèi)部可以有多臺(tái)namenode實(shí)現(xiàn)ha的namenode服務(wù)
hadoop.tmp.dir : hadoop集群在工作的時(shí)候存儲(chǔ)的一些臨時(shí)文件的目錄
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/data/hadoopdata</value>
</property>
</configuration>

C. hdfs-site.xml
[hadoop@hadoop1 hadoop]$ vi hdfs-site.xml
dfs.namenode.name.dir:namenode數(shù)據(jù)的存放地點(diǎn)。也就是namenode元數(shù)據(jù)存放的地方,記錄了hdfs系統(tǒng)中文件的元數(shù)據(jù)。
dfs.datanode.data.dir: datanode數(shù)據(jù)的存放地點(diǎn)。也就是block塊存放的目錄了。
dfs.replication:hdfs的副本數(shù)設(shè)置。也就是上傳一個(gè)文件,其分割為block塊后,每個(gè)block的冗余副本個(gè)數(shù),默認(rèn)配置是3。
dfs.secondary.http.address:secondarynamenode 運(yùn)行節(jié)點(diǎn)的信息,和 namenode 不同節(jié)點(diǎn)
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/hadoopdata/name</value>
<description>為了保證元數(shù)據(jù)的安全一般配置多個(gè)不同目錄</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/hadoopdata/data</value>
<description>datanode 的數(shù)據(jù)存儲(chǔ)目錄</description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>HDFS 的數(shù)據(jù)塊的副本存儲(chǔ)個(gè)數(shù), 默認(rèn)是3</description>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop3:50090</value>
<description>secondarynamenode 運(yùn)行節(jié)點(diǎn)的信息,和 namenode 不同節(jié)點(diǎn)</description>
</property>
</configuration>

D. mapred-site.xml
[hadoop@hadoop1 hadoop]$ cp mapred-site.xml.template mapred-site.xml
[hadoop@hadoop1 hadoop]$ vi mapred-site.xml
mapreduce.framework.name:指定mr框架為yarn方式,Hadoop二代MP也基于資源管理系統(tǒng)Yarn來運(yùn)行 。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

E. yarn-site.xml
[hadoop@hadoop1 hadoop]$ vi yarn-site.xml
yarn.resourcemanager.hostname:yarn總管理器的IPC通訊地址
yarn.nodemanager.aux-services:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop4</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>YARN 集群為 MapReduce 程序提供的 shuffle 服務(wù)</description>
</property>
</configuration>

F. slaves
[hadoop@hadoop1 hadoop]$ vi slaves
hadoop1
hadoop2
hadoop3
hadoop4

4、把安裝包分別分發(fā)給其他的節(jié)點(diǎn)
重點(diǎn)強(qiáng)調(diào): 每臺(tái)服務(wù)器中的hadoop安裝包的目錄必須一致, 安裝包的配置信息還必須保持一致 重點(diǎn)強(qiáng)調(diào): 每臺(tái)服務(wù)器中的hadoop安裝包的目錄必須一致, 安裝包的配置信息還必須保持一致 重點(diǎn)強(qiáng)調(diào): 每臺(tái)服務(wù)器中的hadoop安裝包的目錄必須一致, 安裝包的配置信息還必須保持一致
[hadoop@hadoop1 hadoop]$ scp -r ~/apps/hadoop-2.7.5/ hadoop2:~/apps/
[hadoop@hadoop1 hadoop]$ scp -r ~/apps/hadoop-2.7.5/ hadoop3:~/apps/
[hadoop@hadoop1 hadoop]$ scp -r ~/apps/hadoop-2.7.5/ hadoop4:~/apps/
注意:上面的命令等同于下面的命令
[hadoop@hadoop1 hadoop]$ scp -r ~/apps/hadoop-2.7.5/ hadoop@hadoop2:~/apps/
5、配置Hadoop環(huán)境變量
千萬注意:
1、如果你使用root用戶進(jìn)行安裝。 vi /etc/profile 即可 系統(tǒng)變量
2、如果你使用普通用戶進(jìn)行安裝。 vi ~/.bashrc 用戶變量
[hadoop@hadoop1 ~]$ vi .bashrc
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:

使環(huán)境變量生效
[hadoop@hadoop1 bin]$ source ~/.bashrc
6、查看hadoop版本
[hadoop@hadoop1 bin]$ hadoop version
Hadoop 2.7.5
Subversion Unknown -r Unknown
Compiled by root on 2017-12-24T05:30Z
Compiled with protoc 2.5.0
From source with checksum 9f118f95f47043332d51891e37f736e9
This command was run using /home/hadoop/apps/hadoop-2.7.5/share/hadoop/common/hadoop-common-2.7.5.jar
[hadoop@hadoop1 bin]$

7、Hadoop初始化
注意:HDFS初始化只能在主節(jié)點(diǎn)上進(jìn)行
[hadoop@hadoop1 ~]$ hadoop namenode -format

View Code

8、啟動(dòng)
A. 啟動(dòng)HDFS
注意:不管在集群中的那個(gè)節(jié)點(diǎn)都可以
[hadoop@hadoop1 ~]$ start-dfs.sh
Starting namenodes on [hadoop1]
hadoop1: starting namenode, logging to /home/hadoop/apps/hadoop-2.7.5/logs/hadoop-hadoop-namenode-hadoop1.out
hadoop3: starting datanode, logging to /home/hadoop/apps/hadoop-2.7.5/logs/hadoop-hadoop-datanode-hadoop3.out
hadoop2: starting datanode, logging to /home/hadoop/apps/hadoop-2.7.5/logs/hadoop-hadoop-datanode-hadoop2.out
hadoop4: starting datanode, logging to /home/hadoop/apps/hadoop-2.7.5/logs/hadoop-hadoop-datanode-hadoop4.out
hadoop1: starting datanode, logging to /home/hadoop/apps/hadoop-2.7.5/logs/hadoop-hadoop-datanode-hadoop1.out
Starting secondary namenodes [hadoop3]
hadoop3: starting secondarynamenode, logging to /home/hadoop/apps/hadoop-2.7.5/logs/hadoop-hadoop-secondarynamenode-hadoop3.out
[hadoop@hadoop1 ~]$

B. 啟動(dòng)YARN
注意:只能在主節(jié)點(diǎn)中進(jìn)行啟動(dòng)
[hadoop@hadoop4 ~]$ start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/apps/hadoop-2.7.5/logs/yarn-hadoop-resourcemanager-hadoop4.out
hadoop2: starting nodemanager, logging to /home/hadoop/apps/hadoop-2.7.5/logs/yarn-hadoop-nodemanager-hadoop2.out
hadoop3: starting nodemanager, logging to /home/hadoop/apps/hadoop-2.7.5/logs/yarn-hadoop-nodemanager-hadoop3.out
hadoop4: starting nodemanager, logging to /home/hadoop/apps/hadoop-2.7.5/logs/yarn-hadoop-nodemanager-hadoop4.out
hadoop1: starting nodemanager, logging to /home/hadoop/apps/hadoop-2.7.5/logs/yarn-hadoop-nodemanager-hadoop1.out
[hadoop@hadoop4 ~]$

9、查看4臺(tái)服務(wù)器的進(jìn)程
hadoop1

hadoop2

hadoop3

hadoop4

10、啟動(dòng)HDFS和YARN的web管理界面
HDFS : http://192.168.123.102:50070 YARN : http://hadoop05:8088
疑惑: fs.defaultFS = hdfs://hadoop02:9000
解答:客戶單訪問HDFS集群所使用的URL地址
同時(shí),HDFS提供了一個(gè)web管理界面 端口:50070
HDFS界面

點(diǎn)擊Datanodes可以查看四個(gè)節(jié)點(diǎn)

YARN界面

點(diǎn)擊Nodes可以查看節(jié)點(diǎn)

Hadoop的簡單使用
創(chuàng)建文件夾
在HDFS上創(chuàng)建一個(gè)文件夾/test/input
[hadoop@hadoop1 ~]$ hadoop fs -mkdir -p /test/input
查看創(chuàng)建的文件夾
[hadoop@hadoop1 ~]$ hadoop fs -ls /
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2018-03-03 11:33 /test
[hadoop@hadoop1 ~]$ hadoop fs -ls /test
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2018-03-03 11:33 /test/input
[hadoop@hadoop1 ~]$

上傳文件
創(chuàng)建一個(gè)文件words.txt
[hadoop@hadoop1 ~]$ vi words.txt
hello zhangsan
hello lisi
hello wangwu
上傳到HDFS的/test/input文件夾中
[hadoop@hadoop1 ~]$ hadoop fs -put ~/words.txt /test/input
查看是否上傳成功
[hadoop@hadoop1 ~]$ hadoop fs -ls /test/input
Found 1 items
-rw-r--r-- 2 hadoop supergroup 39 2018-03-03 11:37 /test/input/words.txt
[hadoop@hadoop1 ~]$

下載文件
將剛剛上傳的文件下載到~/data文件夾中
[hadoop@hadoop1 ~]$ hadoop fs -get /test/input/words.txt ~/data
查看是否下載成功
[hadoop@hadoop1 ~]$ ls data
hadoopdata words.txt
[hadoop@hadoop1 ~]$

運(yùn)行一個(gè)mapreduce的例子程序: wordcount
[hadoop@hadoop1 ~]$ hadoop jar ~/apps/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /test/input /test/output

在YARN Web界面查看

查看結(jié)果
[hadoop@hadoop1 ~]$ hadoop fs -ls /test/output
Found 2 items
-rw-r--r-- 2 hadoop supergroup 0 2018-03-03 11:42 /test/output/_SUCCESS
-rw-r--r-- 2 hadoop supergroup 35 2018-03-03 11:42 /test/output/part-r-00000
[hadoop@hadoop1 ~]$ hadoop fs -cat /test/output/part-r-00000
hello 3
lisi 1
wangwu 1
zhangsan 1
[hadoop@hadoop1 ~]$

|