hadoop2.2.0的ha分布式集群搭建
hadoop2.2.0 ha集群搭建
使用的文件如下:
jdk-6u45-linux-x64.bin
hadoop-2.2.0.x86_64.tar
zookeeper-3.4.5.tar.gz
hbase-0.96.2-hadoop2-bin.tar
使用WinSCP工具将上述文件复制到linux的根目录的cloud文件夹下
文件所在路径为:
/cloud/jdk-6u45-linux-x64.bin
/cloud/hadoop-2.2.0.x86_64.tar
/cloud/zookeeper-3.4.5.tar.gz
/cloud/hbase-0.96.2-hadoop2-bin.tar
文件安装路径为:
/cloud/jdk
/cloud/hadoop
1使用wmware创建6台虚拟机,这里不再一一叙述配置过程
主机名 IP地址 安装的软件 运行的进程
hdp1 192.168.1.11 jdk1.6、hadoop2.2.0 NameNode、DFSZKFailoverController
hdp2 192.168.1.12 jdk1.6、hadoop2.2.0 NameNode、DFSZKFailoverController
hdp3 192.168.1.13 jdk1.6、hadoop2.2.0 ResourceManager
hdp4 192.168.1.14 jdk1.6、hadoop2.2.0、zookeeper3.4.5 DataNode、NodeManager、JournalNode、QuorumPeerMain
hdp5 192.168.1.15 jdk1.6、hadoop2.2.0、zookeeper3.4.5 DataNode、NodeManager、JournalNode、QuorumPeerMain
hdp6 192.168.1.16 jdk1.6、hadoop2.2.0、zookeeper3.4.5 DataNode、NodeManager、JournalNode、QuorumPeerMain
2关闭防火墙
关闭防火墙如下:
停止运行防火墙:service iptables stop
关闭防火墙自启动:chkconfig iptables off
验证防火墙是否关闭:chkconfig --list | grep iptables
3生成ssh免密码登录
分别在每个节点上生成公钥私钥:
cd /root/.ssh
ssh-keygen -t rsa三次回车
cp id_rsa.put authorized_keys
将hdp2、hdp3、hdp4、hdp5、hdp6的私钥复制到hdp1节点上:
在hdp2节点上执行:ssh-copy-id -i hdp1
在hdp3节点上执行:ssh-copy-id -i hdp1
在hdp4节点上执行:ssh-copy-id -i hdp1
在hdp5节点上执行:ssh-copy-id -i hdp1
在hdp6节点上执行:ssh-copy-id -i hdp1
将hdp1节点上的authorized_keys复制给hdp2、hdp3、hdp4、hdp5、hdp6节点:
在hdp1节点上执行:scp /root/.ssh/authorized_keys hdp2:/root/.ssh/
在hdp1节点上执行:scp /root/.ssh/authorized_keys hdp3:/root/.ssh/
在hdp1节点上执行:scp /root/.ssh/authorized_keys hdp4:/root/.ssh/
在hdp1节点上执行:scp /root/.ssh/authorized_keys hdp5:/root/.ssh/
在hdp1节点上执行:scp /root/.ssh/authorized_keys hdp6:/root/.ssh/
验证ssh免密码登录(包括登录自己):
在hdp1节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
在hdp2节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
在hdp3节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
在hdp4节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
在hdp5节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
在hdp6节点上执行:ssh hdp1、ssh hdp2、ssh hdp3、ssh hdp4、ssh hdp5、ssh hdp6
4配置hdp1节点上的jdk-6u45-linux-x64.bin
cd /cloud/目录下
为jdk-6u45-linux-x64.bin赋予执行权限:chmod u+x jdk-6u45-linux-x64.bin
在当前目录下解压jdk-6u45-linux-x64.bin:./jdk-6u45-linux-x64.bin(/cloud/文件夹下多了一个jdk1.6.0.45文件夹)
重命名jdk1.6.0.45:mv jdk1.6.0.45 jdk
配置jdk到环境变量:
vi /etc/profile添加如下内容:
export JAVA_HOME=/cloud/jdk
export PATH=.:$JAVA_HOME/bin:$PATH
保存退出
使修改的环境变量立即生效:
source /etc/profile
验证jak:
java -version
5配置hdp1节点上的hadoop-2.2.0.x86_64.tar
cd /cloud/目录下
在当前目录下解压hadoop-2.2.0.x86_64.tar:tar -zxvf hadoop-2.2.0.x86_64.tar(/cloud/下多了个hadoop-2.2.0文件夹)
重命名hadoop2.2.0:mv hadoop-2.2.0 hadoop
配置hadoop到环境变量:
vi /etc/profile添加如下内容:
export HADOOP_HOME=/cloud/hadoop
修改PATH变量为:export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
保存退出
使修改的环境变量立即生效:
source /etc/profile
修改位于hadoop/etc/hadoop下的配置文件(hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves)如下:
修改hadoop-env.sh的27行jdk
export JAVA_HOME=/cloud/jdk
修改core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/cloud/hadoop/data</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hdp4:2181,hdp5:2181,hdp6:2181</value>
</property>
</configuration>
修改hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hdp1:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hdp1:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hdp2:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hdp2:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hdp4:8485;hdp5:8485;hdp6:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/cloud/hadoop/journal</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.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</value>
</property>
<!-- 使用隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<configuration>
修改mapred-site.xml
<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 指定resourcemanager地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdp3</value>
</property>
<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration
修改slaves
hdp4
hdp5
hdp6
由于core-site.xml中指定了hadoop数据存放的本地磁盘路径是/cloud/hadoop/data,而这个/cloud/hadoop/下data文件夹是不存在需要创建;
由于hdfs-site.xml中指定了JournalNode在本地磁盘存放数据的位置是/cloud/hadoop/journal,而/cloud/hadoop/下的journal文件夹是不存在的需要创建。
此上6个配置文件都是hdp1节点上的,修改完成后将配置好的环境变量/etc/profile文件、/cloud/jdk文件夹和/cloud/hadoop文件夹复制到其他节点:
将/cloud/jdk文件夹和/cloud/hadoop文件夹复制到其他节点:
在hdp1节点上执行:scp -r /cloud/ hdp2:/
在hdp1节点上执行:scp -r /cloud/ hdp3:/
在hdp1节点上执行:scp -r /cloud/ hdp4:/
在hdp1节点上执行:scp -r /cloud/ hdp5:/
在hdp1节点上执行:scp -r /cloud/ hdp6:/
将环境变量/etc/profile文件复制到其他节点(在其他节点上要执行source /etc/profile使其修改立即生效):
scp /etc/profile hdp2:/etc/
scp /etc/profile hdp3:/etc/
scp /etc/profile hdp4:/etc/
scp /etc/profile hdp5:/etc/
scp /etc/profile hdp6:/etc/
6在hdp4节点配置zookeeper-3.4.5.tar.gz
cd /cloud/目录下
解压zookeeper-3.4.5.tar.gz:tar -zxvf zookeeper-3.4.5.tar.gz(当前目录下多了一个zookeeper-3.4.5文件夹)
重命名zookeeper-3.4.5:mv zookeeper-3.4.5 zk
cd到/cloud/zk/conf/目录下:cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
修改:dataDir=/cloud/zk/data
在最后面添加:
server.1=hdp4:2888:3888
server.2=hdp5:2888:3888
server.3=hdp6:2888:3888
在/cloud/zk/创建data文件夹,进入/cloud/zk/data下创建myid文件,内容为1
将/cloud/zk文件夹复制到hdp5和hdp6下:
在hdp4节点上执行:scp -r /cloud/zk hdp5:/cloud/
在hdp4节点上执行:scp -r /cloud/zk hdp6:/cloud/
在hdp5节点上修改/cloud/zk/data/myid为2
在hdp6节点上修改/cloud/zk/data/myid为3
7启动hdp4、hdp5和hdp6节点上的zk
分别在每个节点上执行:
cd /cloud/zk/bin目录下
启动zk:zkServer.sh start
查看状态:
zkServer.sh status(leader或follower)
jps后多出来个quorumpeerMain
8在hdp1节点上启动journalnode(会启动所有journalnode)
cd /cloud/hadoop/sbin目录下
启动journalnode:hadoop-daemons.sh start journalnode(在hdp4、hdp5和hdp6节点上运行jps命令检验,多了JournalNode进程)
9在hdp1节点上格式化HDFS
格式化HDFS:hadoop namenode -format
将格式化后生成的hadoop的数据文件都在hdp1节点上,需要将hdp1节点上的数据同步到hdp2节点上,因为hdp1节点和hdp2节点是ha,这里我直接复制:scp -r /cloud/hadoop/data hdp2:/cloud/hadoop
10在hdp1节点上格式化ZK
格式化ZK:hdfs zkfc -formatZK
11在hdp1节点上启动HDFS
cd /cloud/hadoop/sbin目录下
启动HDFS:start-dfs.sh
12在hdp3节点上启动YARN
cd /cloud/hadoop/sbin目录下
启动YARN:start-yarn.sh
验证:
验证hdp1节点上的NameNode:jps或者http://hdp1:50070
验证hdp2节点上的NameNode:jps或者http://hdp2:50070
验证hdp3节点上的YARN:jps或者http://hdp3:8088/
各个节点进程如下:
hdp1
5267 DFSZKFailoverController
4990 NameNode
5380 Jps
hdp2
4471 Jps
4388 DFSZKFailoverController
4285 NameNode
hdp3
3734 ResourceManager
3982 Jps
hdp4
4214 DataNode
2373 QuorumPeerMain
4543 Jps
4431 NodeManager
4304 JournalNode
hdp5
4050 DataNode
2458 QuorumPeerMain
4267 NodeManager
4374 Jps
4140 JournalNode
hdp6
4437 NodeManager
4220 DataNode
4310 JournalNode
4549 Jps
2705 QuorumPeerMain
完成
hadoop2.2.0的ha分布式集群搭建的更多相关文章
- HBase HA分布式集群搭建
HBase HA分布式集群搭建部署———集群架构 搭建之前建议先学习好HBase基本构架原理:https://www.cnblogs.com/lyywj170403/p/9203012.html 集群 ...
- hadoop HA分布式集群搭建
概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...
- 1、hadoop HA分布式集群搭建
概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...
- hadoop-2.6.0.tar.gz的集群搭建(3节点)(不含zookeeper集群安装)
前言 本人呕心沥血所写,经过好一段时间反复锤炼和整理修改.感谢所参考的博友们!同时,欢迎前来查阅赏脸的博友们收藏和转载,附上本人的链接http://www.cnblogs.com/zlslch/p/5 ...
- Spark-1.6.1 Hadoop-2.6.4 VMware Ubuntu 分布式集群搭建 全过程
本文从头开始零基础完全配置,适合小白. 本文在vmware中配置三台虚拟机,一台做Master,两台Worker,hadoop 和spark只需要在Master上配置,然后cp到worker上,包括配 ...
- Redis(1.11)Redis4.0.11 cluster 分布式集群搭建
概念与了解:Redis(1.7)Redis高可用架构(理论篇) [0]试验环境 结构图如下: (这里试验没有那么多机器,就用3台机器搭建试验) redis1是redis集群的一个节点A,上面运行了两个 ...
- Hadoop上路-01_Hadoop2.3.0的分布式集群搭建
一.配置虚拟机软件 下载地址:https://www.virtualbox.org/wiki/downloads 1.虚拟机软件设定 1)进入全集设定 2)常规设定 2.Linux安装配置 1)名称类 ...
- 基于HBase0.98.13搭建HBase HA分布式集群
在hadoop2.6.0分布式集群上搭建hbase ha分布式集群.搭建hadoop2.6.0分布式集群,请参考“基于hadoop2.6.0搭建5个节点的分布式集群”.下面我们开始啦 1.规划 1.主 ...
- Hadoop(HA)分布式集群部署
Hadoop(HA)分布式集群部署和单节点namenode部署其实一样,只是配置文件的不同罢了. 这篇就讲解hadoop双namenode的部署,实现高可用. 系统环境: OS: CentOS 6.8 ...
随机推荐
- MVC jsp+servlet+javabean 连接Mysql数据库測试demo
本文介绍的是怎样使用MVC架构去实现jsp+servlet+javabean连接数据库 首先我们应该了解什么是MVC: MVC包含三个部分 : ①View:由各种JSP页面组成. ②Controlle ...
- HDU -2524 矩形A + B
找规律题,这种题目比较巧妙,要仔细观察找出规律 1. 假设只有一行,一共有n列,那么由一个小矩形构成的矩形个数为n, 由两个小矩形构成的矩形个数为 n - 1个 .... 由 n 个小矩形构成的矩形个 ...
- JavaScript: 世界上最被误解的语言|Douglas Crockford
JavaScript: 世界上最被误解的语言 JavaScript: The Wrrrld's Most Misunderstood Programming Language Douglas Croc ...
- mongodb创建副本集命令
mongodb创建副本集命令 ./mongod --replSet spock --dbpath ../data --smallfiles > config ={... "_id&qu ...
- 如何修改TextField的Label和EmptyText
在需求中常常有修改form表单的标签和空文本提示,在渲染后组件有些字符固定下来 除非使用document进行原始修改,通过查询stackflow,我介绍更方便方法 模拟场景:点击ChangeLabel ...
- C程序第二章节:算法
1.主要讲了:算法,3种基本结构化的算法(顺序,选择,循环结构),N-S流程图表示算法,伪代码表示算法. 2.输入10个数,输出其中最大的一个数. #include <stdio.h>in ...
- JavaWeb 之 重复提交表单和验证码相关的问题!
下面我们首先来说一下表单的重复提交问题,我们知道在真实的网络环境中可能受网速带宽的原因会造成页面中表单在提交的过程中出现网络的延迟等问题,从而造成多次提交的问题!下面我们就具体来分析一下造成表单提交的 ...
- STL删除vector或list的方法及注意的问题
删除vector中的元素 1.删除指定的所有对象 STL中remove()只是将待删除元素之后的元素移动到vector的前端,而不是删除.若要真正移除,需要搭配使用erase().例子: vector ...
- CSS定位与浮动
定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素.另一个元素甚至浏览器窗口本身的位置.显然,这个功能非常强大,也很让人吃惊.要知道,用户代理对 CSS2 中定位 ...
- CSS中zoom:1的作用
兼容IE6.IE7.IE8浏览器,经常会遇到一些问题,可以使用zoom:1来解决,有如下作用:触发IE浏览器的haslayout解决ie下的浮动,margin重叠等一些问题.比如,本站使用DIV做一行 ...