1. 程式人生 > >Hadoop--HDFS叢集架構

Hadoop--HDFS叢集架構

Hadoop叢集搭建

伺服器配置以及JDK的安裝

硬體準備 (1)硬體準備

(2)網路環境準備:

NAT方式:不需要做任何網路設定,只要宿主主機上網即可上網 IP地址,子網掩碼,閘道器,DNS(外網)

LINUX系統環境準備: 修改主機名: vim /etc/sysconfig/network 修改HOSTNAME=自定義 reboot 配置主機IP地址: 三種方式: (1)修改配置檔案

vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改:
BOOTPROTO=改為"static"
新增:
IPADDR=192.168.19.136
NETMASK=255.255.255.0
GATEWAY=192.168.19.2
DNS1=192.168.19.2

(2)圖形介面:編輯裡設定(修改IP地址,子網掩碼,閘道器,DNS)

(3)setup方式:

在命令終端輸入 setup, 選擇“Network Configuration” ,然後按回車鍵,選擇“Device Configuration”,按回車鍵,選中“eth0”,按回車鍵。 修改完重啟網路:serevice network restart 檢查:ifconfig

關閉防火牆:

檢查防火牆狀態:service iptables status 關閉防火牆:service iptables stop 開機不啟動:chkconfig iptables off

新增內網域名:

修改配置檔案:vim /etc/hosts 格式:IP 主機名

同步網路時間:

修改時區:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 同步網路時間:ntpdate cn.pool.ntp.org 檢視當前時間:date 或者date —R

在root使用者下:yum -y install lrzsz

轉換為普通使用者安裝jdk:

(1)準備軟體:jdk-8u73-linux-x64.tar.gz (2)把軟體傳到 Linux 伺服器上去(我的上傳目錄是/home/theone/Desktop/software) (3)把軟體解包解壓縮到當前目錄下,使用命令:tar -zxvf jdk-8u73-linux-x64.tar.gz (4)配置環境變數,使用命令:vim /home/theone/.bash_profile在最後加入兩行資訊;

	export JAVA_HOME=/home/theone/Desktop/software/jdk1.8.0_73
	export PATH=$PATH:$JAVA_HOME/bin

(5)讓配置檔案立即生效,使用命令:

	source /home/theone/.bash_profile

(6)檢測JDK是否安裝成功,

使用命令:java -version 如果檢測出java版本資訊則配置成功

檢視cpu使用狀況: free, free -g 關閉虛擬機器開啟時有界顯示: vim /etc/inittab 最後一行init5改為3 執行init 3 reboot一下

ssh免密登陸

進入普通使用者

1 su 普通使用者名稱 2 cd 3 ls -a 4 cd .ssh/ 5 ssh-keygen 建立金鑰對 預設rsa形式 (ssh-keygen -t 型別) 6 cp id_rsa.pub authorized_keys 將金鑰對複製到授權列表 7 chmod 600 authorized_keys 更改為只准自己可讀可寫的模式 8 scp authorized_keys [email protected]:/home/theone/.ssh/方法一:使用scp遠端傳輸到搭建的伺服器上 9 scp authorized_keys hadoop02:$PWD 方法二:相同主機名引用環境變數到伺服器相同目錄下 10 ssh 主機名 登入到不同的伺服器上 11 進入.ssh下 12 ssh-keygen 13 cat id_rsa.pub >> authorized_keys 追加到authorized_keys 14 chmod 600 authorized_keys 15 scp 傳輸到其他兩部虛擬機器 16 在另一臺虛擬機器重複10–15

Hadoop2.6.5-分散式叢集搭建

1.叢集簡介 Hadoop叢集:

HDFS叢集: NameNode(老大) DataNode(小弟) 負責海量資料的儲存

YARN叢集

YARN叢集:ResourceManageer(老大) NodeManager(小弟) 負責海量資料運算時的資源排程 MapReduce不是一個叢集,它是一個應用開發包

叢集規劃:

	hostname    HDFS        					YARN
	master      NameNode+DataNode(主節點)		NodeManager+ResourceManager
	hadoop01	DateNode+secondarynamenode 		NodeManager
	hadoop02	DateNode 						NodeManager

2.安裝包準備(普通使用者下)

(1)準備安裝包:hadoop-2.6.5.tar.gz (2)上傳到Linux伺服器上去(我的上傳目錄是/home/theone/Desktop/software) (3)解壓:tar -zxvf hadoop-2.6.5.tar.gz

3.主要配置檔案講解

cd Desktop/software/hadoop-2.6.5/etc/hadoop/

1.配置環境變數hadoop_env.sh

vim hadoop-env.sh

jdk路徑:/home/theone/Desktop/software/jdk1.8.0_73/

2.配置核心元件core-site.xml

vim core-site.xml

	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://master:9000</value>
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/theone/hadoopData/temp</value>
	</property>

3.配置檔案系統hdfs-site.xml

Namenode存放元資料和日誌位置 DataNode儲存資料的目錄 資料塊副本的數量 最好時虛擬機器數量減一 SecondaryNameNode安裝節點和預設的web管理埠

vim hdfs-site.xml

	<property>
		<name>dfs.namenode.name.dir</name>
		<value>/home/theone/hadoopData/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>/home/theone/hadoopData/data</value>
	</property>
	<property>
		<name>dfs.replication</name>
		<value>2</value>
	</property>
	<property>
		<name>dfs.secondary.http.address</name>
		<value>hadoop01:50090</value>
	</property>

4.配置計算框架mapred-site.xml

  • 指定使用yarn執行Map Reduce程式,預設為local(單機)

      vim mapred-site.xml
      
      	<property>
      		<name>mapreduce.framework.name</name>
      		<value>yarn</value>
      	</property>
    

5.配置yarn系統 yarn-site.xml

指定yarn叢集的老大所在的節點 NodeManager上執行的附屬服務,也可以理解為reduce獲取資料的方式

	vim  yarn-site.xml
	
		<property>
			<name>yarn.resourcemanager.hostname</name>
			<value>master</value>
		</property>
		<property>
			<name>yarn.nodemanager.aux-services</name>
			<value>mapreduce_shuffle</value>
		</property>

6.配置slaves檔案

指定叢集中所有DateNode節點

	vim slaves
		master
		hadoop01
		hadoop02

4.分發到從節點

scp -r /home/theone/Desktop/software/hadoop-2.6.5 hadoop01:$PWD
scp -r /home/theone/Desktop/software/hadoop-2.6.5 hadoop02:$PWD

5.配置Hadoop系統環境變數 1.需要在每個節點上都進行配置:

vim  /home/theone/.bash_profile

2.新增Hadoop的安裝目錄

export HADOOP_HOME=/home/theone/Desktop/software/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

3.立即成效

source  /home/theone/.bash_profile //立即執行
hadoop version	//檢查是否安裝成功

6.啟動Hadoop叢集 1.初始化檔案系統

該操作需要在主節點master上執行: hdfs namenode -format 出現: has been successfully formatted 表示成功 如果出現: Exception ,出問題

4.驗證: 1,執行jps命令:

2,web UI 介面: 檢視HDFS叢集資訊:

web管理介面地址是 http://192.168.19.130:50070 或者 http://master:50070 (windows/system32/drivers/etc/hosts中寫入ip和主機名) namenode節點:50070

檢視MapReduce執行狀態資訊:

3.命令驗證 檢視叢集狀態:

hdfs dfsadmin -report

檢查YARN叢集,使用提交 Map Reduce例子程式的方法進行測試

cd Desktop/software/hadoop-2.6.5/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.6.5.jar pi 10 10 

檢查HDFS叢集,使用命令:

hadoop fs -ls /
hadoop fs -ls hdfs://master:9000/

瀏覽器進入master:50070 Untilities/Browse the file system

5.補充說明 單步啟動程序:

windows下配置主機對映 :

windows/system32/drivers/etc/hosts中寫入ip和主機名

HDFS初始化目錄結構:

在搭建Hadoop叢集時使用如下命令初始化檔案系統: hdfs namenode -format(只是初始化NameNode)

NamdNode在format初始化時形成兩個標識:

clusterID:叢集ID blockpoolID:資料塊池ID 新的DateNode加入時,會獲取這兩個標識作為自己工作目錄中的標識

NameNode工作目錄的VERSION內容: cat VERSION

對應的DateNode工作目錄中的VERSION內容: cd hadoopData/data/current/ ls cat VERSION 一旦NameNode重新format後, NameNode 的身份標識已變,而 DataNode 如果依然持有原來的 clusterID,就不會被 NameNode 識別。

6,多次格式化的結果: DataNode啟動不成功。解決分案:

方法一:刪除所有節點的NameNode和DataNode工作目錄,重新格式化 方法二:將DataNode工作目錄中的clusterID修改成NameNode工作目錄中的clusterID,之後啟動DataNode