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日誌存放位置
- 編輯
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)
- 啟動zookeeper服務
cd /home/centos/soft/zookeeper-3.4.5/bin/
./zkServer.sh start
- 檢視狀態:一個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:
- 用瀏覽器訪問: http://m1:8088, 檢視是否有NodeManager服務在執行
- 執行一下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