1. 程式人生 > >Hadoop的三種安裝模式

Hadoop的三種安裝模式

Hadoop的三種安裝模式

一、本地模式

本地模式的特點:沒有HDFS, 只能測試MapRduce (不是執行在Yarn中, 做一個獨立的Java程式來執行), 只需配置etc/hadoop/hadoop-env.sh中的JAVA_HOME

二、偽分佈模式

偽分佈模式的特點:在單機上,模擬一個分散式的環境,具備Hadoop的所有功能,只需要一臺機器(主機名為bigdata111)
HDFS:NameNode + DataNode + SecondaryNameNode
Yarn:ResourceManager + NodeManager

1. hadoop-env.sh ,配置hadoop的環境;

將第25行的JAVA_HOME設定為/root/training/jdk1.8.0_144;

2. hdfs-site.xml,設定資料塊的冗餘度;

原則上冗餘度跟資料節點個數保持一致,最大不要超過3;

<property>	
	<name>dfs.replication</name>
	<value>1</value>
</property>
3. core-site.xml,配置主節點的地址埠和資料塊及元資訊;
<property>	
	<name>fs.defaultFS</name>
	<!--hdfs://主機名:埠-->
	<value>hdfs://bigdata111:9000</value>
</property>	
<property>	
	<name>hadoop.tmp.dir</name>
	<!--tmp檔案需要新建-->
	<value>/root/training/hadoop-2.7.3/tmp</value>
</property>
4. mapred-site.xml(預設沒有該檔案),配置MR程式執行的容器;
//使用cp mapred-site.xml.template mapred-site.xml生成xml檔案
<property>	
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
5. yarn-site.xml(預設沒有該檔案),配置Yarn主節點的位置和從節點的工作方式;
<property>	
   <name>yarn.resourcemanager.hostname</name>
   <value>bigdata111</value>
</property>			
<property>	
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
6. 對HDFS的NameNode進行格式化;

進入目錄:/root/training/hadoop-2.7.3/tmp
執行命令:hdfs namenode -format

格式化成功的話,日誌中出現Storage directory /root/training/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.

7. 配置免密碼登入。

在root目錄下,執行
生成祕鑰對命令ssh-keygen -t rsa
將公鑰拷給別人ssh-copy-id -i .ssh/id_rsa.pub [email protected][email protected]主機名)
輸入名ssh bigdata111驗證是否可登入bigdata111,退出命令exit

8. 啟動;

HDFS:start-dfs.sh
Yarn: start-yarn.sh
統一:start-all.sh
輸入命令jps,檢視NameNode,SecondaryNameNode,DataNode,ResourceManager,NodeManager五個執行緒是否都起來

9. 執行wordcount程式

本地檔案data.xml上傳的hdfs
hdfs dfs -put data.txt /input/
進入目錄root/training/hadoop-2.7.3/share/hadoop/mapreduce
執行hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input/data.txt /output/day1230/,執行該命令時day1230檔案不存在
檢視hdfs dfs -cat /output/day1230/part-r-00000

三、全分佈模式

全分佈模式用於生產,至少需要三臺機器,其中一臺為為主節點,配置NameNode,SecondaryNameNode,ResourceManager,另外兩臺配置DataNode,NodeManager

1. 準備工作:

(1) 虛擬機器安裝三臺Linux,配置三臺均配置JDK,關閉防火牆命令

		關閉systemctl stop firewalld.service    
		開機不啟動systemctl disable firewalled.service

(2) 設定三臺機IP和對應的主機名

		vi /etc/hosts
		IP2 bigdata112 (主節點)
		IP3 bigdata113
		IP4 bigdata114

(3) 設定三臺機的免密登入

		生成祕鑰對  ssh-keygen -t rsa
		拷貝祕鑰
		ssh-copy-id -i .ssh/id_rsa.pub [email protected]
		ssh-copy-id -i .ssh/id_rsa.pub [email protected]
		ssh-copy-id -i .ssh/id_rsa.pub [email protected]

(4)保證叢集的時間同步

		**三臺機器同時輸入date -s 2018-12-30**

2. 在主節點上(bigdata112)安裝配置hadoop

(1) hadoop-env.sh ,配置hadoop的環境,將第25行的JAVA_HOME設定為/root/training/jdk1.8.0_144;
(2) hdfs-site.xml,設定資料塊的冗餘度,原則冗餘度跟資料節點個數保持一致,最大不要超過3;
<property>	
	<name>dfs.replication</name>
	<value>2</value>
</property>
(3) core-site.xml,配置主節點的地址埠和資料塊及元資訊;
<property>	
	<name>fs.defaultFS</name>
	<!--hdfs://主機名:埠-->
	<value>hdfs://bigdata112:9000</value>
</property>	
<property>	
	<name>hadoop.tmp.dir</name>
	<!--tmp檔案需要新建-->
	<value>/root/training/hadoop-2.7.3/tmp</value>
</property>
(4) mapred-site.xml(預設沒有該檔案),配置MR程式執行的容器;
//使用cp mapred-site.xml.template mapred-site.xml生成xml檔案
<property>	
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
(5) yarn-site.xml(預設沒有該檔案),配置Yarn主節點的位置和從節點的工作方式;
<property>	
   <name>yarn.resourcemanager.hostname</name>
   <value>bigdata111</value>
</property>			
<property>	
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
(6) slaves 配置從節點地址
		bigdata113
		bigdata114
(7) 對HDFS的NameNode進行格式化;
		**進入目錄:/root/training/hadoop-2.7.3/tmp
		執行命令:hdfs namenode -format**

格式化成功的話,日誌中出現Storage directory /root/training/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.

3. bigdata112上安裝好的目錄複製到從節點上

		scp -r hadoop-2.7.3/ [email protected]:/root/training
		scp -r hadoop-2.7.3/ [email protected]:/root/training

4. 主節點上啟動叢集;

(1)start-all.sh
		輸入命令jps,

檢視NameNode,SecondaryNameNode,DataNode,ResourceManager,NodeManager五個執行緒是否都起來

(2) 執行wordcount程式

本地檔案data.xml上傳的hdfs

		**hdfs dfs -put data.txt /input/**
		進入目錄**root/training/hadoop-2.7.3/share/hadoop/mapreduce**
		執行hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input/data.txt /output/day1230/,執行該命令時**day1230檔案不存在**

檢視hdfs dfs -cat /output/day1230/part-r-00000