文档章节

hadoop—ha搭建步骤

ie四叶草
 ie四叶草
发布于 2017/07/25 13:32
字数 1627
阅读 6
收藏 0

1、hadoop高可用节点分布

  NN    DN    JN    ZK  ZKFC  RS  
node1
node2
node3
node4

2、关闭网络防火墙,时间同步,修改IP映射文件

# 关闭网络防火墙
service iptables stop
#Cenos使用:systemctl stop firewalld.service && systemctl disable firewalld.service

# 时间同步,集群中的所有时间要保持一致
sudo apt-get install ntp
ntpdate -u s1b.time.edu.cn

'#修改映射文件,hosts文件位置在:/etc/hosts

sudo vi /etc/hosts

ip1 node1
ip2 node2
ip3 node3

3、安装JDK

'#上传JDK:jdk-8u131-linux-i586.tar.gz,解压,解压命令:
tar -zxvf jdk-8u131-linux-i586.tar.gz

#配置环境变量,修改/etc/profile文件
sudo vi /etc/profile

#在文件后加入以下命令:
export JAVA_HOME=/usr/local/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

4、设置免秘钥登录

# node1需要免密钥登录到node2 、3、4,node2需要免密要登录到node1,node3,node4,
#先设置4台机器本机免秘钥登录,即ssh localhost

#生成公钥,并将公钥追加到认证文件中
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

#将node1,和node2的公钥文件复制到需要免密要登录的机器上,再将此文件追加到各自的认证文件中
#例:在node1复制公钥文件到node2,后面以此类推
scp ~/.ssh/id_dsa.pub node2:/home

''#在node2上追加node1的公钥文件到认证文件中
cat /home/id_dsa.pub >> ~/.ssh/authorized_keys

5、修改配置文件

**********************************************************************
(1)上传解压,配置环境变量
#在node1-4上上传hadoop包hadoop-2.6.1.tar.gz,在node1-3上传zookeeper-3.4.6.tar.gz然后各自机器分别解压:
tar -zxvf hadoop-2.6.1.tar.gz
tar -zxvf zookeeper-3.4.6.tar.gz

#配置hadoop与zookeeper环境变量,修改/etc/profile文件,配置zookeeper环境变量在node1-3,配置hadoop环境变量在node1-4
sudo vi /etc/profile

export HADOOP_HOME=/srv/opt/hadoop-2.6.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 
export ZOOKEEPER_HOME=/srv/opt/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin


#是配置文件生效
source /etc/profile


****************************************************************************************
(2)修改zookeeper配置文件,配置zookeeper
#以下在node1上修改配置文件
#修改zookeeper配置文件,进入zookeeper配置文件目录:zookeeper-3.4.6/conf/,
#将zoo_sample.cfg重命名为zoo.cfg,修改zoo.cfg文件
vi zoo.cfg

#配置zookeeper文件存放目录
dataDir=/opt/zookeeper

#配置zookeeper集群节点位置,node1-3,添加以下命令:
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

#在刚刚配置的zookeeper文件存放目录创建myid文件,进入/opt/
mkdir zookeeper
cd zookeeper
vi myid#目前在node1上配置,myid文件中写入1,与配置文件zoo.cfg对应,node2,node3中对应要写如2,3
1


#将node1中zookeeper配置文件copy到node2,3的zookeeper配置文件目录中
scp   /srv/opt/zookeeper-3.4.6/conf/*   node2:srv/opt/zookeeper-3.4.6/conf/
scp   /srv/opt/zookeeper-3.4.6/conf/*   node3:srv/opt/zookeeper-3.4.6/conf/

#在node2,3上/opt/目录中新建zookeeper文件夹,在此文件夹中新建myid文件分别写入2,3


****************************************************************************************
(3)修改hadoop配置文件
#进入hadoop配置文件目录:hadoop-2.6.1/etc/hadoop/,修改hadoop-env.sh,更改JAVA_HOME路径
vi hadoop-env.sh

export JAVA_HOME=/srv/opt/jdk1.8.0_131

#修改hdfs-site.xml
vi  hdfs-site.xml


<configuration>
<property>
  <name>dfs.nameservices</name>
  <value>zzu</value>#指定nameservices名字
</property>
<property>
  <name>dfs.ha.namenodes.zzu</name>#与指定nameservices名字相同
  <value>nn1,nn2</value>#两台namenode的别名
</property>
<property>#指定两台namenode的rpc访问路径,注意对应nameservices名字,和各自的namenode别名
  <name>dfs.namenode.rpc-address.zzu.nn1</name>
  <value>node1:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.zzu.nn2</name>
  <value>node2:8020</value>
</property>
<property>#指定两台namenode的http访问路径,注意对应nameservices名字,和各自的namenode别名
  <name>dfs.namenode.http-address.zzu.nn1</name>
  <value>node1:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.node2.nn2</name>
  <value>node2:50070</value>
</property>
<property>#指定JN集群,node2--4,注意分号进行分割
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node2:8485;node3:8485;node4:8485/zzu</value>
</property>
<property>#故障迁移代理,注意对应nameservices名字
  <name>dfs.client.failover.proxy.provider.zzu</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>#指定ssh方式登录
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>
<property>#配置ssh私钥文件位置,免密要登录生成的私钥文件位置
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/home/zzu/.ssh/id_dsa</value>
</property>
<property>#配置edits文件存放目录,/journal/data目录是空目录,或者是不存在
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/journal/data</value>
</property>
</configuration>


#修改core-site.xml文件
vi core-site.xml

<configuration>
<property>#配置hdfs访问路径,nameservices名字,与 hdfs-site.xml文件中的nameservices对应
  <name>fs.defaultFS</name>
  <value>hdfs://zzu</value>
</property>
<property>#配置hdfs文件存放路径
  <name>hadoop.tmp.dir</name>
  <value>/opt/hadoop</value>
</property>
</configuration>


**********************************************************************
(4)启动zookeeper
#在node1-3上同时启动zookeeper
zkServer.sh  start
#查看zookeeper状态可以用下面命令,看是否启动,两台机器上显示Mode:follow,一台显示Mode:leader (启动正常)
zkServer.sh  status


**********************************************************************
(5)进入hadoop配置文件目录:hadoop-2.6.1/etc/hadoop/
#修改hdfs-site.xml
vi hdfs-site.xml

#在其中追加一下配置,启动故障自动迁移
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
</property>

#修改core-sit.xml,追加配置:
<property>
   <name>ha.zookeeper.quorum</name>
   <value>node1:2181,node2:2181,node3:2181</value>
</property>

#最后同步hadoop配置文件,从node1到node2-4
scp  /srv/opt/hadoop-2.6.1/etc/hadoop/   node2: /srv/opt/hadoop-2.6.1/etc/hadoop/ 
scp  /srv/opt/hadoop-2.6.1/etc/hadoop/   node3: /srv/opt/hadoop-2.6.1/etc/hadoop/ 
scp  /srv/opt/hadoop-2.6.1/etc/hadoop/   node4: /srv/opt/hadoop-2.6.1/etc/hadoop/ 


6、在node2-4上分别启动JN

#启动命令:
hadoop-daemon.sh  start   journalnode

7、格式化NN

#在其中一台namenode节点上执行,例:在node1上执行
hdfs namenode -format

#在node1上其中namenode,执行以下命令:
hadoop-daemon.sh  start  namenode

#在另一台namenode(node2)上执行以下命令,同步namenode1的格式化文件
hdfs namenode -bootstrapStandby

8、格式化zookeeper

#在其中一台namenode上执行,例:在node1上执行
hdfs zkfc -formatZK

9、启动dfs

#先停止node1的namenode
hadoop-daemon.sh  stop  namenode

#启动dfs
 start-dfs.sh

#配置完成后,如需要重启集群:
stop-dfs.sh
#在node1-3上启动zookeeper
zkServer.sh  start
#在执行:
 start-dfs.sh

###10、配置mapReduce

#先停止集群运行
stop-dfs.sh
zkServer.sh stop


**********************************************************************************
#在node1上,进入进入hadoop配置文件目录:hadoop-2.6.1/etc/hadoop/
#将mapred-site.xml.template重命名mapred-site.xml
vi mapred-site.xml

#mapReduce运行在yarn上
<configuration>
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
</configuration>


******************************************************************************
#修改yarn-site.xml文件
vi  yarn-site.xml

<configuration>
 <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
 </property>
 <property>#设置resourcemanager高可用
   <name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
 </property>
 <property>#设置resourcemanage  id
   <name>yarn.resourcemanager.cluster-id</name>
   <value>zzu2yarn</value>
 </property>
 <property>#设置两个resourcemanage 的别名
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
 </property>
 <property>#设置两个resourcemanage的所在节点
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>node3</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>node4</value>
 </property>
 <property>#设置resourcemanage的所在zookeeper集群节点
   <name>yarn.resourcemanager.zk-address</name>
   <value>node1:2181,node2:2181,node3:2181</value>
 </property>
</configuration>

**************************************************************************
#同步配置文件
scp  ./*.xml  node2:/srv/opt/hadoop-2.6.1/etc/hadoop/
scp  ./*.xml  node3:/srv/opt/hadoop-2.6.1/etc/hadoop/
scp  ./*.xml  node4:/srv/opt/hadoop-2.6.1/etc/hadoop/

11、启动集群

#同时在node1-3上启动zookeeper
zkServer.sh  start

#在任意一台机器上启动hadoop集群,例:在node1
start-all.sh

#在node3,4上分别启动ResourcesManager
yarn-daemon.sh start resourcemanager

# jps 查看集群后台进程

© 著作权归作者所有

共有 人打赏支持
上一篇: CenOS
ie四叶草
粉丝 0
博文 46
码字总数 25397
作品 0
郑州
私信 提问
Hadoop-2.6.0集群搭建(多机环境HDFS HA+YARN HA,推荐)

搭建 HDFS HA 和 ResourceManager HA 集群 下载Hadoop: http://hadoop.apache.org/releases.html 集群规划 HDFS HA说明 Hadoop 2.x中通常由两个NameNode组成,一个处于Active状态,另一个处...

翻船全靠浪
2016/04/25
66
0
大数据Hadoop需要了解哪些内容?

一、Hadoop环境搭建 1. Hadoop生态环境介绍 2. Hadoop云计算中的位置和关系 3. 国内外Hadoop应用案例介绍 4. Hadoop概念、版本、历史 5. Hadoop核心组成介绍及hdfs、mapreduce体系结构 6. H...

mo默瑶
05/05
0
0
Hadoop HA重做 Standby

错误现象,刚开始 namenode log一直刷以下错误信息: 2014-01-27 17:55:59,388 WARN resources.ExceptionHandler (ExceptionHandler.java:toResponse(92)) - INTERNALSERVERERROR 后面与此文......

cwalet
2016/05/24
354
0
HBase1.2.6集群部署教程

1.引言 在前面的博客中我们介绍HBase的伪分布安装,在本篇博客中就主要介绍一下HBase的集群部署,由于HBase是一款Hadoop之上的NoSQL数据库,因此我们在安装HBase之前需要首先部署Hadoop的集群...

Liri
2017/12/16
0
0
(13)HBase 1.2.6 集群部署

1.引言 在前面的博客中我们介绍的伪分布安装,在本篇博客中就主要介绍一下的集群部署,由于是一款之上的数据库,因此我们在安装之前需要首先部署的集群,其次需要使用进行管理,因此我们也需...

LoveCarpenter
2017/12/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ViewPager+Fragment+FragmentPagerAdapter实现软件主界面

ViewPager之前的页面是由View构成的,现在由Fragment构成,之前的PagerAdapter这里也换成了FragmentPagerAdapter.因为PagerAdapter有 public Object instantiateItem(ViewGroup container, i......

鱼想吃肉
12分钟前
0
0
feign文件上传遇到的坑

明天写

王俊博客
17分钟前
0
0
scala的sorted,sortBy,sortWith

val lst = List(1,3,2,4,5) //scala中对于集合的排序有三种方法:sorted,sortBy,sortWith //sorted方法对一个集合进行自然排序,传递一个Ordering隐式参数 def sorted[B >: A](imp...

whoisliang
32分钟前
0
0
区块链扩容最佳途径?十分钟讲清楚侧链技术

今天我们来讲区块链扩容的另一个主流方案——侧链,侧链可作为解决区块链扩容难题的一种有效解决方案。有些人认为,从理论上说,这种解决方案可让所有人都满意。 基础概念 侧链协议本质上是一...

HiBlock
34分钟前
0
0
3年经验Java程序员面阿里P6 差距在哪里

虽然这位小伙伴觉得自己工作三年了,结果阿里连面都不面就把自己挂了,这让自己感到很伤心。但是还是有网友觉得,三年不到p6,很正常啊,明年再面就没有问题啦! Java程序员3年经验面阿里P6,...

架构师springboot
36分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部