centos7下hadoop完全分佈式環境搭建

     自己動手搭建了一下hadoop完全分佈式,現在做下總結,希望對他人能有所幫助,接觸時間不長,如有不足,歡迎指正指正。

 一 相關準備  

    hadoop版本: hadoop-2.7.3

    jdk版本:1.8.0_65

    Linux版本:centos7

    VMware Workstation : 搭建四臺虛擬機,一臺namenode,三臺datanode(其實兩臺就夠用)四臺虛擬機需要能相互ping通   

     本文四臺主機:s201 s202 s203 s204 其中s201作爲namonode,其他三臺爲datanode

二 搭建hadoop環境   

     1.安裝虛擬機鏡像    

             安裝虛擬機的過程在此省略。先只搭建一臺虛擬機,作爲namenode,安裝好之後克隆三份,克隆的三份將攜帶本所有配置,集羣中所有主機配置完全一致。

             安裝之後,修改本機主機名。本文中namedode主機名稱爲s201。

             vi /etc/hostname   將localhost.domain修改爲s201。

             保存退出後重啓,輸入hostname驗證主機名。

             修改 /etc/hosts  將本機ip與主機名映射。

     2. 創建新用戶。

             儘量不要用root用戶,提高安全性。本文中用戶爲centos

# useradd centos
# psswd centos

             之後設置新密碼。

             登陸centos:  su centos

             centos所在家目錄爲 /home/centos,進入該目錄並創建downloads文件夾。

$ cd ~ && mkdir downloads

            將下載的hadoop和jdk安裝包上傳到downloads文件夾。

    3. 環境搭建。

            安裝JDK,解壓jdk-8u65-linux-x64.tar.gz

[centos@s201 /downloads]$tar -zxvf jdk-8u65-linux-x64.tar.gz

            解壓完成後會出現jdk1.8.0_65文件夾。創建 /soft 文件夾,作爲軟件安裝目錄。使用sudo命令,以管理員身份運行,        需要輸入密碼。並將soft文件夾的所有權限指定給centos用戶。

[centos@s201 /downloads]$ sudo mkdir  /soft

[centos@s201 /downloads]$ sudo chown centos:centos /soft

           將解壓後的jdk文件夾移動到/soft下: 

[centos@s201 /soft]$ mv ~/downloads/jdk-1.8.0_65 /soft/

          到soft文件夾下確認移動完成後修改配置文件

[centos@s201 /soft]$ sudo vi /etc/profile

          在末尾處添加如下內容:

export JAVA_HOME=/soft/jdk1.8.0_65
exprot PATH=$PATH:$JAVA_HOME/bin

          保存退出後,輸入 sudo source /etc/profile,使配置文件生效。之後驗證jdk安裝情況,出現以下內容說明jdk配置成功。

[centos@s201 /home/centos]$java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

         解壓hadoop

[centos@s201 /home/centos/downloads]$ tar -zxvf hadoop-2.7.3.tar.gz

.......解壓過程.......  解壓完成後移動

[centos@s201 /home/centos/downloads]$ mv hadoop-2.7.3 /soft/

        配置hadoop環境變量

[centos@s201 /home/centos/downloads]$ vi /etc/profile

在末尾處添加 


export HADOOP_HOME=/soft/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

       保存退出後,輸入 sudo source /etc/profile,使配置文件生效。之後驗證hadoop安裝情況,出現以下內容說明配置成功。

[centos@s201 /home/centos/downloads]$hadoop version
Hadoop 2.7.3
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r baa91f7c6bc9cb92be5982de4719c1c8af91ccff
Compiled by root on 2016-08-18T01:41Z
Compiled with protoc 2.5.0
From source with checksum 2e4ce5f957ea4db193bce3734ff29ff4
This command was run using /soft/hadoop-2.7.3/share/hadoop/common/hadoop-common-2.7.3.jar

        修改hadoop配置文件,涉及到 hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml那文件位        置: /soft/hadoop/etc/hadoop

        修改hadoop-env.sh  找到export JAVA_HOME 將值改爲本地的java_home  即 /soft/jdk1.8.0_65

        修改core-site.xml 的configuration元素

<configuration>
   <!--hadoop訪問目錄節點nameNode-->
   <property>
	<name>fs.defaultFS</name>
	<value>hdfs://s201/</value>
   </property>
   <!--- 配置新的本地目錄 -->
   <property>
	<name>hadoop.tmp.dir</name>
	<value>/home/centos/hadoop</value>
   </property>
</configuration>

      修改hdfs-site.xml 的configuration元素

<configuration>
	<property>  <!--制定副本數量,本文中有三個副本因此是3-->
		<name>dfs.replication</name>
		<value>3</value>
	</property>
</configuration>

      修改mapred-site.xml 的configuration元素

<configuration>
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

     修改yarn-site.xml 的configuration元素

<configuration>

<!-- Site specific YARN configuration properties -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>s201</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
</configuration>

    創建符號連接   

[centos@s201 /soft/hadoop/etc/hadoop]$ ln -s /soft/hadoop-2.7.3 /soft/hadoop

    配置ssh無密登陸

			1)檢查是否安裝了ssh相關軟件包(openssh-server + openssh-clients + openssh)
				$yum list installed | grep ssh

			2)檢查是否啓動了sshd進程
				$>ps -Af | grep sshd
			
			3)在client側生成公私祕鑰對。
				$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
			
			4)生成~/.ssh文件夾,裏面有id_rsa(私鑰) + id_rsa.pub(公鑰)

			5)追加公鑰到~/.ssh/authorized_keys文件中(文件名、位置固定)
				$>cd ~/.ssh
				$>cat id_rsa.pub >> authorized_keys
			
			6)修改authorized_keys的權限爲644.
				$>chmod 644 authorized_keys
			
			7)測試
				$>ssh localhost

       至此,s201的hadoop已經搭建完成。

三 搭建其他三臺主機

     1 在vm界面將s201克隆三份。

     2  三臺主機分別修改主機名爲s202 s203 s204

     3 修改三臺主機的ip地址,克隆後的主機ip與s201相同,需要手動修改.

     4 修改四臺主機的hosts文件,將四臺主機的ip與主機名映射配置進去。

     5 修改s201的slaves文件,位於/soft/hadoop/etc/hadoop

[centos@s201 /soft/hadoop/etc/hadoop]$ vi slaves

添加以下內容,配置datanode主機
s202
s203
s204

     6 在s201上分發slaves文件

[centos@s201 /soft/hadoop/etc/hadoop]scp slaves centos@s202:/soft/hadoop-2.7.3/etc/hadoop
[centos@s201 /soft/hadoop/etc/hadoop]scp slaves centos@s203:/soft/hadoop-2.7.3/etc/hadoop
[centos@s201 /soft/hadoop/etc/hadoop]scp slaves centos@s204:/soft/hadoop-2.7.3/etc/hadoop
 

    7 配置完全分佈的ssh

	1.刪除所有主機上的/home/centos/.ssh/*

	2.在s201主機上生成密鑰對
		$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

	3.將s201的公鑰文件id_rsa.pub遠程複製到202 ~ 204主機上。
	  並放置/home/centos/.ssh/authorized_keys
		$>scp id_rsa.pub centos@s201:/home/centos/.ssh/authorized_keys
		$>scp id_rsa.pub centos@s202:/home/centos/.ssh/authorized_keys
		$>scp id_rsa.pub centos@s203:/home/centos/.ssh/authorized_keys
		$>scp id_rsa.pub centos@s204:/home/centos/.ssh/authorized_keys

    8 關閉防火牆,四臺主機都關

$>sudo systemctl stop firewalld.service		//停止防火牆
$>sudo chkconfig firewalld off				//"開啓自啓"禁用



補充防火牆其他指令:
centos防火牆操作
		[cnetos 6.5之前的版本]
		$>sudo service firewalld stop		//停止服務
		$>sudo service firewalld start		//啓動服務
		$>sudo service firewalld status		//查看狀態

		[centos7]
		$>sudo systemctl enable firewalld.service	//"開機啓動"啓用
		$>sudo systemctl disable firewalld.service	//"開機自啓"禁用
		$>sudo systemctl start firewalld.service	//啓動防火牆
		$>sudo systemctl stop firewalld.service		//停止防火牆
		$>sudo systemctl status firewalld.service	//查看防火牆狀態

		[開機自啓]
		$>sudo chkconfig firewalld	on				//"開啓自啓"啓用
		$>sudo chkconfig firewalld	off				//"開啓自啓"禁用

    9 啓動hadoop 在s201上依次執行 hdfs namenode -format (第一次啓動需要格式化)  start-dfs.sh 和 start-yarn.sh 完成後輸入jps可看到如下結果

[centos@s201 /soft/hadoop/etc/hadoop]$jps
6805 Jps
5558 SecondaryNameNode
5721 ResourceManager
5341 NameNode

        在其他三臺機器上輸入jps,可以看到如下結果

[centos@s202 /soft/hadoop/etc/hadoop]$jps
5301 NodeManager
5174 DataNode
6079 Jps
[centos@s203 /home/centos]$jps
6053 Jps
5079 NodeManager
4952 DataNode
[centos@s204 /home/centos]$jps
5027 DataNode
6151 Jps
5162 NodeManager

     在s201上啓動了NameNode,ResourceManager,SecondaryNameNode,在其他三臺主機上啓動了DataNode和         NodeManager,說明集羣已經啓動成功。

     10 查看webUI  訪問s201的50070端口,可見如下界面

        啓動了namenode和三個datanode,至此,hadoop完全分佈式已經搭建完成,相關日誌,可查看                                   ${HADOOP_HOME}/logs

四 僞分佈式的搭建

    僞分佈式在性質上等同於完全分佈式,只不過都是在一臺機器上運行,只有一個節點。

    大部分步驟同上,只是配置文件不同,不需要修改slaves文件

		僞分佈模式。
		a)進入${HADOOP_HOME}/etc/hadoop目錄
		b)編輯core-site.xml
			<?xml version="1.0"?>
			<configuration>
				<property>
					<name>fs.defaultFS</name>
					<value>hdfs://localhost/</value>
				</property>
			</configuration>
		c)編輯hdfs-site.xml
			<?xml version="1.0"?>
			<configuration>
				<property>
					<name>dfs.replication</name>
					<value>1</value>
				</property>
			</configuration>
		d)編輯mapred-site.xml
			注意:cp mapred-site.xml.template mapred-site.xml
			<?xml version="1.0"?>
			<configuration>
				<property>
					<name>mapreduce.framework.name</name>
					<value>yarn</value>
				</property>
			</configuration>
		e)編輯yarn-site.xml
			<?xml version="1.0"?>
			<configuration>
				<property>
					<name>yarn.resourcemanager.hostname</name>
					<value>localhost</value>
				</property>
				<property>
					<name>yarn.nodemanager.aux-services</name>
					<value>mapreduce_shuffle</value>
				</property>
			</configuration>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章