1. 程式人生 > >Hadoop2.6.5高可用叢集搭建

Hadoop2.6.5高可用叢集搭建

軟體環境:

linux系統: CentOS6.7
Hadoop版本: 2.6.5
zookeeper版本: 3.4.8

主機配置:

一共m1, m2, m3這五部機, 每部主機的使用者名稱都為centos
192.168.179.201: m1 
192.168.179.202: m2 
192.168.179.203: m3 

m1: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Master, Worker
m2: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Worker
m3: Zookeeper, DataNode, NodeManager, Worker

前期準備

1.配置主機IP:

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

2.配置主機名:

sudo vi /etc/sysconfig/network

3.配置主機名和IP的對映關係:

sudo vi /etc/hosts

4.關閉防火牆

(1)臨時關閉:

service iptables   stop
service iptables   status

(2)開機時自動關閉:

chkconfig iptables   off
chkconfig iptables   --list

搭建步驟:

一.安裝配置Zookeeper叢集(在m3.m4,m5三部主機上)

1.解壓

tar  -zxvf zookeeper-3.4.8.tar.gz  -C  /home/hadoop/soft/zookeeper

2.配置環境變數

vi  /etc/profile
## Zookeeper
export   ZK_HOME=/home/centos/soft/zookeeper
export   CLASSPATH=$CLASSPATH:$ZK_HOME/lib
export   PATH=$PATH
:$ZK_HOME/sbin:$ZK_HOME/bin
source  /etc/profile

3.修改配置

(1)配置zoo.cfg檔案

cd  /home/centos/soft/zookeeper/conf/
cp  zoo_sample.cfg  zoo.cfg
vi  zoo.cfg
## 修改dataDir此項配置
dataDir=/home/centos/soft/zookeeper/tmp
## 新增以下三項配置
server.1=m3:2888:3888
server.2=m4:2888:3888
server.3=m5:2888:3888

(2)建立tmp目錄

mkdir /home/centos/soft/zookeeper/tmp

(3)編輯myid檔案

touch   /home/centos/soft/zookeeper/tmp/myid
echo  1  >   /home/centos/soft/zookeeper/tmp/myid            ## 在m3主機上myid=1

4.配置zookeeper日誌存放位置

  1. 編輯zkEnv.sh檔案
vi  /home/centos/soft/zookeeper/bin/zkEnv.sh
# 編輯下列該項配置
if   [ "x${ZOO_LOG_DIR}" = "x" ]
then
    ZOO_LOG_DIR="/home/centos/soft/zookeeper/logs"            ## 修改此項
fi


(5)建立logs目錄

mkdir /home/centos/soft/zookeeper/logs

5. 拷貝到其他主機並修改myid

(1)拷貝到其他主機

scp -r /home/centos/soft/zookeeper/ m4:/home/centos/soft/
scp -r /home/centos/soft/zookeeper/ m5:/home/centos/soft/

(2)修改myid

echo 2 > /home/centos/soft/zookeeper/tmp/myid     ## m4主機
echo 3 > /home/centos/soft/zookeeper/tmp/myid     ## m5主機

二.安裝配置hadoop叢集

1.解壓

tar  -zxvf  hadoop-2.6.5.tar.gz  -C  /home/centos/soft/hadoop

2.將Hadoop配置進環境變數

vi   /etc/profile
## Java
export JAVA_HOME=/home/centos/soft/jdk
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

## Hadoop
export HADOOP_USER_NAME=centos
export HADOOP_HOME=/home/centos/soft/hadoop
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin
source /etc/profile

3.編輯hadoop-env.sh檔案

1.編輯hadoop-env.sh檔案
export  JAVA_HOME=/home/centos/soft/jdk
2.編輯core-site.xml檔案
<configuration>
<property><name>fs.defaultFS</name><value>hdfs://ns1</value>
</property>
<property><name>hadoop.tmp.dir</name><value>/home/centos/soft/hadoop/tmp</value>
</property>
<property><name>ha.zookeeper.quorum</name><value>m3:2181,m4:2181,m5:2181</value>
</property>
<!-- 在Hive的hplsql功能中用到: Hadoop的代理介面與代理名, 其中centos為HDFS的主NameNode的使用者, 根據實際情況修改 -->
<property>
      <name>hadoop.proxyuser.centos.hosts</name>
      <value>*</value>
</property>
<property><name>hadoop.proxyuser.centos.groups</name>
      <value>*</value>
</property>
</configuration>
3.編輯hdfs-site.xml檔案
<configuration>
<property><name>dfs.nameservices</name><value>ns1</value>
</property>
<property><name>dfs.ha.namenodes.ns1</name><value>nn1,nn2</value>
</property>
<property><name>dfs.namenode.rpc-address.ns1.nn1</name><value>m1:9000</value>
</property>
<property><name>dfs.namenode.http-address.ns1.nn1</name><value>m1:50070</value>
</property>
<property><name>dfs.namenode.rpc-address.ns1.nn2</name><value>m2:9000</value>
</property>
<property><name>dfs.namenode.http-address.ns1.nn2</name><value>m2:50070</value>
</property>
<property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://m3:8485;m4:8485;m5:8485/ns1</value>
</property>
<property><name>dfs.journalnode.edits.dir</name><value>/home/centos/soft/hadoop/journal</value>
</property>
<property><name>dfs.namenode.name.dir</name><value>/home/centos/soft/hadoop/tmp/dfs/name</value>
</property>
<property><name>dfs.datanode.data.dir</name><value>/home/centos/soft/hadoop/tmp/dfs/data</value>
</property>
<property><name>dfs.replication</name><value>1</value>
</property>
<property><name>dfs.ha.automatic-failover.enabled</name><value>true</value>
</property>
<property><name>dfs.webhdfs.enabled</name><value>true</value>
</property>
<property><name>dfs.client.failover.proxy.provider.ns1</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property><name>dfs.ha.fencing.methods</name><value>
         sshfence
         shell(/bin/true)
   </value>
</property>
<property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/centos/.ssh/id_rsa</value>
</property>
<property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value>
</property>
<property><name>dfs.permissions</name><value>false</value>
</property>
<property><name>heartbeat.recheck.interval</name><value>2000</value>
</property>
<property><name>dfs.heartbeat.interval</name>
      <value>1</value>
</property>
<property>
      <name>dfs.blockreport.intervalMsec</name>
      <value>3600000</value>
      <description>Determines block reporting interval in milliseconds.</description>
</property>
</configuration>
4.編輯mapred-site.xml檔案
<configuration>
<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
</property>
<property>
      <name>mapreduce.jobhistory.address</name>
      <value>0.0.0.0:10020</value>
      <description>MapReduce JobHistory Server IPC host:port</description>
</property>
<property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>0.0.0.0:19888</value>
      <description>MapReduce JobHistory Server Web UI host:port</description>
</property>
<property>
      <name>mapreduce.task.io.sort.mb</name>
      <value>1</value>
</property>
<property>
      <name>yarn.app.mapreduce.am.staging-dir</name>
      <value>/user</value>
</property>
<property>
      <name>mapreduce.jobhistory.intermediate-done-dir</name>
      <value>/user/history/done_intermediate</value>
</property>
<property>
      <name>mapreduce.jobhistory.done-dir</name>
      <value>/user/history</value>
</property>
</configuration>    
5.編輯yarn-site.xml檔案
<configuration>
<property>
      <name>yarn.resourcemanager.ha.enabled</name>
      <value>true</value>
</property>
<property>
      <name>yarn.resourcemanager.cluster-id</name>
      <value>yrc</value>
</property>
<property>
      <name>yarn.resourcemanager.ha.rm-ids</name>
      <value>rm1,rm2</value>
</property>
<property>
      <name>yarn.resourcemanager.hostname.rm1</name>
      <value>m1</value>
</property>
<property>
      <name>yarn.resourcemanager.hostname.rm2</name>
      <value>m2</value>
</property>
<property>
      <name>yarn.resourcemanager.zk-address</name>
      <value>m3:2181,m4:2181,m5:2181</value>
</property>
<property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle,spark_shuffle</value>
</property>
<property>
      <name>yarn.nodemanager.resource.memory-mb</name>
      <value>2048</value>
</property>
<property>
      <name>yarn.scheduler.maximum-allocation-mb</name>
      <value>4096</value>
</property>
<property>
      <name>yarn.nodemanager.log-dirs</name>
      <value>/home/centos/soft/hadoop/logs</value>
</property>
<property>
      <name>yarn.resourcemanager.scheduler.class</name>
      <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>  
      <name>yarn.nodemanager.aux-services.spark_shuffle.class</name>  
      <value>org.apache.spark.network.yarn.YarnShuffleService</value>  
</property> 
<property>
      <name>yarn.nodemanager.pmem-check-enabled</name>
      <value>false</value>
      <description>是否啟動一個執行緒檢查每個任務正使用的實體記憶體量,如果任務超出分配值,則直接將其殺掉,預設是true</description>
</property>
<property>
      <name>yarn.nodemanager.vmem-check-enabled</name>
      <value>false</value>
      <description>是否啟動一個執行緒檢查每個任務正使用的實體記憶體量,如果任務超出分配值,則直接將其殺掉,預設是true</description>
</property>
<property>
      <name>spark.shuffle.service.port</name>
      <value>7337</value>
</property>
</configuration>
6.編輯slaves檔案

編輯slaves檔案, slaves是指定子節點的位置, 在HDFS上為DataNode的節點位置, 在YARN上為NodeManager的節點位置, 以你的實際情況而定

m3
m4
m5

三.初始化Hadoop

1. 配置主機之間免密碼登陸

(1)在m1上生產一對密匙

ssh-keygen -t rsa

(2)將公鑰拷貝到其他節點,包括本主機

ssh-coyp-id 127.0.0.1
ssh-coyp-id localhost
ssh-coyp-id m1
ssh-coyp-id m2
ssh-coyp-id m3

(3)在其他主機上重複(1)(2)的操作

2.將配置好的hadoop拷貝到其他節點

scp -r /home/centos/soft/hadoop m2:/home/centos/soft/
scp -r /home/centos/soft/hadoop m3:/home/centos/soft/
scp -r /home/centos/soft/hadoop m4:/home/centos/soft/
scp -r /home/centos/soft/hadoop m5:/home/centos/soft/

注意:嚴格按照下面的步驟

3.啟動zookeeper叢集(分別在m3、m4、m5上啟動zk)

  1. 啟動zookeeper服務
cd /home/centos/soft/zookeeper-3.4.5/bin/
./zkServer.sh start
  1. 檢視狀態:一個leader,兩個follower
./zkServer.sh status

4.啟動journalnode (分別在m3、m4、m5主機上執行, 必須在HDFS格式化前執行, 不然會報錯)

(1)啟動JournalNode服務

cd /home/centos/soft/hadoop
sbin/hadoop-daemon.sh start journalnode

(2)執行jps命令檢驗,m3、m4、m5上多了JournalNode程序

jps

5.格式化HDFS(在m1上執行即可)

(1)在m1上執行命令:

hdfs namenode -format

(2)格式化後會在根據core-site.xml中的hadoop.tmp.dir配置生成個檔案,這裡我配置的是/home/centos/soft/hadoop/tmp,然後將m1主機上的/home/centos/soft/hadoop下的tmp目錄拷貝到m2主機上的/home/centos/soft/hadoop目錄下

scp -r /home/centos/soft/hadoop/tmp/ m2:/home/centos/soft/hadoop/

6.格式化ZK(在m1上執行)

hdfs zkfc -formatZK

7.啟動HDFS(在m1上執行)

sbin/start-dfs.sh

8.啟動YARN(在m1,m2上執行)

sbin/start-yarn.sh

至此,Hadoop-2.6.5配置完畢!!!

四.檢驗Hadoop叢集搭建成功

0.在Windows下編輯hosts檔案, 配置主機名與IP的對映(此步驟可跳過)**

C:\Windows\System32\drivers\etc\hosts

192.168.179.201     m1
192.168.179.202     m2
192.168.179.203     m3
192.168.179.204     m4
192.168.179.205     m5

1.可以統計瀏覽器訪問:

http://m1:50070
    NameNode 'm1:9000' (active)
http://m2:50070
    NameNode 'm2:9000' (standby)

2.驗證HDFS HA

(1)首先向hdfs上傳一個檔案

hadoop fs -put /etc/profile /profile

(2)檢視是否已上傳到HDFS上

hadoop fs -ls /

(3)然後再kill掉active的NameNode

kill -9 <pid of NN>
NameNode 'm2:9000' (active)             ## 主機m2上的NameNode變成了active

(5)執行命令:

hadoop fs -ls /                          ## 看之前在m1上傳的檔案是否還存在!!!

(6)手動在m1上啟動掛掉的NameNode

sbin/hadoop-daemon.sh start namenode
NameNode 'm1:9000' (standby)

3.驗證YARN:

  1. 用瀏覽器訪問: http://m1:8088, 檢視是否有NodeManager服務在執行
  2. 執行一下hadoop提供的demo中的WordCount程式, 在linux上執行以下命令
hadoop jar /home/centos/soft/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount InputParameter OutputParameter
http://m1:8088 上是否有application在執行,若有則YARN沒問題

OK,大功告成!!!

相關推薦

Hadoop2.6.5可用叢集搭建

軟體環境: linux系統: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主機配置: 一共m1, m2, m3這五部機, 每部主機的使用者名稱都為centos 192.168.179.201: m

hadoop學習第二天~Hadoop2.6.5完全分散式叢集搭建和測試

環境配置: 系統 centos7 節點 192.168.1.111 namenode 192.168.1.115 datanode2 192.168.1.116 datanode3 java 環境 :

hbase-1.2.6可用叢集搭建安裝文件

1.安裝 zookeeper 叢集,此處略2.找到官網下載 hbase 安裝包 hbase-1.2.6-bin.tar.gz,    這裡給大家提供一個下載地址:http://mirrors.hust.edu.cn/apache/hbase/    對應版本的官方文件:htt

centos7 hadoop HA可用叢集搭建hadoop2.7 zookeeper3.4 )

目錄 七、總結 上篇文章寫了如何用ssh免密登入,當然這些操作都是在hadoop賬號上的操作,包括這篇文章也是一樣 三臺主機 一、伺服器環境 主機名 IP 使用者名稱 密碼 安裝目錄 node1 192.168.31.

Hadoop2.0可用叢集搭建

0、叢集節點分配 Hadoop01: Zookeeper NameNode(active) DataNode NodeManager JournalNode ResourceManager(active) Hadoop02: Zookeeper DataNod

Kubernetes實戰 可用叢集搭建,配置,運維與應用

1-1 K8S導學 1-2 搭建K8S叢集步驟和要點介紹 1-3 搭建三節點Ubuntu環境 1-4 安裝容器引擎 1-5 下載Kubeadm、node元件和命令列工具 1-6 向叢集中加入worker節點 1-7 安裝dashboard和heapste

Flume NG可用叢集搭建詳解(基於flume-1.7.0)

1、Flume NG簡述 Flume NG是一個分散式,高可用,可靠的系統,它能將不同的海量資料收集,移動並存儲到一個數據儲存系統中。輕量,配置簡單,適用於各種日誌收集,並支援 Failover和負載均衡。並且它擁有非常豐富的元件。Flume NG採用的是三層架構:Agent層,Collecto

三節點可用叢集搭建——Hadoop-HA+zookeeper

目錄 HDFS -HA模式的工作機制示意圖 叢集規劃——三節點高可用 Hadoop HA叢集搭建 前期準備 建立新的虛擬機器 配置虛擬機器 克隆虛擬機器 配置環境變數,重新整理(master、slave1、slave2都配置一下環境變數) 安裝zookeeper叢集 配置檔案 拷貝檔案 拷貝

Redis5之前版本可用叢集搭建(偽分散式Ruby版)

一、簡介 Redis5以前安裝需要藉助ruby,Redis5版本以後不需要可參考Redis5.x版本快取搭建高可用叢集 二、Redis高可用叢集搭建 redis安裝 下載地址:http://redis.io/download 安裝步驟: # 把下載好的redis-3.0.0-rc2.tar.gz放在/u

RabbitMQ 高階指南:從配置、使用到可用叢集搭建

博主說:在專案中,通過 RabbitMQ,咱們可以將一些無需即時返回且耗時的操作提取出來,進行非同步處理,而這種非同步處理的方式大大的節省了伺服器的請求響應時間,從而提高了系統的吞吐量。 正文 1 RabbitMQ 簡介 1.1 介紹   RabbitMQ

redis一主多從可用叢集搭建

Redis 一主兩從高可用環境搭建 Redis 支援 Master-Slave(主從)模式,Redis Server 可以設定為另一個 Redis Server 的主機(從機),從機定期從主機拿資料。特殊的,一個從機同樣可以設定為一個 Redis Server

Redis Sentinel 可用叢集搭建(redis4.0)

前言 什麼是哨兵 Redis Sentinel出生於2012年,Redis 2.4穩定後首次釋出,它是一個旨在管理Redis叢集的系統。 哨兵的任務 監控(Monitoring):Sentinel會不斷地檢查你的主伺服器和從伺服器是否運作正常 提醒

大資料系列(hadoop) Hadoop+Zookeeper 3節點可用叢集搭建

原文地址:https://www.cnblogs.com/YellowstonePark/p/7750213.html一、叢集規劃主機名ipNameNodeDataNodeYarnZooKeeperJournalNodenode01192.168.1.201是是否是是node

CentOS7 haproxy+keepalived實現可用叢集搭建

一、搭建環境   CentOS7 64位         Keepalived  1.3.5         Haproxy 1.5.18   後端負載主機:192.168.166.21   192.168.166.22   兩臺節點上安裝rabbitmq服務      

離線安裝 k8s 1.5 可用叢集_Kubernetes中文社群

經常遇到全新初始安裝k8s叢集的問題,所以想著搞成離線模式,本著最小依賴原則,採用純shell指令碼編寫 基於Centos7-1503-minimal執行指令碼測試OK, 預設安裝docker1.12.3 etcd-v3.0.15 k8s-v1.5.1 本離線安裝所有的依賴都打包放到了百度網盤

RabbitMQ 可用叢集搭建及電商平臺使用經驗總結

面向EDA(事件驅動架構)的方式來設計你的訊息 AMQP routing key的設計 RabbitMQ cluster搭建 Mirror queue policy設定 兩個不錯的RabbitMQ plugin 大型應用外掛(Sharding、Rederation) Queue映象失敗手動同步

超詳細Hadoop HA可用叢集搭建及常見問題處理

       最近研究了下公司的hadoop叢集並模仿搭建了一個在本地測試使用的hadoop叢集。本文介紹下詳細的搭建過程以及各種常見問題的處理解決。  1 ,  前期準備     1.0  ,  準備Linux環境。         安裝vmware linux虛擬機

mongodb可用叢集搭建(分片+讀寫分離+負載均衡)

#分別在多臺機器上使用chiansun使用者登入 sudo yum install -y mongodb-org node-1 node-2 node-3 mongos mongos mongos 路由伺服器,定址 config config

Flume NG可用叢集搭建

軟體版本: CentOS 6.7 hadoop-2.7.4 apache-flume-1.6.0 一、Flume NG簡述 Flume 是 Cloudera 提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統。 Flume將採集到的檔案,sock

rabbitmq+haproxy+keepalived實現可用叢集搭建

  專案需要搭建rabbitmq的高可用叢集,最近在學習搭建過程,在這裡記錄下可以跟大家一起互相交流(這裡只是記錄了學習之後自己的搭建過程,許多原理的東西沒有細說)。 搭建環境   CentOS7 64位   RabbitMQ 3.6.2   Keepalived 1.2.21   主機:192.1