准备工作:

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请添加图片描述

请添加图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐