天天看點

史上最詳細從零搭建分布式Hadoop叢集環境Hadoop叢集搭建

史上最詳細從零搭建分布式Hadoop叢集環境

  • Hadoop叢集搭建
    • 一,簡單介紹
    • 二,虛拟機環境準備
    • 三,安裝包
    • 四,安裝與配置
    • 五,啟動

Hadoop叢集搭建

一,簡單介紹

HADOOP叢集具體來說包含三個子產品:HDFS叢集,YARN叢集(兩者邏輯上分離,但實體上常在一起)和Mapreduce

HDFS叢集:

負責海量資料的存儲,叢集中的角色主要有 NameNode / DataNode

YARN叢集:

負責海量資料運算時的資源排程,叢集中的角色主要有 ResourceManager /NodeManager

Mapreduce:

它其實是一個分布式運算程式的程式設計架構,Mapreduce核心功能是将使用者編寫的業務邏輯代碼和自帶預設元件整合成一個完整的分布式運算程式,并發運作在一個hadoop叢集上;

二,虛拟機環境準備

虛拟機和linux環境安裝可參考部落格:https://blog.csdn.net/weixin_45997612/article/details/115321231

1 準備4台CentOS 7系統的虛拟機,每台記憶體至少為2G(正式環境中根據實際情況确定記憶體大小)

1.1 先将虛拟機網絡編輯器的網絡模式選為NAT

1.2 關閉防火牆(CentOS7采用新的firewalld,CentOS6及以前版本采用iptables,不過firewalld底層仍然調用的是iptable)

#檢視防火牆狀态
	systemctl status firewalld
	#關閉防火牆
	systemctl stop firewalld.service 
	#關閉防火牆開機啟動
	systemctl disable firewalld.service 
           

1.3 修改主機名和ip映射(4台機器都要改)

#修改主機名
	vi /etc/hostname  
    将預設的主機名localhost.localdomain 分别改為hadoop1,hadoop2,hadoop3,hadoop4
	#修改ip與主機名映射
	vi /etc/hosts
	添加映射:把*替換為自己虛拟機的ip即可
	192.168.**.***   hadoop1
	192.168.**.***   hadoop2
	192.168.**.***   hadoop3
	192.168.**.***   hadoop4
           

1.4 重新開機虛拟機

reboot
           

2 配置免密登入

#生成ssh免登陸密鑰
	ssh-keygen
	輸入指令後回車,然後會有等待輸入密碼之類的,直接回車,一共4次回車
	#在本機操作将免密密鑰複制到四台機器,包括本機
	ssh-copy-id hadoop1
	ssh-copy-id hadoop2
	ssh-copy-id hadoop3
	ssh-copy-id hadoop4
	#驗證是否登入成功
	ssh hadoop2
	顯示Last login: Thu Aug 13 10:28:07 2020 from 192.168.**.* 表示登入成功
	#登出
	exit 
           

三,安裝包

所需安裝包:(jdk-8u161-linux-x64.tar.gz與hadoop-2.9.2.tar.gz,也可自己在官網下載下傳)

連結:https://pan.baidu.com/s/1gWx6yQoWrKA3pfFeAY_pSQ

提取碼:0r0p

四,安裝與配置

1,建立檔案夾,用來存放安裝包(4台機器都需建立)

#建立目錄/home/hadoop
	mkdir /home/hadoop
    # 然後分别建立 app hadoop java檔案夾
    mkdir /home/hadoop/app  mkdir /home/hadoop/hadoop  mkdir /home/hadoop/java
    #檔案夾含義
    app:存放上傳的軟體
    java:存放jdk
    hadoop:hadoop安裝目錄
    目錄結構如下:
           
史上最詳細從零搭建分布式Hadoop叢集環境Hadoop叢集搭建

2, 安裝JDK(4台機器都需安裝)

2.1 将jdk-8u161-linux-x64.tar.gz上傳到 /home/hadoop/app
	2.2 解壓jdk
		#進入app目錄
		cd /home/hadoop/app
		#解壓
		tar -zxvf jdk-8u161-linux-x64.tar.gz -C /home/hadoop/java
	2.3 将java添加到環境變量中
		vim /etc/profile
		#在檔案最後添加
		export JAVA_HOME=/home/hadoop/java/jdk1.8.0_161
		export PATH=$PATH:$JAVA_HOME/bin
		#重新整理配置
		source /etc/profile
           

3, hadoop1機器上安裝hadoop,并配置

3.1 解壓
	#進入app目錄
	cd /home/hadoop/app
	#将hadoop-2.9.2.tar.gz解壓到 hadoop檔案夾
	tar -zxvf hadoop-2.9.2.tar.gz -C /home/hadoop/hadoop
	
	3.2 配置slaves檔案
	slaves就是指定DataNode啟動在哪台機器上
	它會陸續啟動其他三個機器上的datanode,出現等待時,直接輸入登入密碼即可
	vi /home/hadoop/hadoop/hadoop-2.9.2/etc/hadoop下的slaves檔案中localhost 改為 
	hadoop2
	hadoop3
	hadoop4
	
	3.3 配置hadoop(在/home/hadoop/hadoop/hadoop-2.9.2/etc/hadoop目錄下)
	
	第一個:hadoop-env.sh
		vim hadoop-env.sh
		#第27行
		export JAVA_HOME=/home/hadoop/java/jdk1.8.0_161
		
	第二個:core-site.xml
		<configuration>
			<!-- 指定HADOOP所使用的檔案系統schema(URI),HDFS的老大(NameNode)的位址 -->
			<property>
				<name>fs.defaultFS</name>
				<value>hdfs://hadoop1:9000</value>
			</property>
			<!-- 指定hadoop運作時産生檔案的存儲目錄 -->
			<property>
				<name>hadoop.tmp.dir</name>
				<value>/home/hadoop/hadoop/hadoop-2.9.2/tmp</value>
			</property>
			<!-- 設定Hadoop的代理使用者 -->
			<property>
    			<name>hadoop.proxyuser.root.hosts</name>
    			<value>*</value>
			</property>
			<property>
    			<name>hadoop.proxyuser.root.groups</name>
    			<value>*</value>
			</property>
		</configuration>
		
	第三個:hdfs-site.xml  
	<configuration>	
			<!-- 指定HDFS副本的數量,預設為3個 -->
			<property>
				<name>dfs.replication</name>
				<value>3</value>
			</property>
			
			<!-- 指定第一個namenode位址和通路端口 -->
			<property>
				<name>dfs.namenode.http-address</name>
				<value>hadoop1:50070</value>
			</property>
			
			<!-- 指定第二個namenode位址和通路端口 -->
			<property>
				<name>dfs.secondary.http.address</name>
				<value>hadoop1:50090</value>
			</property>
			
	</configuration>
   
	第四個: 将mapred-site.xml.template重命名為mapred-site.xml 
			  mv mapred-site.xml.template mapred-site.xml
			  編輯mapred-site.xml
		<configuration>
			<!-- 指定mr運作在yarn上 -->
			<property>
				<name>mapreduce.framework.name</name>
				<value>yarn</value>
			</property>
		</configuration>
		
	第五個:yarn-site.xml
		<configuration>
			<!-- 指定YARN的老大(ResourceManager)的位址 -->
			<property>
				<name>yarn.resourcemanager.hostname</name>
				<value>hadoop1</value>
			</property>
			<!-- reducer擷取資料的方式 -->
			<property>
				<name>yarn.nodemanager.aux-services</name>
				<value>mapreduce_shuffle</value>
			</property>
		</configuration>
     	
	3.4 将hadoop添加到環境變量
	    vi /etc/proflie
	    #在檔案末尾加入以下内容
		export JAVA_HOME=/home/hadoop/java/jdk1.8.0_161
		export HADOOP_HOME=/home/hadoop/hadoop/hadoop-2.9.2
		export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
		#重新整理配置
	    source /etc/profile
	4,遠端複制(将配置好的hadoop複制到其他3台機器)
		scp -r /home/hadoop/hadoop [email protected]:/home/hadoop
	    scp -r /home/hadoop/hadoop [email protected]:/home/hadoop
	    scp -r /home/hadoop/hadoop [email protected]:/home/hadoop
	    目錄結構:
           
史上最詳細從零搭建分布式Hadoop叢集環境Hadoop叢集搭建

五,啟動

在hadoop1上操作:

5.1 格式化namenode
		hdfs namenode -format (或者hadoop namenode -format)
	5.2 啟動hadoop
		#先啟動HDFS
		sbin/start-dfs.sh
		#再啟動YARN
		sbin/start-yarn.sh
	5.3 驗證是否啟動成功
	    #使用jps指令驗證,有以下程序表示啟動成功
	    27408 NameNode
		28218 Jps
		27643 SecondaryNameNode
		28066 NodeManager
		27803 ResourceManager
		27512 DataNode
	5.4 檢視圖形化界面
		#在win10上配置ip映射(c:/windows/system32/drivers/etc)
		192.168.**.***   hadoop1
	    192.168.**.***   hadoop2
		192.168.**.***   hadoop3
		192.168.**.***   hadoop4
		#然後浏覽器通路
		http://hadoop1:50070 (HDFS管理界面)
		http://hadoop1:8088 (MR管理界面)
           
史上最詳細從零搭建分布式Hadoop叢集環境Hadoop叢集搭建
史上最詳細從零搭建分布式Hadoop叢集環境Hadoop叢集搭建

繼續閱讀