Hadoop搭建高可用集群(保姆级教程)
准备工作:1、搭建完成zookeeper,如果没有搭建,请跳转到zookeeper集群搭建保姆级教程2、集群的jdk都安装完成,如果没有,请跳转到linux编写个脚本快速搭建jdk保姆级教程3、在/opt/install 下有Hadoop2.6.0的包4、高可用集群搭建结构表操作步骤:1、首先对Hadoop包进行解压缩[root@nnode2 install]# tar -zxf hadoop-2
准备工作:
1、搭建完成zookeeper,如果没有搭建,请跳转到zookeeper集群搭建保姆级教程
2、集群的jdk都安装完成,如果没有,请跳转到linux编写个脚本快速搭建jdk保姆级教程
3、在/opt/install
下有Hadoop2.6.0的包
4、高可用集群搭建结构表
操作步骤:
1、首先对Hadoop包进行解压缩
[root@nnode2 install]# tar -zxf hadoop-2.6.0-cdh5.14.2.tar.gz -C /opt/soft/
为了后期使用Hadoop文件夹方便,我们将它更改个名字。mv hadoop-2.6.0-cdh5.14.2/ hadoop260
进入到etc/hadoop/
目录下修改文件。vim hadoop-env.sh
vim yarn-env.sh
vim mapred-env.sh
修改完jdk后,接下来是重头戏。
vim core-site.xml
<configuration>
<!--指定hdfs的nameservice 为 mycluster -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<!--指定Hadoop工作目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/soft/hadoop260/hadooptmp</value>
</property>
<!--指定zookeeper集群访问地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>nnode2:2181,nnode3:2181,nnode4:2181</value>
</property>
<!-- 配置为了解决以后其他组件连接HDFS集群 -->
<property>
<name>hadoop.proxyuser.bigdata.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.bigdata.groups</name>
<value>*</value>
</property>
</configuration>
vim hdfs-site.xml
<configuration>
<!-- 指定副本数 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定HDFS的nameservice为mycluster,需要跟core-site.xml中保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<!-- 设置mycluster集群有两个namenode,分别为nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<!-- 配置nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>nnode2:9000</value>
</property>
<!-- 配置nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>nnode2:50070</value>
</property>
<!-- 配置nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>nnode3:9000</value>
</property>
<!-- 配置nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>nnode3:50070</value>
</property>
<!-- 指定JournalNode 在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/soft/hadoop260/journaldata</value>
</property>
<!-- 指定NameNode的edits元数据在journalNode上的服务器 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://nnode2:8485;nnode3:8485;nnode4:8485/mycluster</value>
</property>
<!-- 开启NameNode自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置nameNode失败自动切换的实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProvider</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>/root/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<!-- 指定mapreduce运算时资源调度为 yarn 模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置mapreduce历史服务器地址 端口号 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>nnode5:10020</value>
</property>
<!-- 配置mapreduce历史服务器WEB访问地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>nnode5:19888</value>
</property>
</configuration>
vim yarn-site.xml
<configuration>
<!-- 开启高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定ResourceManager的标识:yrc -->
<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>
<!-- 指定rm1服务器 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>nnode2</value>
</property>
<!-- 指定rm2服务器 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>nnode3</value>
</property>
<!-- 指定rm 被管理的zk地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>nnode2:2181,nnode3:2181,nnode4:2181</value>
</property>
<!-- 运行mapreduce任务需要使用的服务 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 开启yarn集群的日志聚合功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志保存时间 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<!-- 启动rm自动恢复功能 -->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!-- 制定rm 状态信息存储在zookeeper集群上 -->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
</configuration>
vim slaves
在slaves文件中,添加集群的各节点名称。
使用脚本将hadoop260
文件夹分发到其他机器上。(rsync)
2、启动zookeeper集群(脚本启动)zkop start
zkop status
查看状态信息
3、启动journalnodehadoop-daemon.sh start journalnode
ssh nnode3 "source /etc/profile; hadoop-daemon.sh start journalnode"
ssh nnode4 "source /etc/profile; hadoop-daemon.sh start journalnode"
4、Hadoop格式化hadoop namenode -format
将nnode2格式化后的hadooptmp文件同步到nnode3
[root@nnode2 hadoop260]# scp -r hadooptmp/ root@nnode3:/opt/soft/hadoop260/
5、初始化zookeeper
hdfs zkfc -formatZK
6、启动hdfs
start-dfs.sh
7、启动yarn
start-yarn.sh
最后使用脚本去查看进程信息
配置完成~~记得去浏览器查看两台namenode
更多推荐
所有评论(0)