天天看點

搭建Hadoop分布式叢集搭建Hadoop分布式叢集

搭建Hadoop分布式叢集

【系統配置說明】

1)系統環境:CentOS-7-x86-Minimal

2)叢集部署:一主三從(master/slave1/slave2/slave3)

3)Java環境:jdk-7u79-linux-x86

4)Hadoop :hadoop-2.6.2.tar.gz

【配置Linux系統環境】

(1)網絡環境配置

    1) 首先配置四台虛拟機的網絡環境,設定為靜态IP,IP位址分别如下:

    – master:192.168.216.101

    – slave1 :192.168.216.102

    – slave2 :192.168.216.103

    – slave3 :192.168.216.104

    2) 配置網絡位址的指令如下:

   

sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33

    3) 需要改動的地方如下(以master為例,其餘節點配置過程類似):

BOOTPROTO=static
		DEVICE=ens33
		ONBOOT=yes
		IPADDR=192.168.216.101
		NETMASK=255.255.255.0
		GATEWAY=192.168.216.2
		DNS1=114.114.114.114
		DNS2=8.8.8.8
           

    4) 重新開機網絡服務

   

sudo systemctl restart network

   

ifconfig

(2)修改主機名稱

   

sudo vi /etc/hostname

    将主機名稱修改為master(從節點保持一緻), reboot之後可見主機名稱改變

(3)關閉防火牆并禁止開機自啟動

   

sudo systemcl stop firewalld

   

sudo systemcl disablefirewalld

(4)配置hosts清單

    下邊以主機為例,從節點相同

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
		::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
		
		192.168.216.101 master
		192.168.216.102 slave1
		192.168.216.103 slave2
		192.168.216.104 slave3                     
           

    驗證是否修改成功

   

ping slave1

(5)安裝JDK

    1)下載下傳 jdk-7u79-linux-x64.tar.gz

    2)通過xtfp将jdk檔案傳送到master的/usr/src目錄下

    3)安裝JDK,步驟如下:

    

su

    

cd /usr

    

mkdir java

    

mv ./src/jdk-7u79-linux-x64.tar.gz ./java

    

tar -zxvf jdk-7u79-linux-x64.tar.gz

    

cd jdk1.7.0_79

    

pwd #複制此處顯示路徑

    

vi /etc/profile

     添加環境變量如下

    

export JAVA_HOME=/usr/java/jdk1.7.0_79

    

export PATH=$PATH:$JAVA_HOME/bin

     儲存退出

    

source /etc/profile

(6)免密鑰登入配置(Master節點)

     在此步驟之前切換到普通使用者身份下

    

su master

    

ssh-keygen -t rsa #在終端生成密鑰

    

cd /home/master/.ssh #生成的密鑰在此目錄下,id_rsa為私鑰,id_rsa.pub為公鑰

    

cat id_rsa.pub >> authorized_keys #複制公鑰到authorized_keys檔案

    

chmod 600 authorized_keys #修改密鑰檔案的權限

    

scp authorized_keys [email protected]:/home/master/.ssh/ #将公鑰分發給其他三個從節點

    

ssh [email protected] #驗證免密鑰登入

【Hadoop的配置部署】

【注】:本部分的安裝部署是在普通使用者的身份下進行的,請先切換;

    Hadoop叢集搭建時,每個節點上的配置都相同,是以隻要在master節點上操作配置,配置完成之後複制到slave節點上

    就好了。

(1)解壓Hadoop安裝檔案

   

cd /home/master/local/src

   

tar -zxvf hadoop-2.6.2.tar.gz

   

cd hadoop-2.6.2

(2)配置環境變量 hadoop-env.sh

   

vi ./etc/hadoop/hadoop-env.sh #打開環境配置檔案

    找到以下代碼

   

export JAVA_HOME=${JAVA_HOME}

    将其替換為以下代碼

   

export JAVA_HOME=/usr/jave/jdk1.7.0_79

    儲存退出,Hadoop的環境變量hadoop-env.sh配置成功,此時Hadoop具備了運作時的環境。

(3)配置環境變量 yarn-env.sh

   

vi ./etc/hadoop/yarn-env.sh

    找到以下代碼

   

# export JAVA_HOME=/home/y/libexec/jdk1.6.0/

    去掉注釋,修改為以下代碼

   

export JAVA_HOME=/home/java/jdk1.7.0_79

    儲存退出,Hadoop的YARN環境變量配置成功。此時,Hadoopd YARN子產品具備了運作時的環境。

(4)配置核心元件 core-site.xml

    這個xml檔案是Hadoop叢集的核心配置,是關于叢集中分布式檔案系統的入口位址和分布式檔案系統中資料落地到伺服器本地磁盤位置的配置。

   

vi core-site.xml

    在

<configuration></configuration>

中插入以下代碼

<!--HDFS檔案系統的入口位址資訊-->
        <property>
                <name>fs.default.name</name>
                <value>hdfs://master:9000</value>
        </property>

        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home/master/var/hadoop/tmp</value>
        </property>
           

    至此,hadoop叢集的核心配置完成(slave節點的要設定對應的路徑)。

(5)配置檔案系統 hdfs-site.xml

   

vi hdfs-site.xml

    在

<configuration></configuration>

中插入以下代碼

<property>
				<name>dfs.name.dir</name>
				<value>/home/master/var/hadoop/dfs/name</value>
			</property>
		
			<property>
				<name>dfs.data.dir</name>
				<value>/home/master/var/hadoop/dfs/data</value>
			</property>
		
			<property>
				<!--配置資料塊的副因子(即副本數)為2-->
				<name>dfs.replication</name>
				<value>2</value>
			</property>

			<property>
				<name>dfs.permissions</name>
				<value>false</value>
			</property>

           

    至此,Hadoop叢集的HDFS分布式檔案系統資料塊副本數配置完成。

(6)配置YARN資源系統 yarn-site.xml

   

vi yarn-site.xml

    在

<configuration></configuration>

中插入以下代碼

<property>
				<name>yarn.resourcemanager.hostname</name>
				<value>master</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.aux-services</name>
				<value>mapreduce_shuffle</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.address</name>
				<value>${yarn.resourcemanager.hostname}:8032</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.scheduler.address</name>
				<value>${yarn.resourcemanager.hostname}:8030</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.resource-tracker.address</name>
				<value>${yarn.resourcemanager.hostname}:8031</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.admin.address</name>
				<value>${yarn.resourcemanager.hostname}:8033</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.webapp.address</name>
				<value>${yarn.resourcemanager.hostname}:8088</value>
			</property>
		
			<property>
				<name>yarn.resourcemanager.webapp.https.address</name>
				<value>${yarn.resourcemanager.hostname}:8090</value>
			</property>
			
			<property>
				<name>yarn.scheduler.maximum-allocation-mb</name>
				<value>2048</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.vmem-pmem-ratio</name>
				<value>2.1</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.resource.memory-mb</name>
				<value>2048</value>
			</property>
		
			<property>
				<name>yarn.nodemanager.vmem-check-enabled</name>
				<value>false</value>
			</property>
           

(7)配置計算架構 mapred-site.xml

   

cp mapred-site.xml.template mapred-site.xml

   

vi mapred-site.xml

    在

<configuration></configuration>

中插入以下代碼

<property>
			<name>mapred.job.tracker</name>
			<value>master:49001</value>
		</property>
			
		<!--MapReduce計算架構的資源交給YARN來管理-->
		<property>
			<name>mapreduce.framework.name</name>
			<value>yarn</value>
		</property>
			
		<property>
			<name>mapred.local.dir</name>
			<value>/home/master/var/hadoop/var</value>
		</property>
           

    1)在master節點配置slaves

     

vi ./slaves

      用下面的内容替換salves檔案中的内容

      slave1

      slave2

      slave3

    2)複制到從節點

(8)配置 Hadoop 啟動的系統環境變量

    主從節點均執行以下操作

   

vi ~/.bash_profile

    添加以下内容

   

export HADOOP_HOME=/home/master/local/hadoop-2.6.2

   

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

   

source ~/.bash_profile

(9)建立資料目錄

    主從節點均執行以下操作

   

cd ~

   

mkdir var

   

cd var

   

mkdir hadoop

   

cd hadoop

   

mkdir tmp dfs var

   

cd dfs

   

mkdir name data

(10)啟動Hadoop叢集

    Hadoop叢集包含兩個基本子產品:分布式檔案系統HDFS和分布式并行計算架構MapReduce。啟動叢集時,首先要做的就是在master節點上格式化分布式檔案系統HDFS。

    1)格式化檔案系統

     

hdfs namenode -format

    2)啟動 Hadoop

     

start-all.sh

    3)檢視程序是否啟動

     

jps

      master 節點顯示Jps,ResourceManager,SecondaryNameNode,NameNode表示主節點程序啟動成功。

      slave節點顯示Jps,DataNode,NodeManager表示從節點啟動成功。

    4)Web UI檢視叢集啟動是否成功

      浏覽器位址欄輸入 http://192.168.216.101:50070

搭建Hadoop分布式叢集搭建Hadoop分布式叢集

      浏覽器位址欄輸入 http://192.168.216.101:8088

搭建Hadoop分布式叢集搭建Hadoop分布式叢集

    5)運作PI執行個體檢查叢集安裝是否成功

     

cd ~/local/hadoop-2.6.2/share/hadoop/mapreduce/

     

hadoop jar hadoop-mapreduce-examples-2.6.2.jar pi 10 10

      結果如下所示即為安裝成功

     

Job Finished in 79.37 seconds

     

Estimated value of Pi is 3.20000000000000000000

至此,Hadoop叢集安裝啟動成功。

繼續閱讀