hadoop-2.x高可用集羣搭架

一、規劃

1、硬件資源

ip6:centos-node6
ip7:centos-node7
ip8:centos-node8
ip9:centos-node9

2、配置環境變量:

export JAVA_HOME=/usr/local/java/jdk1.7.0_79
export PATH=.:$JAVA_HOME/bin:$PATH

二、環境配置

1、修改/etc/hosts

ip6:centos-node6
ip7:centos-node7
ip8:centos-node8
ip9:centos-node9

2、免密碼登錄

生成私鑰【4臺機器上均要執行】
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 
生成免密碼登陸文件【4臺機器上均要執行】
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
然後,將id_dsa.pub拷貝到 centos-node7,centos-node8,centos-node9
的~/root/目錄下
scp ~/.ssh/id_dsa.pub root@centos-node7:~/root  
scp ~/.ssh/id_dsa.pub root@centos-node8:~/root
scp ~/.ssh/id_dsa.pub root@centos-node9:~/root
將id_dsa.pub重寫到 authorized_keys 在當前/root/目錄下執行命令:
cat id_dsa.pub >> ~/.ssh/authorized_keys
測試登陸 ssh centos-node7,centos-node8,centos-node9

三、Hadoop-2.x HDFS 高可用分佈圖

這裏寫圖片描述

hadoop-2.x 配置在服務器節點位置

這裏寫圖片描述

四、hadoop-2.x配置

下載hadoop-2.5.1.tar.gz

http://apache.fayea.com/hadoop/common/

並將其解壓到/usr/local/hadoop-2.5.1.下,執行命令:

tar -zxvf hadoop-2.5.1.tar.gz -C /usr/local/

1、修改配置文件 /usr/local/hadoop-2.5.1/etc/hadoop/

hadoop-env.sh

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

hdfs-site.xml

//配置一個命名服務bjsxt
<property>
  <name>dfs.nameservices</name>
  <value>bjsxt</value>
</property>
//NameNode命名
<property>
  <name>dfs.ha.namenodes.bjsxt</name>
  <value>nn1,nn2</value>
</property>
//配置兩個NameNode的RPC協議主機名和端口
<property>
  <name>dfs.namenode.rpc-address.bjsxt.nn1</name>
  <value>centos-node6:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.bjsxt.nn2</name>
  <value>centos-node7:8020</value>
</property>
//兩個NameNode的http協議的主機名和端口
<property>
  <name>dfs.namenode.http-address.bjsxt.nn1</name>
  <value>centos-node6:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.bjsxt.nn2</name>
  <value>centos-node7:50070</value>
</property>
//配置(原文件)JournalNode的服務器名和端口
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://centos-node7:8485;centos-node8:8485;centos-node9:8485/bjsxt</value>
</property>

//配置客戶端提供的java類,將使用DFS客戶機找到哪些NameNode是活躍的Active
<property>
 <name>dfs.client.failover.proxy.provider.bjsxt</name>
 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
//配置sshfence指定私鑰的路徑
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>
//指定私鑰的路徑
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_dsa</value>
</property>

//JournalNode 的工作目錄
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/jn/data</value>
</property>

//配置開啓故障自動切換
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>

core-site.xml

//配置集羣名稱 bjsxt
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://bjsxt</value>
</property>
//配置zookeeper集羣服務器節點
<property>
   <name>ha.zookeeper.quorum</name>
   <value>centos-node6:2181,centos-node7:2181,centos-node8:2181</value>
</property>
//修改hadoop默認工作目錄
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/hadoop-2.5.1</value>
</property>

slaves

//配置DataNode的節點服務器
centos-node7
centos-node8
centos-node9

五、zookeeper安裝配置

下載地址:http://apache.fayea.com/zookeeper/

下載 zookeeper-3.4.6.tar.gz,上傳到centos-node6服務器上,解壓:

tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local

修改配置文件,cd /usr/zookeeper-3.4.6/conf 執行命令

cp zoo_sample.cfg zoo.cfg

修改zoo.cfg

//修改地址
dataDir=/opt/zookeeper
//添加集羣節點服務
server.1=centos-node6:2888:3888
server.2=centos-node7:2888:3888
server.3=centos-node8:2888:3888

在/opt/zookeeper 目錄下創建文件myid, 修改 myid

vi /opt/zookeeper/myid
//編輯內容
1 

將 opt/zookeeper文件夾拷貝到centos-node7,centos-node8 (因爲我們有三臺zookeep服務節點) 命令:

scp -r zookeeper/ root@centos-node7:/opt
scp -r zookeeper/ root@centos-node8:/opt

將 centos-node7 服務器目錄 /opt/zookeeper 下myid 文件編輯內容爲:2
將 centos-node8 服務器目錄 /opt/zookeeper 下myid 文件編輯內容爲:3

同時拷貝centos-node6 上的zookeeper 到centos-node7,centos-node8服務器上

scp -r /usr/local/zookeeper-3.4.6 root@centos-node7:/usr/local
scp -r /usr/local/zookeeper-3.4.6 root@centos-node8:/usr/local

1、配置zookeeper環境變量

vi /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.7.0_79
export ZK_HOME=/usr/local/zookeeper-3.4.6
export PATH=.:$JAVA_HOME/bin:$ZK_HOME/bin:$PATH

環境變量 立即生效

source /etc/profile

同時拷貝centos-node6 上的/etc/profile文件 到centos-node7,centos-node8服務器上的 /etc/目錄下 ,在centos-node7,centos-node8 分別執行 source /etc/profile ,立即生效

啓動zookeeper 執行命令:

zkServer.sh start 

這裏寫圖片描述

現在 服務器centos-node6 hadoop 配置完成了,需要拷貝到centos-node7,centos-node8,centos-node9,服務器上:

將 hadoop-2.5.1.tar.gz 拷貝到centos-node7,centos-node8,centos-node9,服務器上,分別解壓到 /usr/local 目錄下面:

tar -zxvf hadoop-2.5.1.tar.gz -C /usr/local

拷貝服務器 centos-node6 的 /usr/local/hadoop -2.5.1/etc/haoop/所有文件 拷貝到
centos-node7,centos-node8,centos-node9服務器上的 /usr/local/hadoop -2.5.1/etc/haoop/中。(保持配置文件一致)

//usr/local/hadoop -2.5.1/etc/haoop/當前目錄下拷貝

scp ./* root@centos-node7:/usr/local/hadoop-2.5.1/etc/hadoop/
scp ./* root@centos-node8:/usr/local/hadoop-2.5.1/etc/hadoop/
scp ./* root@centos-node9:/usr/local/hadoop-2.5.1/etc/hadoop/

備註:關閉防火牆:centos-7關閉防火牆:systemctl stop firewalld

啓動:JN (journalnode) ,在配置有JD服務器上啓動

./hadoop-daemon.sh start journalnode

這裏寫圖片描述

運行(hdfs namenode -format)格式化,在其中一臺NameNode上進行格式化,在hadoop/bin/目錄下執行命令:

./hdfs namenode -format

這裏寫圖片描述

初始化完成 會生成 hdfs 文件目錄

這裏寫圖片描述

現在服務器 centos-node6 上NameNode 以格式化,HDFS 目錄已生成,然而第二個centos-node7上的NameNode未格式化, HDFS目錄未生成,

這時候我們必須啓動 centos-node6 的NameNode,執行一下命令:

./hadoop-daemon.sh start namenode

這裏寫圖片描述

然後 在未格式化(centos-node7)的 NameNode 上執行次命令:

./hdfs namenode -bootstrapStandby

這裏寫圖片描述

現在我們就可以 初始化 ZKFC 在其中一個NameNode 上執行(三臺zookeeper同時啓動的情況) 命令:

./hdfs zkfc -formatZK

這裏寫圖片描述

啓動dfs,查看jps 執行命令:

./start-dfs.sh

這裏寫圖片描述

瀏覽器訪問:http://centos-node6:50070

這裏寫圖片描述

接下來我們配置 ResourceManager 和 DataManager

修改配置文件 mapred-site.xml.template 執行命令:

cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
//添加yarn
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

修改配置文件 yarn-site.xml 執行命令:

    //centos-node6服務器作爲服務節點
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>centos-node6</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>

拷貝 mapred-site.xml yarn-site.xml 到centos-node7,centos-node8,centos-node9 服務器上/hadoop-2.5.1/etc/hadoop/目錄下。

啓動所有服務:首先啓動所有節點的zookeeper服務

./start-all.sh

這裏寫圖片描述

查看centos-node7上的進程:jps

這裏寫圖片描述

查看centos-node8上的進程:jps

這裏寫圖片描述

查看centos-node9上的進程:jps

這裏寫圖片描述

瀏覽器訪問 ResourceManager http://centos-node6:8088

這裏寫圖片描述

hadoop-2.x高可用集羣搭架 配置完成

發佈了58 篇原創文章 · 獲贊 38 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章