Hadoop2.6.2完全分布式集群HA模式安装配置详解
2016-04-13 16:15
971 查看
一、机器配置清单(8节点)
hadoop100节点:NameNode、DFSZKFailoverController(ZKFC)
hadoop101
节点:NameNode、DFSZKFailoverController(ZKFC)
hadoop102:
节点:ResourceManager
hadoop103:
节点:ResourceManager
hadoop104:
节点:DataNode、NodeManager、JournalNode、QuorumPeerMain、ZooKeeper
hadoop105:
节点:DataNode、NodeManager、JournalNode、QuorumPeerMain、ZooKeeper
hadoop106:
节点:DataNode、NodeManager、JournalNode、QuorumPeerMain、ZooKeeper
hadoop107:
节点:DataNode、NodeManager
二、解压安装配置相关软件
JAVA_HOME=/usr/java/jdk1.7.0_71(配置环境变量略过,请自行搜索)
HADOOP_HOME=/hadoop/hadoop-2.6.2
三、修改hosts配置文件
vim /etc/hosts #添加相应是机器ip和主机名 10.x.xx.80 hadoop100 10.x.xx.81 hadoop101 10.x.xx.82 hadoop102 10.x.xx.83 hadoop103 10.x.xx.84 hadoop104 10.x.xx.85 hadoop105 10.x.xx.86 hadoop106 10.x.xx.87 hadoop107 #关闭防火墙 service iptables stop #新建用户hadoop密码hadoop useradd hadoop passwd hadoop
四、在hadoop104、hadoop105、hadoop106安装Zookeeper
安装目录:/hadoop/zookeeper-3.4.6/
修改配置:
cd /hadoop/zookeeper-3.4.6/conf/ cp zoo_sample.cfg zoo.cfg vim zoo.cfg #----- 修改以下内容 dataDir=/hadoop/zookeeper-3.4.6/tmp 在最后添加: server.1=hadoop104:2888:3888 server.2=hadoop105:2888:3888 server.3=hadoop106:2888:3888 保存退出 #----- #然后创建一个tmp文件夹 mkdir /hadoop/zookeeper-3.4.6/tmp #再创建一个空文件 touch /hadoop/zookeeper-3.4.6/tmp/myid #最后向该文件写入ID,填入myid文件里 hadoop104机器: echo 1 > /hadoop/zookeeper-3.4.6/tmp/myid hadoop105机器: echo 2 > /hadoop/zookeeper-3.4.6/tmp/myid hadoop106机器: echo 3 > /hadoop/zookeeper-3.4.6/tmp/myid
五、配置Hadoop(cd /hadoop/hadoop-2.6.2/etc/hadoop/)
1.vim hadoop-env.sh
JAVA_HOME=/usr/java/jdk1.7.0_71
2.vim core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://cluster1</value> </property> 【这里的值指的是默认的HDFS路径。当有多个HDFS集群同时工作时,集群名称在这里指定!该值来自于hdfs-site.xml中的配置】 <property> <name>hadoop.tmp.dir</name> <value>/hadoop/hadoop-2.6.2/tmp</value> </property> 【这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。】 <property> <name>ha.zookeeper.quorum</name> <value>hadoop104:2181,hadoop105:2181,hadoop106:2181</value> </property> 【这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点】 </configuration>
3.vim hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> 【指定DataNode存储block的副本数量。默认值是3个,我们现在有4个DataNode,该值不大于4即可。】 <property> <name>dfs.nameservices</name> <value>cluster1</value> </property> 【使用federation时,HDFS集群别名。名字可以随便起,多个集群时相互不重复即可】 <property> <name>dfs.ha.namenodes.cluster1</name> <value>hadoop100,hadoop101</value> </property> 【指定该集群的namenode的机器】 <property> <name>dfs.namenode.rpc-address.cluster1.hadoop100</name> <value>hadoop100:9000</value> </property> 【指定hadoop100的RPC地址】 <property> <name>dfs.namenode.http-address.cluster1.hadoop100</name> <value>hadoop100:50070</value> </property> 【指定hadoop100的http地址】 <property> <name>dfs.namenode.rpc-address.cluster1.hadoop101</name> <value>hadoop101:9000</value> </property> 【指定hadoop101的RPC地址】 <property> <name>dfs.namenode.http-address.cluster1.hadoop101</name> <value>hadoop101:50070</value> </property> 【指定hadoop101的http地址】 <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://hadoop104:8485;hadoop105:8485;hadoop106:8485/cluster1 </value> </property> 【指定该集群的两个NameNode共享edits文件目录时,使用的JournalNode集群信息】 <property> <name>dfs.ha.automatic-failover.enabled.cluster1</name> <value>true</value> </property> 【指定该集群是否启动自动故障恢复,即当NameNode出故障时,是否自动切换到另一台NameNode】 <property> <name>dfs.client.failover.proxy.provider.cluster1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider </value> </property> 【指定该集群出故障时,哪个实现类负责执行故障切换】 <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> 【一旦需要NameNode切换,使用ssh方式进行操作】 <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/hadoop/.ssh/id_rsa</value> </property> 【如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置】 <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> 【connect-timeout连接超时】 </configuration>
4.vim mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> 【指定运行mapreduce的环境是yarn,与hadoop1截然不同的地方】 </configuration>
5.vim yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> 【启动HA高可用性】 <property> <name>yarn.resourcemanager.cluster-id</name> <value>yrc</value> </property> 【指定resourcemanager的名字】 <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> 【使用了2个resourcemanager,分别指定Resourcemanager的地址】 <property> <name>yarn.resourcemanager.hostname.rm1</name> <value> hadoop102</value> </property> 【自定ResourceManager1的地址】 <property> <name>yarn.resourcemanager.hostname.rm2</name> <value> hadoop103</value> </property> 【自定ResourceManager2的地址】 <property> <name>yarn.resourcemanager.zk-address</name> <value>hadoop104:2181,hadoop105:2181,hadoop106:2181</value> </property> 【制定Zookeeper机器】 <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> 【默认】 </configuration>
6.vim slave (hadoop100、hadoop101、hadoop102、hadoop103机器填写)
hadoop104 hadoop105 hadoop106 hadoop107
六、启动过程
1.启动zookeeper集群(在主机名hadoop104、hadoop105、hadoop106上启动)./zkServer.sh start #查看状态:一个leader,两个follower ./zkServer.sh status
2.启动journalnode(分别在在主机名(ip)04、主机名(ip)05、主机名(ip)06上执行)
sbin/hadoop-daemon.sh start journalnode #验证 jps #显示JouralNode + QuorumpeerMain
3.格式化namenode(hadoop100)
hdfs namenode -format
4.格式化ZKFC(在hadoop100上执行)
hdfs zkfc -formatZK
5.NameNode从hadoop100同步到hadoop101
1.在hadoop101执行 hdfs namenode bootstrapstandby #验证 tmp下生成dfs 2.如果1失败(在hadoop100执行) ssh-keygen -f "~/.ssh/known_hosts" -R hadoop101 #验证 tmp下生成dfs
6.启动NameNode和DataNode
start-dfs.sh #验证 jps
7.启动yarn(在hadoop102执行)
start-yarn.sh #验证: jps #显示ResourceManager + NodeManager
8.启动ZookeeperFailoverController(hadoop100和101执行)
hadoop-daemon.sh start zkfc #验证 jps #显示DFSZKFailoverController
七、完工~
打开浏览器查看hadoop100(namenode显示active)查看hadoop101(namenode显示standby)
查看各个datanode节点
工作正常,上传个文件试试吧~
相关文章推荐
- linux小技巧(2)
- 【OpenGL】Shader实例分析(六)- 卡牌特效
- 【OpenGL】Shader实例分析(五)- 边缘检测
- 【OpenGL】Shader实例分析(四)- 照片闪光,圆角和遮罩
- linux 小技巧
- 【OpenGL】Shader实例分析(三)- 等待标识
- VS2010调用Opencv2.4.10中dll问题的解决
- 【OpenGL】Shader实例分析(二)- Heart
- linux 同步IO: sync、fsync与fdatasync
- 【OpenGL】Shader实例分析(一)-Wave
- centos+nginx安装配置及常见错误处理
- Ubuntu 安装openssl环境
- Linux下Shell编程实现基于Hadoop的ETL(分析篇)
- Centos7安装完毕后重启提示Initial setup of CentOS Linux 7 (core)的解决方法
- nginx配置指定路径去掉php后缀配置
- CentOS 7 搭建 Docker 环境
- MVC4 下DropDownList使用方法
- CentOS7 网卡名称重命名为eth*
- shell变成之条件判断和流程控制
- Linux下Shell编程实现基于Hadoop的ETL(Sqoop封装篇)