搭建hadoop的高可用性(HA)集群
来源:互联网 发布:淘宝网玩具小马会走 编辑:程序博客网 时间:2024/05/18 02:17
本文为传智播客八天——第五天学习笔记
因为电脑配置问题,只能同时运行三台虚拟机。三台是hadoop高可用性集群的最小数目。不能再少了。
前期准备:
1、修改linux主机名和IP
2、修改主机名和IP的映射关系
3、关闭防火墙
4、ssh免登录
5、安装JDK,配置环境变量
集群规划:
主机名 IP 安装的软件 运行的进程
hadoop-master 172.16.123.1 JDK、hadoop、zookeeper namenode、DFSZKFailoverController(zkfc)、QuorumPeerMain、JournalNode、DataNode
hadoop-slave1 172.16.123.128 JDK、hadoop、zookeeper namenode、DFSZKFailoverController(zkfc)、QuorumPeerMain、JournalNode、DataNode、ResourceManager
hadoop-slave2 172.16.123.128 JDK、hadoop、zookeeper QuorumPeerMain、JournalNode、DataNode、ResourceManager
1、安装hadoop集群(在hadoop-master上配置)
2.1修改hadoop-env.sh
export JAVA_HOME=/home/kun/soft/jdk1.8.0_60
2.2、修改core-site.xml
</pre><pre>
<configuration> <!--指定hdfs的nameservice为ns1--> <property> <name>fs.default.name</name> <value>hdfs://ns1/</value> </property><pre name="code" class="html"><!--指定hadoop的临时目录--> <property> <name>hadoop.tmp.dir</name> <value>/home/kun/soft/hadoop-2.7.1/tmp</value> </property><!--指定zookeeper的地址--> <property> <name>ha.zookeeper.quorum</name> <value>hadoop-master:2181,hadoop-slave1:2181,hadoop-slave2:2181</value> </property></configuration>
2.3、修改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>hadoop-master:9000</value> </property><!-- nn1的http通信地址 --> <property> <name>dfs.namenode.http-address.ns1.nn1</name> <value>hadoop-master:50070</value> </property><!-- nn2的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.ns1.nn2</name> <value>hadoop-slave1:9000</value> </property><!-- nn2的http通信地址 --> <property> <name>dfs.namenode.http-address.ns1.nn2</name> <value>hadoop-slave1:50070</value> </property><!-- 指定NameNode的元数据在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop-master:8485;hadoop-slave1:8485;hadoop-slave2:8485/ns1</value> </property><!-- 指定JournalNode在本地磁盘存放数据的位置 --> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/kun/soft/hadoop-2.7.1/journaldata</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 shell(/bin/true) </value> </property><!-- 使用sshfence隔离机制时需要ssh免登陆 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/kun/.ssh/id_rsa</value> </property><!-- 配置sshfence隔离机制超时时间 --> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property></configuration>
2.4、将mapred-site.xml.template修改mapred-site.xml
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
<configuration><!-- 开启RM高可用 --> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property><!-- 指定RM的cluster id --> <property> <name>yarn.resourcemanager.cluster-id</name> <value>yrc</value> </property><!-- 指定RM的名字 --> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property><!-- 分别指定RM的地址 --> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>hadoop-slave1</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>hadoop-slave2</value> </property><!-- 指定zk集群地址 --> <property> <name>yarn.resourcemanager.zk-address</name> <value>hadoop-master:2181,hadoop-slave1:2181,hadoop-slave2:2181</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property></configuration>
2.6、修改slaves
hadoop-masterhadoop-slave1hadoop-slave2
3、将hadoop-2.7.1拷贝到hadoop-slave1和hadoop-slave2上面
拷贝之前可以讲share中的doc文档删除,提高拷贝速度
4、配置zookeeper
见这里http://blog.csdn.net/beidiqiuren/article/details/51234325
5、启动zookeeper集群(在hadoop-master、hadoop-slave1、hadoop-slave2中都要启动)
nanda@hadoop-master:~/soft/zookeeper-3.4.5/bin$ ./zkServer.sh start三台虚拟机都启动以后,查看状态,如果一个leader,两个follower则为正常的
nanda@hadoop-master:~/soft/zookeeper-3.4.5/bin$ ./zkServer.sh status
nanda@hadoop-master:~/soft/hadoop-2.7.1/sbin$ ./hadoop-daemon.sh start journalnode此时查看jps有三个进程
6725 Jps6460 QuorumPeerMain6671 JournalNode
7、格式化HDFS
在hadoop-master上执行命令(也可以在hadoop-slave1上执行)
hdfs namenode -format格式化后会根据core-site.xml中的hadoop.tmp.dir配置生成文件,这里配置的是home/kun/soft/hadoop-2.7.1/tmp 。为了保持两台namenode的fsimage初始值完全一致,所以需要将/home/kun/soft/hadoop-2.7.1/tmp文件拷贝到hadoop-slave1的相应的文件夹下(因为namenode只需要在hadoop-master和hadoop-slave1上启动,所以不需要拷贝到hadoop-slave2上)
也可以在hadoop-slave1上执行
hdfs namenode -bootstrapStandby会自动拷贝hadoop-master上的namenode文件
总算成功了,这一步耽搁了三天。不知道怎么错的,总是格式化失败。最后只好把虚拟机删了,重新配置环境。
8、格式化ZKFC(ZKFC做两个namenode的失败切换管理)
在hadoop-master上执行
hdfs zkfc -formatZKzkfc会在zookeeper上写一些东西,可以在zookeeper下的bin目录中查看
./zkCli.sh
ls /如果有hadoop-ha则证明格式化成功了,此时hadoop-ha内应该是没有数据的。
9、启动HDFS
在hadoop-master上执行
start-dfs.sh如果出现The authenticity of host 'hadoop-master (172.16.123.1)' can't be established.请查看此http://blog.csdn.net/kimsoft/article/details/5865418
此时hadoop-master上的进程有Jps、JournalNode、 DataNode、 NameNode、QuorumPeerMain、DFSZKFailoverController
hadoop-slave1上的进程有Jps、JournalNode、 DataNode、 NameNode、QuorumPeerMain、DFSZKFailoverController
hadoop-slave2上的进程有JournalNode、QuorumPeerMain、 Jps、DataNode
10、启动yarn
在hadoop-slave1和hadoop-slave2上启动,namenode和resourcemanager都需要占用大量的资源,条件允许的情况下把它们在不同的机器上启动
start-yarn.sh此时hadoop-slave1和hadoop-slave2上都多处了resourcemanager进程
此时,HA下的hadoop就搭建完成了。可以通过浏览器来访问
hadoop-master:50070
hadoop-slave1:8088
在eclipse测试一下文件的上传
import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;public class HdfsUtilHA {public static void main(String[] args) throws Exception {Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://ns1/"),conf); //FileSystem.get(URI,conf,"身份");fs.copyFromLocalFile(new Path("/home/kun/exam/a"), new Path("hdfs://ns1/"));}}成功
- 搭建hadoop的高可用性(HA)集群
- 高可用性hadoop集群的搭建
- 高可用性hadoop集群的搭建
- Hadoop高可用集群搭建(HA)
- Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)
- 搭建高可用的hadoop分布式集群HA
- hadoop HA集群的搭建
- Hadoop HA高可用集群搭建(2.7.2)
- Hadoop HA高可用集群搭建(2.7.2)
- Hadoop HA高可用集群搭建(2.7.2)
- HADOOP集群搭建实战(HA高可靠性模式)
- Hadoop HA高可用集群环境搭建(CenOS7)
- hadoop HA 高可用集群部署搭建
- Hadoop HA高可用集群搭建
- Hadoop HA 高可用集群搭建
- Hadoop集群HA高可用搭建
- Hadoop HA高可用集群搭建总结
- 搭建 hadoop ha 高可用集群
- Android 高仿微信6.0主界面 带你玩转切换图标变色
- Struts2框架学习(一)
- 【bzoj2666】【cqoi2012】【组装】【贪心】
- c++实验4 项目一 1000以内所有偶数之和
- LeetCode 38. Count and Say
- 搭建hadoop的高可用性(HA)集群
- Android日期时间选择对话框
- Struts2框架学习(二) Action
- openstack中的消息总线
- 寻找一个单向链表的中项,如果存在两个则返回前一个,给出算法描述
- input type="radio" 的用法
- js 设置header,实现跨域访问
- 第8周项目1 数组做数据成员 工资类(2)
- JAVA NIO