Hadoop HA集群,亲测可用,直接复制粘贴完事

目录

前言

一,集群环境及基础配置

1,集群环境

主机映射

时钟同步

 防火墙

3,免密登录

二,Hadoop集群HA配置

1,上传压缩包并解压

 创建目录

 上传压缩包

解压缩

 改名

 2,配置环境变量

 3,配置Hadoop HA

配置hadoop环境变量

 更改配置文件1

更改配置文件2

更改配置文件3

更改配置文件4

配置slaves

 创建目录

 4,配置zookeeper

修改配置文件

 创建目录

编写myid

 5,环境的分发

 6,修改权限

三,Hadoop集群HA启动

1,切换用户

 2,加载环境变量

3,启动zookeeper

4,启动journalnode守护进程

 5,初始化namnode

6,注册ZNode

7, 启动hadfs

8,启动yarn

9, 同步master数据

 10,启动resourcemanager和namenode

 11,启动 MapReduce

 12,查看进程

 13,页面访问


前言

亲测可用,只有Hadoop HA集群环境,直接复制粘贴即可。

一,集群环境及基础配置

1,集群环境

主机名IP地址root密码
master192.168.100.10000000

slave1

192.168.100.20000000
slave2192.168.100.30000000


2,基础配置

主机映射

汉化多执行

 vi /etc/hosts
192.168.100.10 master
192.168.100.20 slave1
192.168.100.30 slave2

:wq保存退出

时钟同步

汉化多执行

date

 防火墙

汉化多执行

systemctl stop firewalld
systemctl disable firewalld

3,免密登录

汉化多执行

先做root用户

ssh-keygen

直接一路回车就行 

ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2

有yes输yes,有password输000000

 多执行创建hadoop用户

useradd hadoop
passwd hadoop

输入两遍000000

 汉化多执行,hadoop用户免密

su hadoop
ssh-keygen
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2

和上面root一样,不再赘述。

二,Hadoop集群HA配置

1,上传压缩包并解压

master节点,root用户

su root

输入000000

 创建目录

mkdir /opt/software
mkdir -p /opt/local/src

 上传压缩包

上传hadoop,jdk,zookeeper到/opt/software下

解压缩

cd /opt/software
tar -zxf hadoop-2.7.0.tar.gz -C /opt/local/src/
tar -zxf jdk-8u141-linux-x64.tar.gz -C /opt/local/src/
tar -zxf zookeeper-3.4.9.tar.gz -C /opt/local/src/

 

 改名

cd /opt/local/src/
mv hadoop-2.7.0 hadoop
mv jdk1.8.0_141 java
mv zookeeper-3.4.9 zookeeper
ll

 2,配置环境变量

vi /etc/profile

 末尾添加如下

#hadoop enviroment
export HADOOP_HOME=/opt/local/src/hadoop  #HADOOP_HOME指向JAVA安装目录
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

#java environment
export JAVA_HOME=/opt/local/src/java    #JAVA_HOME指向JAVA安装目录
export PATH=$PATH:$JAVA_HOME/bin        #将JAVA安装目录加入PATH路径

#zookeeper environment
export ZK_HOME=/opt/local/src/zookeeper
export PATH=$PATH:$ZK_HOME/bin

:wq保存退出

 3,配置Hadoop HA

配置hadoop环境变量

cd /opt/local/src/hadoop/etc/hadoop/
vi hadoop-env.sh

末尾添加

export JAVA_HOME=/opt/local/src/java

:wq保存退出

 更改配置文件1

vi core-site.xml

在两个<configuration></configuration>中间添加如下内容

<!-- 指定hdfs的nameservice为mycluster -->
 
    <property>
 
        <name>fs.defaultFS</name>
 
        <value>hdfs://mycluster</value>
 
    </property>
 
    <property>
 
        <name>hadoop.tmp.dir</name>
 
        <value>file:/opt/local/src/hadoop/tmp</value>
 
    </property>
 
    <!-- 指定zookeeper地址 -->
 
    <property>
 
        <name>ha.zookeeper.quorum</name>
 
        <value>master:2181,slave1:2181,slave2:2181</value>
 
    </property>
 
    <!-- hadoop链接zookeeper的超时时长设置 -->
 
    <property>
 
        <name>ha.zookeeper.session-timeout.ms</name>
 
        <value>30000</value>
 
        <description>ms</description>
 
    </property>
 
    <property>
 
        <name>fs.trash.interval</name>
 
        <value>1440</value>
 
    </property>

:wq保存退出 

更改配置文件2

vi hdfs-site.xml

在两个<configuration></configuration>中间添加如下内容 

<!-- journalnode集群之间通信的超时时间 -->
 
    <property>
 
        <name>dfs.qjournal.start-segment.timeout.ms</name>
 
        <value>60000</value>
 
    </property>
 
    <!--指定hdfs的nameservice为mycluster,需要和core-site.xml中的保持一致        dfs.ha.namenodes.[nameservice id]为在nameservice中的每一个NameNode设置唯一标示符。配置一个逗号分隔的NameNode ID列表。这将是被DataNode识别为所有的NameNode。如果使用"mycluster"作为nameservice ID,并且使用"master"和"slave1"作为NameNodes标示符 -->
 
    <property>
 
        <name>dfs.nameservices</name>
 
        <value>mycluster</value>
 
    </property>
 
        <!-- mycluster下面有两个NameNode,分别是master,slave1 -->
 
    <property>
 
        <name>dfs.ha.namenodes.mycluster</name>
 
        <value>master,slave1</value>
 
    </property>
 
    <!-- master的RPC通信地址 -->
 
    <property>
 
        <name>dfs.namenode.rpc-address.mycluster.master</name>
 
        <value>master:8020</value>
 
    </property>
 
    <!-- slave1的RPC通信地址 -->
 
    <property>
 
        <name>dfs.namenode.rpc-address.mycluster.slave1</name>
 
        <value>slave1:8020</value>
 
    </property>
 
     <!-- master的http通信地址 -->
 
    <property>
 
        <name>dfs.namenode.http-address.mycluster.master</name>
 
        <value>master:50070</value>
 
    </property>
 
    <!-- slave1的http通信地址 -->
 
    <property>
 
        <name>dfs.namenode.http-address.mycluster.slave1</name>
 
        <value>slave1:50070</value>
 
    </property>
 
    <!-- 指定NameNode的edits元数据的共享存储位置。也就是JournalNode列表
         该url的配置格式:qjournal://host1:port1;host2:port2;host3:port3/journalId
        journalId推荐使用nameservice,默认端口号是:8485 -->
 
    <property>
 
        <name>dfs.namenode.shared.edits.dir</name>
 
        <value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
 
    </property>
 
    <!-- 配置失败自动切换实现方式 -->
 
    <property>
 
        <name>dfs.client.failover.proxy.provider.mycluster</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>
 
    <property>
 
       <name>dfs.permissions.enabled</name>
 
       <value>false</value>
 
    </property>
 
    <property>
 
        <name>dfs.support.append</name>
 
        <value>true</value>
 
    </property>
 
    <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
 
    <property>
 
        <name>dfs.ha.fencing.ssh.private-key-files</name>
 
        <value>/root/.ssh/id_rsa</value>
 
    </property>
 
    <!-- 指定副本数 -->
 
    <property>
 
        <name>dfs.replication</name>
 
        <value>2</value>
 
    </property>
 
    <property>
 
        <name>dfs.namenode.name.dir</name>
 
        <value>/opt/local/src/hadoop/tmp/hdfs/nn</value>
 
    </property>
 
    <property>
 
        <name>dfs.datanode.data.dir</name>
 
        <value>/opt/local/src/hadoop/tmp/hdfs/dn</value>
 
    </property>
 
    <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
 
    <property>
 
        <name>dfs.journalnode.edits.dir</name>
 
        <value>/opt/local/src/hadoop/tmp/hdfs/jn</value>
 
    </property>
 
    <!-- 开启NameNode失败自动切换 -->
 
    <property>
 
        <name>dfs.ha.automatic-failover.enabled</name>
 
        <value>true</value>
 
    </property>
 
    <!-- 启用webhdfs -->
 
    <property>
 
        <name>dfs.webhdfs.enabled</name>
 
        <value>true</value>
 
    </property>
 
    <!-- 配置sshfence隔离机制超时时间 -->
 
    <property>
 
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
 
        <value>30000</value>
 
    </property>
 
    <property>
 
        <name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
 
        <value>60000</value>
 
    </property>

:wq保存退出 

更改配置文件3

cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

在两个<configuration></configuration>中间添加如下内容

<!-- 指定mr框架为yarn方式 -->
 
    <property>
 
        <name>mapreduce.framework.name</name>
 
        <value>yarn</value>
 
</property>
 
    <!-- 指定mapreduce jobhistory地址 -->
 
    <property>
 
        <name>mapreduce.jobhistory.address</name>
 
        <value>master:10020</value>
 
    </property>
 
    <!-- 任务历史服务器的web地址 -->
 
    <property>
 
        <name>mapreduce.jobhistory.webapp.address</name>
 
        <value>master:19888</value>
 
  </property>

:wq保存退出

更改配置文件4

vi yarn-site.xml

在两个<configuration></configuration>中间添加如下内容

<!-- Site specific YARN configuration properties -->
 
    <!-- 开启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>master</value>
 
    </property>
 
    <property>
 
        <name>yarn.resourcemanager.hostname.rm2</name>
 
        <value>slave1</value>
 
    </property>
 
    <!-- 指定zk集群地址 -->
 
    <property>
 
        <name>yarn.resourcemanager.zk-address</name>
 
        <value>master:2181,slave1:2181,slave2:2181</value>
 
    </property>
 
    <property>
 
        <name>yarn.nodemanager.aux-services</name>
 
        <value>mapreduce_shuffle</value>
 
    </property>
 
    <property>
 
        <name>yarn.log-aggregation-enable</name>
 
        <value>true</value>
 
    </property>
 
    <property>
 
        <name>yarn.log-aggregation.retain-seconds</name>
 
        <value>86400</value>
 
    </property>
 
    <!-- 启用自动恢复 -->
 
    <property>
 
        <name>yarn.resourcemanager.recovery.enabled</name>
 
        <value>true</value>
 
    </property>
 
    <!-- 制定resourcemanager的状态信息存储在zookeeper集群上 -->
 
    <property>
 
        <name>yarn.resourcemanager.store.class</name>
 
   <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
 
    </property>

:wq保存退出

配置slaves

vi slaves

删除原有内容 ,添加如下

master
slave1
slave2

 创建目录

mkdir -p /opt/local/src/hadoop/tmp/hdfs/nn
mkdir -p /opt/local/src/hadoop/tmp/hdfs/dn
mkdir -p /opt/local/src/hadoop/tmp/hdfs/jn
mkdir -p /opt/local/src/hadoop/tmp/logs
mkdir -p /opt/local/src/hadoop/dfs/name
mkdir -p /opt/local/src/hadoop/dfs/data
mkdir -p /opt/local/src/hadoop/tmp

 4,配置zookeeper

修改配置文件

cd /opt/local/src/zookeeper/conf/
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

全部删除,添加如下

tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
dataDir=/opt/local/src/zookeeper/data
dataLogDir=/opt/local/src/zookeeper/logs
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

:wq保存退出

 创建目录

mkdir -p /opt/local/src/zookeeper/data
mkdir -p /opt/local/src/zookeeper/logs

编写myid

vi /opt/local/src/zookeeper/data/myid

内容为1

1

:wq保存退出 

 5,环境的分发

master节点

scp -r /opt/local/ root@slave1:/opt
scp -r /opt/local/ root@slave2:/opt
scp /etc/profile root@slave1:/etc/profile
scp /etc/profile root@slave2:/etc/profile

slave1节点

vi /opt/local/src/zookeeper/data/myid

修改为2

 slave2节点

vi /opt/local/src/zookeeper/data/myid

修改为3

 

 6,修改权限

汉化多执行

chmod 777 -R /opt
chown -R hadoop:hadoop /opt

三,Hadoop集群HA启动

1,切换用户

汉化多执行

su hadoop
cd /opt/local/src/

 2,加载环境变量

source /etc/profile

3,启动zookeeper

汉化多执行

zkServer.sh start
zkServer.sh status

 如果hadoop下查看服务状态失败,那就用root用户试试

4,启动journalnode守护进程

master节点

hadoop-daemons.sh start journalnode

 5,初始化namnode

hdfs namenode -format

 显示status 0正确

6,注册ZNode

hdfs zkfc -formatZK

7, 启动hadfs

 start-dfs.sh

 hadoop启不来就用root启

8,启动yarn

start-yarn.sh

9, 同步master数据

scp -r /opt/local/src/hadoop/tmp/hdfs/nn/* slave1:/opt/local/src/hadoop/tmp/hdfs/nn/
scp -r /opt/local/src/hadoop/tmp/hdfs/nn/* slave2:/opt/local/src/hadoop/tmp/hdfs/nn/

 10,启动resourcemanager和namenode

slave1节点

yarn-daemon.sh start resourcemanager
hadoop-daemon.sh start namenode

 11,启动 MapReduce

master节点

yarn-daemon.sh start proxyserver
mr-jobhistory-daemon.sh start historyserver

 12,查看进程

汉化多执行

jps

 13,页面访问

打开浏览器

192.168.100.10:50070
192.168.100.20:50070

master: 

 slave1:

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

崽崽很聪明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值