1. 程式人生 > >HDFS叢集搭建

HDFS叢集搭建

一、叢集環境準備

1、克隆四臺linux虛擬機器 2、修改每一臺虛擬機器主機名

[[email protected] ~]# vi /etc/sysconfig/network

3、修改每一臺虛擬機器ip地址

[[email protected] ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 

4、修改每一臺虛擬機器的網絡卡實體地址,把eth0的那一行刪掉,把下一行eth1改為eth0

[[email protected] ~]# vi /etc/udev/rules.d/70-persistent-net.rules 

5、重啟伺服器

[[email protected]
~]# reboot

6、在window上配置這幾臺linux伺服器域名對映,位置C:\windows\system32\drivers\etc\host 7、對每一臺linux伺服器關閉防火牆 1)臨時關閉

[[email protected] ~]# service iptables stop

2)開機自動關閉

[[email protected] ~]# chkconfig iptalbes off

二、安裝jdk、hadoop

1、在第一臺伺服器上安裝jdk 1)上傳jdk安裝包,這裡我用的是SecureCRT連線工具外部連線linux,用ALT+P拖拽上傳jdk的壓縮包 2)解壓

   [[email protected] ~]# tar -zxvf jdk-8u102-linux-x64.tar.gz -C /usr/local/

2、在第一臺伺服器安裝hadoop 1)上傳、解壓安裝包

 [[email protected] ~]# tar -zxvf hadoop-2.7.3.tar.gz -C /usr/local/

2)修改配置檔案

  [[email protected] hadoop]# cd /usr/local/hadoop-2.7.3/etc/hadoop/
[[email protected] hadoop]# vi  hadoop-env.sh
  # The java implementation to use.
    export JAVA_HOME=/usr/local/jdk1.8.0_102
 

 [
[email protected]
hadoop]# vi core-site.xml # Namenode在哪裡 ,臨時檔案儲存在哪裡 <configuration> <property> <name>fs.defaultFS</name> #hadoop的namenode位置 <value>hdfs://hadoop3801:9000</value> </property> <property> <name>hadoop.tmp.dir</name> #臨時檔案儲存 <value>/usr/local/hadoop-2.7.3/tmp</value> </property> </configuration> [[email protected] hadoop]# vi hdfs-site.xml <configuration> #namenode儲存路徑 <property> <name>dfs.namenode.name.dir</name> <value>/usr/local/hadoop-2.7.3/data/name</value> </property> #datanode儲存路徑 <property> <name>dfs.datanode.data.dir</name> <value>/usr/local/hadoop-2.7.3/data/data</value> </property> #預設副本數量設定為3,該引數其實用於和客戶端軟體 <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.secondary.http.address</name> <value>hadoop3801:50090</value> </property> </configuration> #這裡的mapred-site.xml.template是臨時檔案,將其轉為永久檔案 [[email protected] hadoop]# cp mapred-site.xml.tmp* mapred-site.xml [[email protected] hadoop]# vi mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> [[email protected] hadoop]#vi yarn-site.xml #計算處理框架位置 <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop3801</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> [[email protected] hadoop]#vi slaves #小弟的位置 Hadoop02 Hadoop03

3、配置環境變數

[[email protected] hadoop]# vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_102
export HADOOP_HOME=/usr/local/hadoop-2.7.3
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

[[email protected] hadoop]# source /etc/profile

三、設定免密登入,並將jdk、hdoop傳送至其他伺服器

1、傳送jdk

[[email protected] ~]# scp -r /usr/local/jdk1.8.0_102 bigdata02:/usr/local

2、傳送hadoop

[[email protected] ~]# scp -r /usr/local/hadoop-2.7.3 bigdata02:/usr/local

3、傳送配置檔案

[[email protected] ~]# scp /etc/profile bigdata02:/etc/

四、啟動

1、使用格式化命令建立儲存路徑,初始化namenode的元資料儲存目錄

[[email protected] ~]# hdoop namenode -format

2、用hadoop安裝目錄中sbin目錄中的start-dfs.sh自動啟動叢集

[[email protected] ~]# start-dfs.sh
#停止
[[email protected] ~]# stop-dfs.sh

3、啟動yarn叢集

[[email protected] ~]# start-yarn.sh
#停止
[[email protected] ~]# stop-yarn.sh

4、使用jps檢視程序

[[email protected] ~]# jps
3242 NameNode
3499 SecondaryNameNode
3339 DataNode
3677 ResourceManager
3775 NodeManager
3807 Jps

五、常見故障及解決

1、namenode啟動正常,但datanode啟動失敗 原因:datanode儲存目錄的VERSION檔案中儲存的叢集id:clusterld儲存的四上一次namenode所生成的叢集id 解決:刪除datanode儲存目錄,再重啟,會生成新的目錄,儲存新的叢集id

2、datanode程序啟動成功,但不被namenode所接納 原因:該datanode的儲存目錄跟另一臺datanode的儲存目錄重複,導致兩個datanode的uuid相同,name只認可其中一臺 解決:刪除問題datanode三的儲存目錄,生成新的uuid

檢視datanode的uuid:

   cd hdp-data/data/current/
   cat VERSION