hadoop高可用三台

基础

主机映射

vi /etc/hosts 192.168.176.46 master 192.168.176.47 slave1 192.168.176.48 slave2

主机名

vi /etc/hostname

防火墙

systemctl stop firewalld systemctl disable firewalld

密钥

ssh-keygen -t rsa ssh-copy-id root@主机名(映射里的)|id

时间同步

date --s "20200615 10:11:02"

每台机子输入

zookeeper配置

三个节点

1,master:

1,解压zookeeper压缩包,

2,进入conf,然后cp zoo_sample.cfg zoo.cfg (mkdir 无法创建目录“”:删除模板)

3,写zoo.cfg:ps

dataDir=/usr/local/src/zookeeper-3.4.5/DataZk 
server.1=master:2888:3888 
server.2=slave1:2888:3888 
server.3=slave2:2888:3888

4,创建/usr/local/src/zookeeper-3.4.5/DataZk

5,进入DataZk :

echo 1 > myid

2,复制到另外两个节点:scp -r 路径 root@namenode2:路径

3,修改myid :2 3 (对应zoo.cfg的server)

4,启动:到bin目录:./zkServer.sh start 三台

5,三台都启动后查看状态:./zkServer.sh status

hadoop配置

三个节点,

1,将hadoop压缩包解压到/usr/local/src

tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local/src

2,进入hadoop的etc/hadoop目录

cd /usr/local/src/hadoop-2.6.0/etc/hadoop/

3,修改hadoop-env.sh

export JAVA_HOME=/usr/local/src/jdk1.8.0_221 export HADOOP_HOME=/usr/local/src/hadoop-2.6.0 export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"

4,配置core-site.xml,,(集群名字,tmp,zookeeper)

<configuration>
    <!--用来指定hdfs的老大:ns (namespace)-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ns</value>
    </property>
    <!--执行zookeeper地址-->
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>master:2181,slave1:2181,slave2:2181</value>
    </property>
    <!--用来指定hadoop运行时产生文件的存放目录-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/src/hadoop-2.6.0/tmp</value>
    </property>
</configuration>

5,hdfs-site.xml(集群名字,双namenode,元数据备份,故障转移,隔离,数据保存,备份和权限)

<configuration>

<!--执行hdfs的nameservice为ns,和core-site.xml的fs.defaultFS值保持一致-->
    <property>
        <name>dfs.nameservices</name>
        <value>ns</value>
    </property>
    <!--ns下有两个namenode,分别是nn1、nn2-->
    <property>
        <name>dfs.ha.namenodes.ns</name>
        <value>nn1,nn2</value>
    </property>
    <!--nn1的RPC通信地址-->
    <property>
        <name>dfs.namenode.rpc-address.ns.nn1</name>
        <value>master:9000</value>
    </property>
    <!--nn1的http通信地址-->
    <property>
        <name>dfs.namenode.http-address.ns.nn1</name>
        <value>master:50070</value>
    </property>
    <!--nn2的RPC通信地址-->
    <property>
        <name>dfs.namenode.rpc-address.ns.nn2</name>
        <value>slave1:9000</value>
    </property>
    <!--nn2的http通信地址-->
    <property>
        <name>dfs.namenode.http-address.ns.nn2</name>
        <value>slave1:50070</value>
    </property>
    <!--指定namenode的元数据在JournalNode上的存放位置,这样,namenode2可以从jn集群里获取最新的namenode的信息,达到热备的效果-->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://master:8485;slave1:8485;slave2:8485/ns</value>
    </property>
    <!--指定JournalNode存放数据的位置-->
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/usr/local/src/hadoop-2.6.0/journal</value>
    </property>
    <!--开启namenode故障时自动切换-->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <!--配置切换的实现方式,客户端故障转移代理提供者-->
    <property>
        <name>dfs.client.failover.proxy.provider.ns</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <!--配置隔离机制:通过秘钥隔离机制-->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <!--配置隔离机制的ssh登录秘钥所在的位置-->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
    <!--配置namenode数据存放的位置,可以不配置,如果不配置,默认用的是
      core-site.xml里配置的hadoop.tmp.dir的路径-->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///usr/local/src/hadoop-2.6.0/tmp/namenode</value>
    </property>
    <!--配置datanode数据存放的位置,可以不配置,如果不配置,默认用的是
      core-site.xml里配置的hadoop.tmp.dir的路径-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///usr/local/src/hadoop-2.6.0/tmp/datanode</value>
    </property>
    <!--配置block副本数量-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件-->
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>

</configuration>

6.配置mapred-site.xml

<configuration>
    <property>
        <!--指定mapreduce运行在yarn上-->
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

7.配置yarn-site.xml(开启高可用,名字,双rm,故障转移,设置主,nm处理)

<configuration>

<!-- Site specific YARN configuration properties -->

<!--开启YARN HA -->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <!--指定两个resourcemanager的名称-->
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <!--配置rm1,rm2的主机-->
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>slave1</value>
    </property>
    <!--开启yarn恢复机制-->
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>
    <!--执行rm恢复机制实现类-->
    <property>
        <name>yarn.resourcemanager.store.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property>
    <!--配置zookeeper的地址-->
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>master:2181,slave1:2181,slave2:2181</value>
        <description>For multiple zk services, separate them with comma</description>
    </property>
    <!--指定YARN HA的名称-->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>yarn-ha</value>
    </property>
    <property>
        <!--指定yarn的老大resoucemanager的地址-->
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <!--NodeManager获取数据的方式-->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

</configuration>     

8.创建tmp和journal,在 hadoop-2.6.0目录中

mkdir  journal
mkdir tmp
cd tmp
mkdir namenode
mkdir datanode

9.修改slaves

vi slaves
master
slave1
slave2

10.环境变量

JAVA_HOME=/usr/local/src/jdk1.8.0_221
ZK_HOME=/usr/local/src/zookeeper-3.4.5
HADOOP_HOME=/usr/local/src/hadoop-2.6.0
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$ZK_HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

export PATH ZK_HOME CLASSPATH HADOOP_HOME

11, 和拷贝

scp

启动hadoop集群

先格式化zookeeper:master

[root@master]# hdfs zkfc -formatZK

1,格式化:在master节点上

hdfs zkfc -formatZK

2.启动journalNode集群,在datanode1、2、3上输入

hadoop-daemon.sh start journalnode

3,格式化namenode1节点的namenode,在namenode1上输入

hadoop namenode -format

4,启动namenode1节点的namenode(active),在namenode1上输入

hadoop-daemon.sh start namenode

5,设置namenode2为备用节点,在namenode2上输入

hdfs namenode -bootstrapStandby

6,启动namenode2的namenode(备用),在namenode2上输入

hadoop-daemon.sh start namenode

7,启动datanode,在namenode1上输入

hadoop-daemons.sh start datanode

8,在namenode1和namenode2启动zkfc,在这两个节点上输入

hadoop-daemon.sh start zkfc

9,启动yarn,在namenode1和namenode2上输入

start-yarn.sh

10,在本地电脑上做映射C:\Windows\System32\drivers\etc

192.168.176.46 master
192.168.176.47 slave1
192.168.176.48 slave2

11,下载包:

yum -y install psmisc

12,在浏览地址上输入namenode1:5007

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值